iubenda Cookie Solution for GDPR - Version beta

Version Description

Download this release

Release Info

Developer iubenda
Plugin Icon 128x128 iubenda Cookie Solution for GDPR
Version beta
Comparing to
See all releases

Code changes from version 2.5.0 to beta

Files changed (118) hide show
  1. assets/css/admin.css +67 -0
  2. assets/css/style.css +2438 -0
  3. assets/fonts/HKGrotesk-Bold.eot +0 -0
  4. assets/fonts/HKGrotesk-Bold.woff +0 -0
  5. assets/fonts/HKGrotesk-Bold.woff2 +0 -0
  6. assets/fonts/HKGrotesk-Regular.eot +0 -0
  7. assets/fonts/HKGrotesk-Regular.woff +0 -0
  8. assets/fonts/HKGrotesk-Regular.woff2 +0 -0
  9. assets/images/banner_failure.svg +1 -0
  10. assets/images/banner_success.svg +1 -0
  11. assets/images/checkboxes/button_style_dark.svg +1 -0
  12. assets/images/checkboxes/button_style_light.svg +1 -0
  13. assets/images/checkboxes/cons_icon.svg +1 -0
  14. assets/images/checkboxes/cs_icon.svg +1 -0
  15. assets/images/checkboxes/eu_only_icon.svg +1 -0
  16. assets/images/checkboxes/pp_icon.svg +1 -0
  17. assets/images/checkboxes/tc_icon.svg +1 -0
  18. assets/images/checkboxes/worldwide.svg +1 -0
  19. assets/images/iubenda_logo.svg +1 -0
  20. assets/images/list_radar_cons.svg +1 -0
  21. assets/images/list_radar_cs.svg +1 -0
  22. assets/images/list_radar_pp.svg +1 -0
  23. assets/images/list_radar_tc.svg +1 -0
  24. assets/images/modals/modal_almost_there.svg +1 -0
  25. assets/images/modals/modal_no_website_found.svg +1 -0
  26. assets/images/modals/modal_pp_created.svg +1 -0
  27. assets/images/modals/modal_sync.svg +1 -0
  28. assets/images/pc_screen_icon.svg +1 -0
  29. assets/images/question_mark.svg +1 -0
  30. assets/images/question_mark_light.svg +1 -0
  31. assets/images/service_cards/cons_icon.svg +1 -0
  32. assets/images/service_cards/cs_icon.svg +1 -0
  33. assets/images/service_cards/pp_icon.svg +1 -0
  34. assets/images/service_cards/tc_icon.svg +1 -0
  35. assets/images/warning-icon.svg +1 -0
  36. assets/images/welcome_screen_bg.svg +1 -0
  37. assets/images/white_checkmark.svg +1 -0
  38. assets/images/white_x.svg +1 -0
  39. assets/js/admin.js +732 -0
  40. {js → assets/js}/frontend.js +1 -1
  41. assets/js/legal_block.js +62 -0
  42. assets/js/matomo.js +14 -0
  43. assets/js/tabs.js +25 -0
  44. css/admin.css +0 -164
  45. includes/CookieSolutionGenerator.php +143 -0
  46. includes/LanguageHelper.php +60 -0
  47. includes/PrivacyPolicyGenerator.php +36 -0
  48. includes/ProductHelper.php +239 -0
  49. includes/QuickGeneratorService.php +638 -0
  50. includes/RadarService.php +176 -0
  51. includes/ServiceRating.php +133 -0
  52. includes/amp.php +13 -2
  53. includes/block/IubendaLegalBlock.php +405 -0
  54. includes/forms-list-table.php +95 -26
  55. includes/forms.php +62 -43
  56. includes/settings.php +1303 -1649
  57. includes/widget/IubendaLegalWidget.php +239 -0
  58. iubenda-cookie-class/README.md +11 -1
  59. iubenda-cookie-class/iubenda.class.page.php +4 -4
  60. iubenda-cookie-class/iubenda.class.php +12 -13
  61. iubenda-cookie-class/listeners/GoogleTagManagerListener.php +1 -1
  62. iubenda-cookie-class/simple_html_dom.php +11 -11
  63. iubenda-cookie-class/test.php +0 -116
  64. iubenda_cookie_solution.php +521 -59
  65. js/admin.js +0 -282
  66. languages/iubenda-cookie-law-solution-it_IT.mo +0 -0
  67. languages/iubenda-cookie-law-solution-it_IT.po +0 -863
  68. languages/iubenda-cookie-law-solution.pot +0 -647
  69. languages/iubenda-de_DE.mo +0 -0
  70. languages/iubenda-de_DE.po +1218 -0
  71. languages/iubenda-es_ES.mo +0 -0
  72. languages/iubenda-es_ES.po +1211 -0
  73. languages/iubenda-fr_FR.mo +0 -0
  74. languages/iubenda-fr_FR.po +1226 -0
  75. languages/iubenda-it_IT.mo +0 -0
  76. languages/iubenda-it_IT.po +1205 -0
  77. languages/iubenda-nl_NL.mo +0 -0
  78. languages/iubenda-nl_NL.po +1224 -0
  79. languages/iubenda-pt_BR.mo +0 -0
  80. languages/iubenda-pt_BR.po +1201 -0
  81. languages/iubenda.pot +970 -0
  82. readme.txt +330 -118
  83. views/cons-configuration.php +68 -0
  84. views/cons-single-form.php +285 -0
  85. views/cs-configuration.php +23 -0
  86. views/frontpage.php +42 -0
  87. views/integrate-setup.php +158 -0
  88. views/partials/alert.php +16 -0
  89. views/partials/auto_detect_forms.php +33 -0
  90. views/partials/bannerPosition.php +52 -0
  91. views/partials/bannerStyle.php +19 -0
  92. views/partials/breadcrumb.php +21 -0
  93. views/partials/buttonPosition.php +85 -0
  94. views/partials/buttonStyle.php +23 -0
  95. views/partials/csGeneralSettings.php +262 -0
  96. views/partials/csManualConfiguration.php +17 -0
  97. views/partials/csPluginSettings.php +135 -0
  98. views/partials/csSimplifiedConfiguration.php +97 -0
  99. views/partials/footer.php +8 -0
  100. views/partials/frontpage_main_box.php +42 -0
  101. views/partials/header.php +14 -0
  102. views/partials/header_scanned.php +5 -0
  103. views/partials/integrateFooter.php +5 -0
  104. views/partials/languagesTabs.php +29 -0
  105. views/partials/modals/modal_almost_there.php +81 -0
  106. views/partials/modals/modal_no_website_found.php +14 -0
  107. views/partials/modals/modal_ops_embed_invalid.php +13 -0
  108. views/partials/modals/modal_pp_created.php +11 -0
  109. views/partials/modals/modal_rating.php +29 -0
  110. views/partials/modals/modal_select_language.php +91 -0
  111. views/partials/modals/modal_sync.php +9 -0
  112. views/partials/product-card.php +52 -0
  113. views/partials/siteInfo.php +32 -0
  114. views/partials/welcomeScreenHeader.php +4 -0
  115. views/plugin-settings.php +51 -0
  116. views/pp-configuration.php +41 -0
  117. views/products-page.php +34 -0
  118. views/tc-configuration.php +162 -0
assets/css/admin.css ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .iubenda-notice {
2
+ border-left-color: #1CC691;
3
+ padding-left: 0;
4
+ display: flex;
5
+ justify-content: flex-start;
6
+ align-items: center;
7
+ }
8
+ .iubenda-notice::before {
9
+ display: inline-block;
10
+ content: '';
11
+ height: 49px;
12
+ width: 22px;
13
+ margin: 1em 2em;
14
+ background-size: contain;
15
+ background-position: center center;
16
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMjFweCIgaGVpZ2h0PSI0OTBweCIgdmlld0JveD0iMCAwIDIyMSA0OTAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+aXViZW5kYSB2ZWN0b3IgbG9nb192M19vbmx5X2lfZ3JlZW48L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJpdWJlbmRhLXZlY3Rvci1sb2dvX3YzX29ubHlfaV9ncmVlbiIgZmlsbD0iIzFDQzY5MSIgZmlsbC1ydWxlPSJub256ZXJvIj4gICAgICAgICAgICA8cGF0aCBkPSJNMjIwLjYsMTA4LjQgQzIyMC42LDEzNSAyMTAuOCwxNTkuMyAxOTQuNSwxNzguMSBMMjE3LjksNDg5LjQgTDguNSw0ODkuNCBMMzEuMiwxODMuNSBDMTEuOSwxNjQuMiAwLDEzNy43IDAsMTA4LjQgQzAsNDguNyA0OS40LDAuNCAxMTAuMywwLjQgQzE3MS4yLDAuNCAyMjAuNiw0OC43IDIyMC42LDEwOC40IFogTTExMC4zLDEzMyBDMTI1LDEzMyAxMzYuOCwxMjEuMiAxMzYuOCwxMDYuNyBDMTM2LjgsOTIuMiAxMjQuOSw4MC41IDExMC4zLDgwLjUgQzk1LjYsODAuNSA4My44LDkyLjMgODMuOCwxMDYuNyBDODMuOCwxMjEuMyA5NS42LDEzMyAxMTAuMywxMzMgWiBNMTMxLjIsMjI3IEw5NC45LDI2My4zIEw5NC45LDQwMy44IEwxMzEuMiw0MDMuOCBMMTMxLjIsMjI3IFoiIGlkPSJTaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);
17
+ }
18
+ .iubenda-notice .notice-question {
19
+ margin-bottom: 5px;
20
+ display: block;
21
+ }
22
+ .iubenda-notice .notice-reply {
23
+ margin-top: 0;
24
+ }
25
+ .iubenda-notice .step-2 {
26
+ display: none;
27
+ }
28
+ .iubenda-notice .reply-yes {
29
+ margin-right: 10px;
30
+ }
31
+ .iubenda-notice .reply-yes:before,
32
+ .iubenda-notice .reply-no:before {
33
+ font-family: dashicons;
34
+ display: inline-block;
35
+ line-height: 1;
36
+ font-weight: 400;
37
+ font-style: normal;
38
+ speak: none;
39
+ text-decoration: inherit;
40
+ text-transform: none;
41
+ text-rendering: auto;
42
+ -webkit-font-smoothing: antialiased;
43
+ -moz-osx-font-smoothing: grayscale;
44
+ width: 20px;
45
+ height: 20px;
46
+ font-size: 20px;
47
+ vertical-align: top;
48
+ text-align: center;
49
+ transition: color .1s ease-in;
50
+ text-decoration: none;
51
+ }
52
+ .iubenda-notice .reply-yes:before {
53
+ content: "\f147";
54
+ }
55
+ .iubenda-notice .reply-no:before {
56
+ content: "\f335";
57
+ }
58
+
59
+ .iubenda-rate-stars {
60
+ display: inline-block;
61
+ color: #ffb900;
62
+ position: relative;
63
+ top: 3px;
64
+ }
65
+ .iubenda-rate-stars svg {
66
+ fill: #ffb900
67
+ }
assets/css/style.css ADDED
@@ -0,0 +1,2438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @charset "UTF-8";
2
+ @font-face {
3
+ font-family: "hkgrotesk";
4
+ src: url("../fonts/HKGrotesk-Regular.eot");
5
+ src: url("../fonts/HKGrotesk-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/HKGrotesk-Regular.woff2") format("woff2"), url("../fonts/HKGrotesk-Regular.woff") format("woff");
6
+ font-weight: 400;
7
+ font-style: normal;
8
+ font-display: swap;
9
+ }
10
+ @font-face {
11
+ font-family: "hkgrotesk";
12
+ src: url("../fonts/HKGrotesk-Bold.eot");
13
+ src: url("../fonts/hk-grotesk/HKGrotesk-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/HKGrotesk-Bold.woff2") format("woff2"), url("../fonts/hk-grotesk/HKGrotesk-Bold.woff") format("woff");
14
+ font-weight: 700;
15
+ font-style: normal;
16
+ font-display: swap;
17
+ }
18
+ .text-xs, .link-helper {
19
+ font-size: 0.8rem;
20
+ }
21
+
22
+ .text-sm {
23
+ font-size: 0.9rem;
24
+ }
25
+
26
+ .text-regular {
27
+ font-size: 1rem;
28
+ }
29
+
30
+ .text-md {
31
+ font-size: 1.125rem;
32
+ }
33
+
34
+ .text-lg {
35
+ font-size: 1.5rem;
36
+ }
37
+
38
+ .text-xl {
39
+ font-size: 2rem;
40
+ }
41
+
42
+ h1 {
43
+ line-height: 1.25;
44
+ }
45
+
46
+ h4 {
47
+ margin: 0;
48
+ margin-bottom: 1rem;
49
+ color: #585858;
50
+ font-size: 0.95rem;
51
+ }
52
+
53
+ .m-0 {
54
+ margin: 0 !important;
55
+ }
56
+
57
+ .mt-0,
58
+ .my-0 {
59
+ margin-top: 0 !important;
60
+ }
61
+
62
+ .mr-0,
63
+ .mx-0 {
64
+ margin-right: 0 !important;
65
+ }
66
+
67
+ .mb-0,
68
+ .my-0 {
69
+ margin-bottom: 0 !important;
70
+ }
71
+
72
+ .ml-0,
73
+ .mx-0 {
74
+ margin-left: 0 !important;
75
+ }
76
+
77
+ .m-1 {
78
+ margin: 0.25rem !important;
79
+ }
80
+
81
+ .mt-1,
82
+ .my-1 {
83
+ margin-top: 0.25rem !important;
84
+ }
85
+
86
+ .mr-1,
87
+ .mx-1 {
88
+ margin-right: 0.25rem !important;
89
+ }
90
+
91
+ .mb-1,
92
+ .my-1 {
93
+ margin-bottom: 0.25rem !important;
94
+ }
95
+
96
+ .ml-1,
97
+ .mx-1 {
98
+ margin-left: 0.25rem !important;
99
+ }
100
+
101
+ .m-2 {
102
+ margin: 0.5rem !important;
103
+ }
104
+
105
+ .mt-2,
106
+ .my-2 {
107
+ margin-top: 0.5rem !important;
108
+ }
109
+
110
+ .mr-2,
111
+ .mx-2 {
112
+ margin-right: 0.5rem !important;
113
+ }
114
+
115
+ .mb-2,
116
+ .my-2 {
117
+ margin-bottom: 0.5rem !important;
118
+ }
119
+
120
+ .ml-2,
121
+ .mx-2 {
122
+ margin-left: 0.5rem !important;
123
+ }
124
+
125
+ .m-3 {
126
+ margin: 1rem !important;
127
+ }
128
+
129
+ .mt-3,
130
+ .my-3 {
131
+ margin-top: 1rem !important;
132
+ }
133
+
134
+ .mr-3,
135
+ .mx-3 {
136
+ margin-right: 1rem !important;
137
+ }
138
+
139
+ .mb-3,
140
+ .my-3 {
141
+ margin-bottom: 1rem !important;
142
+ }
143
+
144
+ .ml-3,
145
+ .mx-3 {
146
+ margin-left: 1rem !important;
147
+ }
148
+
149
+ .m-4 {
150
+ margin: 1.5rem !important;
151
+ }
152
+
153
+ .mt-4,
154
+ .my-4 {
155
+ margin-top: 1.5rem !important;
156
+ }
157
+
158
+ .mr-4,
159
+ .mx-4 {
160
+ margin-right: 1.5rem !important;
161
+ }
162
+
163
+ .mb-4,
164
+ .my-4 {
165
+ margin-bottom: 1.5rem !important;
166
+ }
167
+
168
+ .ml-4,
169
+ .mx-4 {
170
+ margin-left: 1.5rem !important;
171
+ }
172
+
173
+ .m-5 {
174
+ margin: 3rem !important;
175
+ }
176
+
177
+ .mt-5,
178
+ .my-5 {
179
+ margin-top: 3rem !important;
180
+ }
181
+
182
+ .mr-5,
183
+ .mx-5 {
184
+ margin-right: 3rem !important;
185
+ }
186
+
187
+ .mb-5,
188
+ .my-5 {
189
+ margin-bottom: 3rem !important;
190
+ }
191
+
192
+ .ml-5,
193
+ .mx-5 {
194
+ margin-left: 3rem !important;
195
+ }
196
+
197
+ .p-0 {
198
+ padding: 0 !important;
199
+ }
200
+
201
+ .pt-0,
202
+ .py-0 {
203
+ padding-top: 0 !important;
204
+ }
205
+
206
+ .pr-0,
207
+ .px-0 {
208
+ padding-right: 0 !important;
209
+ }
210
+
211
+ .pb-0,
212
+ .py-0 {
213
+ padding-bottom: 0 !important;
214
+ }
215
+
216
+ .pl-0,
217
+ .px-0 {
218
+ padding-left: 0 !important;
219
+ }
220
+
221
+ .p-1 {
222
+ padding: 0.25rem !important;
223
+ }
224
+
225
+ .pt-1,
226
+ .py-1 {
227
+ padding-top: 0.25rem !important;
228
+ }
229
+
230
+ .pr-1,
231
+ .px-1 {
232
+ padding-right: 0.25rem !important;
233
+ }
234
+
235
+ .pb-1,
236
+ .py-1 {
237
+ padding-bottom: 0.25rem !important;
238
+ }
239
+
240
+ .pl-1,
241
+ .px-1 {
242
+ padding-left: 0.25rem !important;
243
+ }
244
+
245
+ .p-2 {
246
+ padding: 0.5rem !important;
247
+ }
248
+
249
+ .pt-2,
250
+ .py-2 {
251
+ padding-top: 0.5rem !important;
252
+ }
253
+
254
+ .pr-2,
255
+ .px-2 {
256
+ padding-right: 0.5rem !important;
257
+ }
258
+
259
+ .pb-2,
260
+ .py-2 {
261
+ padding-bottom: 0.5rem !important;
262
+ }
263
+
264
+ .pl-2,
265
+ .px-2 {
266
+ padding-left: 0.5rem !important;
267
+ }
268
+
269
+ .p-3 {
270
+ padding: 1rem !important;
271
+ }
272
+
273
+ .pt-3,
274
+ .py-3 {
275
+ padding-top: 1rem !important;
276
+ }
277
+
278
+ .pr-3,
279
+ .px-3 {
280
+ padding-right: 1rem !important;
281
+ }
282
+
283
+ .pb-3,
284
+ .py-3 {
285
+ padding-bottom: 1rem !important;
286
+ }
287
+
288
+ .pl-3,
289
+ .px-3 {
290
+ padding-left: 1rem !important;
291
+ }
292
+
293
+ .p-4 {
294
+ padding: 1.5rem !important;
295
+ }
296
+
297
+ .pt-4,
298
+ .py-4 {
299
+ padding-top: 1.5rem !important;
300
+ }
301
+
302
+ .pr-4,
303
+ .px-4 {
304
+ padding-right: 1.5rem !important;
305
+ }
306
+
307
+ .pb-4,
308
+ .py-4 {
309
+ padding-bottom: 1.5rem !important;
310
+ }
311
+
312
+ .pl-4,
313
+ .px-4 {
314
+ padding-left: 1.5rem !important;
315
+ }
316
+
317
+ .p-5 {
318
+ padding: 3rem !important;
319
+ }
320
+
321
+ .pt-5,
322
+ .py-5 {
323
+ padding-top: 3rem !important;
324
+ }
325
+
326
+ .pr-5,
327
+ .px-5 {
328
+ padding-right: 3rem !important;
329
+ }
330
+
331
+ .pb-5,
332
+ .py-5 {
333
+ padding-bottom: 3rem !important;
334
+ }
335
+
336
+ .pl-5,
337
+ .px-5 {
338
+ padding-left: 3rem !important;
339
+ }
340
+
341
+ @media (min-width: 768px) {
342
+ .m-lg-0 {
343
+ margin: 0 !important;
344
+ }
345
+
346
+ .mt-lg-0,
347
+ .my-lg-0 {
348
+ margin-top: 0 !important;
349
+ }
350
+
351
+ .mr-lg-0,
352
+ .mx-lg-0 {
353
+ margin-right: 0 !important;
354
+ }
355
+
356
+ .mb-lg-0,
357
+ .my-lg-0 {
358
+ margin-bottom: 0 !important;
359
+ }
360
+
361
+ .ml-lg-0,
362
+ .mx-lg-0 {
363
+ margin-left: 0 !important;
364
+ }
365
+
366
+ .m-lg-1 {
367
+ margin: 0.25rem !important;
368
+ }
369
+
370
+ .mt-lg-1,
371
+ .my-lg-1 {
372
+ margin-top: 0.25rem !important;
373
+ }
374
+
375
+ .mr-lg-1,
376
+ .mx-lg-1 {
377
+ margin-right: 0.25rem !important;
378
+ }
379
+
380
+ .mb-lg-1,
381
+ .my-lg-1 {
382
+ margin-bottom: 0.25rem !important;
383
+ }
384
+
385
+ .ml-lg-1,
386
+ .mx-lg-1 {
387
+ margin-left: 0.25rem !important;
388
+ }
389
+
390
+ .m-lg-2 {
391
+ margin: 0.5rem !important;
392
+ }
393
+
394
+ .mt-lg-2,
395
+ .my-lg-2 {
396
+ margin-top: 0.5rem !important;
397
+ }
398
+
399
+ .mr-lg-2,
400
+ .mx-lg-2 {
401
+ margin-right: 0.5rem !important;
402
+ }
403
+
404
+ .mb-lg-2,
405
+ .my-lg-2 {
406
+ margin-bottom: 0.5rem !important;
407
+ }
408
+
409
+ .ml-lg-2,
410
+ .mx-lg-2 {
411
+ margin-left: 0.5rem !important;
412
+ }
413
+
414
+ .m-lg-3 {
415
+ margin: 1rem !important;
416
+ }
417
+
418
+ .mt-lg-3,
419
+ .my-lg-3 {
420
+ margin-top: 1rem !important;
421
+ }
422
+
423
+ .mr-lg-3,
424
+ .mx-lg-3 {
425
+ margin-right: 1rem !important;
426
+ }
427
+
428
+ .mb-lg-3,
429
+ .my-lg-3 {
430
+ margin-bottom: 1rem !important;
431
+ }
432
+
433
+ .ml-lg-3,
434
+ .mx-lg-3 {
435
+ margin-left: 1rem !important;
436
+ }
437
+
438
+ .m-lg-4 {
439
+ margin: 1.5rem !important;
440
+ }
441
+
442
+ .mt-lg-4,
443
+ .my-lg-4 {
444
+ margin-top: 1.5rem !important;
445
+ }
446
+
447
+ .mr-lg-4,
448
+ .mx-lg-4 {
449
+ margin-right: 1.5rem !important;
450
+ }
451
+
452
+ .mb-lg-4,
453
+ .my-lg-4 {
454
+ margin-bottom: 1.5rem !important;
455
+ }
456
+
457
+ .ml-lg-4,
458
+ .mx-lg-4 {
459
+ margin-left: 1.5rem !important;
460
+ }
461
+
462
+ .m-lg-5 {
463
+ margin: 3rem !important;
464
+ }
465
+
466
+ .mt-lg-5,
467
+ .my-lg-5 {
468
+ margin-top: 3rem !important;
469
+ }
470
+
471
+ .mr-lg-5,
472
+ .mx-lg-5 {
473
+ margin-right: 3rem !important;
474
+ }
475
+
476
+ .mb-lg-5,
477
+ .my-lg-5 {
478
+ margin-bottom: 3rem !important;
479
+ }
480
+
481
+ .ml-lg-5,
482
+ .mx-lg-5 {
483
+ margin-left: 3rem !important;
484
+ }
485
+
486
+ .p-lg-0 {
487
+ padding: 0 !important;
488
+ }
489
+
490
+ .pt-lg-0,
491
+ .py-lg-0 {
492
+ padding-top: 0 !important;
493
+ }
494
+
495
+ .pr-lg-0,
496
+ .px-lg-0 {
497
+ padding-right: 0 !important;
498
+ }
499
+
500
+ .pb-lg-0,
501
+ .py-lg-0 {
502
+ padding-bottom: 0 !important;
503
+ }
504
+
505
+ .pl-lg-0,
506
+ .px-lg-0 {
507
+ padding-left: 0 !important;
508
+ }
509
+
510
+ .p-lg-1 {
511
+ padding: 0.25rem !important;
512
+ }
513
+
514
+ .pt-lg-1,
515
+ .py-lg-1 {
516
+ padding-top: 0.25rem !important;
517
+ }
518
+
519
+ .pr-lg-1,
520
+ .px-lg-1 {
521
+ padding-right: 0.25rem !important;
522
+ }
523
+
524
+ .pb-lg-1,
525
+ .py-lg-1 {
526
+ padding-bottom: 0.25rem !important;
527
+ }
528
+
529
+ .pl-lg-1,
530
+ .px-lg-1 {
531
+ padding-left: 0.25rem !important;
532
+ }
533
+
534
+ .p-lg-2 {
535
+ padding: 0.5rem !important;
536
+ }
537
+
538
+ .pt-lg-2,
539
+ .py-lg-2 {
540
+ padding-top: 0.5rem !important;
541
+ }
542
+
543
+ .pr-lg-2,
544
+ .px-lg-2 {
545
+ padding-right: 0.5rem !important;
546
+ }
547
+
548
+ .pb-lg-2,
549
+ .py-lg-2 {
550
+ padding-bottom: 0.5rem !important;
551
+ }
552
+
553
+ .pl-lg-2,
554
+ .px-lg-2 {
555
+ padding-left: 0.5rem !important;
556
+ }
557
+
558
+ .p-lg-3 {
559
+ padding: 1rem !important;
560
+ }
561
+
562
+ .pt-lg-3,
563
+ .py-lg-3 {
564
+ padding-top: 1rem !important;
565
+ }
566
+
567
+ .pr-lg-3,
568
+ .px-lg-3 {
569
+ padding-right: 1rem !important;
570
+ }
571
+
572
+ .pb-lg-3,
573
+ .py-lg-3 {
574
+ padding-bottom: 1rem !important;
575
+ }
576
+
577
+ .pl-lg-3,
578
+ .px-lg-3 {
579
+ padding-left: 1rem !important;
580
+ }
581
+
582
+ .p-lg-4 {
583
+ padding: 1.5rem !important;
584
+ }
585
+
586
+ .pt-lg-4,
587
+ .py-lg-4 {
588
+ padding-top: 1.5rem !important;
589
+ }
590
+
591
+ .pr-lg-4,
592
+ .px-lg-4 {
593
+ padding-right: 1.5rem !important;
594
+ }
595
+
596
+ .pb-lg-4,
597
+ .py-lg-4 {
598
+ padding-bottom: 1.5rem !important;
599
+ }
600
+
601
+ .pl-lg-4,
602
+ .px-lg-4 {
603
+ padding-left: 1.5rem !important;
604
+ }
605
+
606
+ .p-lg-5 {
607
+ padding: 3rem !important;
608
+ }
609
+
610
+ .pt-lg-5,
611
+ .py-lg-5 {
612
+ padding-top: 3rem !important;
613
+ }
614
+
615
+ .pr-lg-5,
616
+ .px-lg-5 {
617
+ padding-right: 3rem !important;
618
+ }
619
+
620
+ .pb-lg-5,
621
+ .py-lg-5 {
622
+ padding-bottom: 3rem !important;
623
+ }
624
+
625
+ .pl-lg-5,
626
+ .px-lg-5 {
627
+ padding-left: 3rem !important;
628
+ }
629
+ }
630
+ html,
631
+ body {
632
+ font-family: "hkgrotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
633
+ font-weight: 400;
634
+ margin: 0;
635
+ height: 100vh;
636
+ background: #f0f0f1;
637
+ color: #333;
638
+ }
639
+
640
+ * {
641
+ -webkit-box-sizing: border-box;
642
+ box-sizing: border-box;
643
+ }
644
+
645
+ header {
646
+ padding: 1.5rem 0 1.5rem 0;
647
+ }
648
+
649
+ a {
650
+ text-decoration: none;
651
+ color: #333;
652
+ }
653
+ a:hover, a:focus {
654
+ color: currentColor;
655
+ -webkit-box-shadow: none;
656
+ box-shadow: none;
657
+ }
658
+
659
+ ul {
660
+ list-style: none;
661
+ }
662
+
663
+ hr {
664
+ margin: 0;
665
+ border: 0;
666
+ border-top: 1px solid rgba(151, 151, 151, 0.28);
667
+ }
668
+
669
+ .text-gray-lighter {
670
+ color: #808080;
671
+ }
672
+
673
+ .border-gray-lighter {
674
+ color: #808080;
675
+ }
676
+
677
+ .text-gray {
678
+ color: #595959;
679
+ }
680
+
681
+ .border-gray {
682
+ color: #595959;
683
+ }
684
+
685
+ .text-warning {
686
+ color: #804123;
687
+ }
688
+
689
+ .border-warning {
690
+ color: #804123;
691
+ }
692
+
693
+ .text-green {
694
+ color: #1cc691;
695
+ }
696
+
697
+ .border-green {
698
+ color: #1cc691;
699
+ }
700
+
701
+ .d-block {
702
+ display: block !important;
703
+ }
704
+
705
+ .d-flex {
706
+ display: -webkit-box !important;
707
+ display: -ms-flexbox !important;
708
+ display: flex !important;
709
+ }
710
+
711
+ .d-inline {
712
+ display: inline !important;
713
+ }
714
+
715
+ .d-inline-block {
716
+ display: inline-block !important;
717
+ }
718
+
719
+ .d-none {
720
+ display: none !important;
721
+ }
722
+
723
+ .text-left {
724
+ text-align: left !important;
725
+ }
726
+
727
+ .text-center, .modalSync {
728
+ text-align: center !important;
729
+ }
730
+
731
+ .text-right {
732
+ text-align: right !important;
733
+ }
734
+
735
+ .text-light {
736
+ font-weight: light !important;
737
+ }
738
+
739
+ .text-normal {
740
+ font-weight: normal !important;
741
+ }
742
+
743
+ .text-bold {
744
+ font-weight: bold !important;
745
+ }
746
+
747
+ @media (min-width: 768px) {
748
+ .d-lg-block {
749
+ display: block !important;
750
+ }
751
+
752
+ .d-lg-flex {
753
+ display: -webkit-box !important;
754
+ display: -ms-flexbox !important;
755
+ display: flex !important;
756
+ }
757
+
758
+ .d-lg-inline {
759
+ display: inline !important;
760
+ }
761
+
762
+ .d-lg-inline-block {
763
+ display: inline-block !important;
764
+ }
765
+
766
+ .d-lg-none {
767
+ display: none !important;
768
+ }
769
+
770
+ .text-lg-left {
771
+ text-align: left !important;
772
+ }
773
+
774
+ .text-lg-center {
775
+ text-align: center !important;
776
+ }
777
+
778
+ .text-lg-right {
779
+ text-align: right !important;
780
+ }
781
+
782
+ .text-lg-light {
783
+ font-weight: light !important;
784
+ }
785
+
786
+ .text-lg-normal {
787
+ font-weight: normal !important;
788
+ }
789
+
790
+ .text-lg-bold {
791
+ font-weight: bold !important;
792
+ }
793
+ }
794
+ .flex-fill {
795
+ -webkit-box-flex: 1;
796
+ -ms-flex: 1;
797
+ flex: 1;
798
+ }
799
+
800
+ .flex-wrap {
801
+ -ms-flex-wrap: wrap;
802
+ flex-wrap: wrap;
803
+ }
804
+
805
+ .flex-shrink {
806
+ -ms-flex-negative: 0;
807
+ flex-shrink: 0;
808
+ }
809
+
810
+ .flex-direction-column {
811
+ -webkit-box-orient: vertical;
812
+ -webkit-box-direction: normal;
813
+ -ms-flex-direction: column;
814
+ flex-direction: column;
815
+ }
816
+
817
+ .justify-content-center {
818
+ -webkit-box-pack: center;
819
+ -ms-flex-pack: center;
820
+ justify-content: center;
821
+ }
822
+
823
+ .justify-content-between {
824
+ -webkit-box-pack: justify;
825
+ -ms-flex-pack: justify;
826
+ justify-content: space-between;
827
+ }
828
+
829
+ .justify-content-end {
830
+ -webkit-box-pack: end;
831
+ -ms-flex-pack: end;
832
+ justify-content: flex-end;
833
+ }
834
+
835
+ .align-items-center {
836
+ -webkit-box-align: center;
837
+ -ms-flex-align: center;
838
+ align-items: center;
839
+ }
840
+
841
+ .btn {
842
+ text-align: center;
843
+ cursor: pointer;
844
+ text-decoration: none;
845
+ border-radius: 3rem;
846
+ font-weight: bold;
847
+ -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
848
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
849
+ -ms-flex-negative: 0;
850
+ flex-shrink: 0;
851
+ display: inline-block;
852
+ border: 1px solid transparent;
853
+ }
854
+
855
+ .btn-xs {
856
+ padding: 0.45rem 1.3rem !important;
857
+ font-size: 0.75rem;
858
+ }
859
+
860
+ .btn-sm {
861
+ padding: 0.5rem 1.7rem !important;
862
+ font-size: 1rem;
863
+ }
864
+
865
+ .btn-regular {
866
+ padding: 1rem 2.5rem !important;
867
+ font-size: 1rem;
868
+ }
869
+
870
+ .btn-lg {
871
+ padding: 1rem 3rem !important;
872
+ font-size: 1.125rem;
873
+ }
874
+
875
+ .btn-green-primary {
876
+ background-color: #1cc691;
877
+ color: #fff;
878
+ }
879
+ .btn-green-primary:hover, .btn-green-primary:focus {
880
+ background-color: #18ab7d;
881
+ color: #f0f0f0;
882
+ }
883
+
884
+ .btn-blue-primary {
885
+ background-color: #0073ce;
886
+ color: #fff;
887
+ }
888
+ .btn-blue-primary:hover, .btn-blue-primary:focus {
889
+ background-color: #0062af;
890
+ color: #f0f0f0;
891
+ }
892
+
893
+ .btn-gray-lighter {
894
+ background-color: #e7e7e7;
895
+ color: #585858;
896
+ }
897
+ .btn-gray-lighter:hover, .btn-gray-lighter:focus {
898
+ background-color: #d8d8d8;
899
+ color: #494949;
900
+ }
901
+
902
+ .btn-gray-darker {
903
+ background-color: #c8c8c8;
904
+ color: #585858;
905
+ }
906
+ .btn-gray-darker:hover, .btn-gray-darker:focus {
907
+ background-color: #b9b9b9;
908
+ color: #494949;
909
+ }
910
+
911
+ .btn-green-secondary {
912
+ background-color: #d2f4e9;
913
+ color: #009248;
914
+ }
915
+ .btn-green-secondary:hover, .btn-green-secondary:focus {
916
+ background-color: #b9eedd;
917
+ color: #007339;
918
+ }
919
+
920
+ .btn-gray-outline {
921
+ border-color: #595959;
922
+ background-color: transparent;
923
+ color: #595959;
924
+ }
925
+ .btn-gray-outline:hover, .btn-gray-outline:focus {
926
+ background-color: #595959;
927
+ color: #fff;
928
+ }
929
+
930
+ .btn-block {
931
+ display: block;
932
+ width: 75%;
933
+ margin: 0 auto;
934
+ }
935
+
936
+ .btn-reset {
937
+ display: inline;
938
+ padding: 0;
939
+ margin: 0;
940
+ border: 0;
941
+ -webkit-appearance: none;
942
+ -moz-appearance: none;
943
+ appearance: none;
944
+ background: none;
945
+ cursor: pointer;
946
+ }
947
+
948
+ .alert {
949
+ border: 1px solid rgba(151, 151, 151, 0.28);
950
+ border-radius: 0.4rem;
951
+ position: relative;
952
+ overflow: hidden;
953
+ }
954
+ .alert p {
955
+ padding: 1rem;
956
+ margin: auto;
957
+ }
958
+ @media (min-width: 768px) {
959
+ .alert {
960
+ display: -webkit-box;
961
+ display: -ms-flexbox;
962
+ display: flex;
963
+ }
964
+ .alert p {
965
+ padding: 0 4rem 0 2rem;
966
+ }
967
+ }
968
+ .alert--success .alert__icon {
969
+ background-color: #e8f9f4;
970
+ }
971
+ .alert--failure .alert__icon {
972
+ background-color: #f9eaea;
973
+ }
974
+ @media (max-width: 767px) {
975
+ .alert p {
976
+ text-align: center;
977
+ }
978
+ .alert img {
979
+ margin: 0 auto !important;
980
+ display: block;
981
+ }
982
+ }
983
+ .alert .btn-close {
984
+ background-color: #c8c8c8;
985
+ font-size: 1.25rem;
986
+ color: #fff;
987
+ cursor: pointer;
988
+ -ms-flex-negative: 0;
989
+ flex-shrink: 0;
990
+ height: 1.5rem;
991
+ width: 1.5rem;
992
+ line-height: 1.5rem;
993
+ border-radius: 50%;
994
+ border: 0;
995
+ padding: 0px;
996
+ margin-bottom: 2.5rem;
997
+ position: absolute;
998
+ top: 1rem;
999
+ right: 0.2rem;
1000
+ }
1001
+ .alert .btn-close:before {
1002
+ display: none;
1003
+ }
1004
+
1005
+ .notice {
1006
+ border-radius: 0.25rem;
1007
+ display: -webkit-box;
1008
+ display: -ms-flexbox;
1009
+ display: flex;
1010
+ margin: 0;
1011
+ border: 0;
1012
+ -ms-flex-preferred-size: 100%;
1013
+ flex-basis: 100%;
1014
+ }
1015
+ .notice p {
1016
+ margin: 0;
1017
+ }
1018
+ .notice--warning {
1019
+ background-color: #fff4e6;
1020
+ }
1021
+ .notice--general {
1022
+ background-color: #f5f5f5;
1023
+ }
1024
+ .notice--info {
1025
+ background-color: #ECF8FF;
1026
+ }
1027
+
1028
+ /* SWITCH TOOGGLE*/
1029
+ .switch {
1030
+ display: -webkit-inline-box;
1031
+ display: -ms-inline-flexbox;
1032
+ display: inline-flex;
1033
+ margin: 0 10px 0 0;
1034
+ position: relative;
1035
+ }
1036
+ .switch input {
1037
+ position: absolute;
1038
+ top: 0;
1039
+ left: 0;
1040
+ }
1041
+ .switch .selected:before {
1042
+ content: " off";
1043
+ }
1044
+ .switch label {
1045
+ cursor: pointer;
1046
+ width: 48px;
1047
+ height: 24px;
1048
+ background: #c8c8c8;
1049
+ display: block;
1050
+ border-radius: 24px;
1051
+ position: relative;
1052
+ }
1053
+ .switch label:after {
1054
+ content: "";
1055
+ position: absolute;
1056
+ top: 4px;
1057
+ left: 4px;
1058
+ width: 16px;
1059
+ height: 16px;
1060
+ background: white;
1061
+ border-radius: 16px;
1062
+ -webkit-transition: 0.3s;
1063
+ transition: 0.3s;
1064
+ }
1065
+ .switch input[type=checkbox] {
1066
+ height: 0;
1067
+ width: 0;
1068
+ visibility: hidden;
1069
+ }
1070
+ .switch input[type=checkbox]:checked ~ .notification > .selected:before {
1071
+ content: " on";
1072
+ }
1073
+ .switch input[type=checkbox]:checked .selected {
1074
+ content: "on";
1075
+ }
1076
+ .switch input[type=checkbox]:checked + label {
1077
+ background: #1cc691;
1078
+ }
1079
+ .switch input[type=checkbox]:checked + label:after {
1080
+ left: calc(100% - 4px);
1081
+ -webkit-transform: translateX(-100%);
1082
+ transform: translateX(-100%);
1083
+ }
1084
+
1085
+ /* Regular checkbox*/
1086
+ .checkbox-regular {
1087
+ display: -webkit-box;
1088
+ display: -ms-flexbox;
1089
+ display: flex;
1090
+ -webkit-box-align: start;
1091
+ -ms-flex-align: start;
1092
+ align-items: flex-start;
1093
+ margin-bottom: 0.75rem;
1094
+ }
1095
+ .checkbox-regular span {
1096
+ -webkit-box-flex: 1;
1097
+ -ms-flex: 1 1 auto;
1098
+ flex: 1 1 auto;
1099
+ font-size: 0.9rem;
1100
+ padding: 0.25rem;
1101
+ }
1102
+ .checkbox-regular input[type=checkbox] {
1103
+ margin: 0;
1104
+ -webkit-box-shadow: none;
1105
+ box-shadow: none;
1106
+ -ms-flex-negative: 0;
1107
+ flex-shrink: 0;
1108
+ -webkit-appearance: none;
1109
+ -moz-appearance: none;
1110
+ appearance: none;
1111
+ min-width: 1.75rem;
1112
+ min-height: 1.75rem;
1113
+ border-radius: 0.25rem;
1114
+ border: 1px solid #ced4da;
1115
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1116
+ margin-right: 0.5rem;
1117
+ }
1118
+ .checkbox-regular input[type=checkbox]:before {
1119
+ display: none;
1120
+ }
1121
+ .checkbox-regular input[type=checkbox]:checked {
1122
+ background-size: 1.125rem auto;
1123
+ background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg width='34px' height='24px' viewBox='0 0 34 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3ERectangle 13%3C/title%3E%3Cdesc%3ECreated with Sketch.%3C/desc%3E%3Cdefs%3E%3C/defs%3E%3Cg id='spec' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='elements' transform='translate(-2505.000000, -3840.000000)' fill-rule='nonzero' fill='%231CC691'%3E%3Cpath d='M2515,3858.6 C2513.89543,3858.6 2513,3859.49543 2513,3860.6 C2513,3861.70457 2513.89543,3862.6 2515,3862.6 L2529,3862.6 C2530.10457,3862.6 2531,3861.70457 2531,3860.6 L2531,3834 C2531,3832.89543 2530.10457,3832 2529,3832 C2527.89543,3832 2527,3832.89543 2527,3834 L2527,3858.6 L2515,3858.6 Z' id='Rectangle-13' transform='translate(2522.000000, 3847.300000) rotate(-315.000000) translate(-2522.000000, -3847.300000) '%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1124
+ background-repeat: no-repeat;
1125
+ background-position: center;
1126
+ }
1127
+ .checkbox-regular input[type=checkbox]:focus {
1128
+ border-color: #1cc691;
1129
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1130
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1131
+ }
1132
+
1133
+ /*RADIO LARGE*/
1134
+ .radio-large input[type=radio] {
1135
+ -webkit-appearance: none;
1136
+ -moz-appearance: none;
1137
+ appearance: none;
1138
+ width: 0;
1139
+ height: 0;
1140
+ opacity: 0;
1141
+ }
1142
+ .radio-large input[type=radio]:before {
1143
+ display: none;
1144
+ }
1145
+ .radio-large input[type=radio]:checked + label {
1146
+ border-color: #1cc691;
1147
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1148
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1149
+ font-weight: bold;
1150
+ color: #1cc691;
1151
+ }
1152
+ .radio-large label {
1153
+ display: inline-block;
1154
+ padding: 1rem 2rem;
1155
+ white-space: nowrap;
1156
+ min-width: 12rem;
1157
+ display: -webkit-box;
1158
+ display: -ms-flexbox;
1159
+ display: flex;
1160
+ -webkit-box-align: center;
1161
+ -ms-flex-align: center;
1162
+ align-items: center;
1163
+ -webkit-box-pack: center;
1164
+ -ms-flex-pack: center;
1165
+ justify-content: center;
1166
+ font-size: 1rem;
1167
+ border: 1px solid #ced4da;
1168
+ -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1169
+ transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1170
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
1171
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1172
+ border-radius: 0.25rem;
1173
+ }
1174
+
1175
+ /*RADIO BUTTON REGULAR*/
1176
+ .radio-regular {
1177
+ display: -webkit-box;
1178
+ display: -ms-flexbox;
1179
+ display: flex;
1180
+ -webkit-box-align: start;
1181
+ -ms-flex-align: start;
1182
+ align-items: flex-start;
1183
+ }
1184
+ .radio-regular span {
1185
+ -webkit-box-flex: 1;
1186
+ -ms-flex: 1 1 auto;
1187
+ flex: 1 1 auto;
1188
+ font-size: 0.9rem;
1189
+ }
1190
+ .radio-regular input[type=radio] {
1191
+ -webkit-box-shadow: none;
1192
+ box-shadow: none;
1193
+ -webkit-appearance: none;
1194
+ -moz-appearance: none;
1195
+ appearance: none;
1196
+ min-width: 1.75rem;
1197
+ min-height: 1.75rem;
1198
+ border-radius: 1.75rem;
1199
+ border: 1px solid #ced4da;
1200
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1201
+ }
1202
+ .radio-regular input[type=radio]:before {
1203
+ display: none;
1204
+ }
1205
+ .radio-regular input[type=radio]:checked {
1206
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5PdmFsIDEyPC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9InNwZWMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImVsZW1lbnRzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjQ2Ny4wMDAwMDAsIC0zNzk1LjAwMDAwMCkiIGZpbGw9IiMxQ0M2OTEiPiAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtMTIiIGN4PSIyNDcxIiBjeT0iMzc5OSIgcj0iNCI+PC9jaXJjbGU+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=);
1207
+ background-size: 6px 6px;
1208
+ background-repeat: no-repeat;
1209
+ background-position: center;
1210
+ }
1211
+ .radio-regular input[type=radio]:focus {
1212
+ border-color: #1cc691;
1213
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1214
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1215
+ }
1216
+
1217
+ .radio-controller {
1218
+ position: relative;
1219
+ margin: 0.25rem;
1220
+ }
1221
+ .radio-controller input {
1222
+ position: absolute;
1223
+ top: 0;
1224
+ left: 0;
1225
+ }
1226
+
1227
+ .radio-toggle {
1228
+ display: -webkit-box;
1229
+ display: -ms-flexbox;
1230
+ display: flex;
1231
+ -webkit-box-align: start;
1232
+ -ms-flex-align: start;
1233
+ align-items: flex-start;
1234
+ padding: 1.5rem 0;
1235
+ margin-top: 2rem;
1236
+ }
1237
+ .radio-toggle .switch {
1238
+ margin-right: 1rem;
1239
+ }
1240
+ .radio-toggle span {
1241
+ margin: 0.125rem 0;
1242
+ font-size: 1.5rem;
1243
+ font-weight: bold;
1244
+ }
1245
+
1246
+ /*RADIO THEME*/
1247
+ .radio-theme input[type=radio] {
1248
+ -webkit-box-shadow: none;
1249
+ box-shadow: none;
1250
+ -webkit-appearance: none;
1251
+ -moz-appearance: none;
1252
+ appearance: none;
1253
+ width: 163px;
1254
+ height: 86px;
1255
+ border-radius: 0.25rem;
1256
+ border: 1px solid #ced4da;
1257
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1258
+ background-size: 132px auto;
1259
+ background-repeat: no-repeat;
1260
+ background-position: 30px 6px;
1261
+ }
1262
+ .radio-theme input[type=radio]:before {
1263
+ display: none;
1264
+ }
1265
+ .radio-theme input[type=radio]:checked {
1266
+ border-color: #1cc691;
1267
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1268
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1269
+ }
1270
+ .radio-theme input[type=radio]:disabled {
1271
+ border: 1px solid #ced4da;
1272
+ }
1273
+
1274
+ .radio-theme-dark input[type=radio] {
1275
+ background-image: url("data:image/svg+xml,%3Csvg height='86' viewBox='0 0 138 86' width='138' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23373737' height='86' rx='4' width='192'/%3E%3Cg transform='translate(18 15)'%3E%3Cpath d='m5.09179202 3.53571429v-3.39452802h-5.09179202v3.39452802zm4.8375 0v-3.39452802h-5.09179202v3.39452802zm4.83749998 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm14.6433594 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802z' fill='%23fff' fill-rule='nonzero'/%3E%3Cpath d='m5.09179202 19.4785714v-3.394528h-5.09179202v3.394528zm4.8375 0v-3.394528h-5.09179202v3.394528zm4.83749998 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm14.6433594 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm14.6433594 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm-82.49921878 11.3v-3.394528h-5.09179202v3.394528zm4.8375 0v-3.394528h-5.09179202v3.394528zm4.83749998 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528z' fill='%23afafaf' fill-rule='nonzero'/%3E%3Cg fill='%230073ce'%3E%3Crect height='10.857143' rx='5' width='35.413793' x='51.362069' y='46.142857'/%3E%3Crect height='10.857143' rx='5' width='35.413793' x='93.586207' y='46.142857'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1276
+ }
1277
+
1278
+ .radio-theme-light input[type=radio] {
1279
+ background-image: url("data:image/svg+xml,%3Csvg height='86' viewBox='0 0 138 86' width='138' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23f9f9f9' height='86' rx='4' width='192'/%3E%3Cg transform='translate(18 11)'%3E%3Cpath d='m5.09179202 7.53571429v-3.39452802h-5.09179202v3.39452802zm4.8375 0v-3.39452802h-5.09179202v3.39452802zm4.83749998 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm14.6433594 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802zm4.8375 0v-3.39452802h-5.091792v3.39452802z' fill='%23565656' fill-rule='nonzero'/%3E%3Cpath d='m5.09179202 23.4785714v-3.394528h-5.09179202v3.394528zm4.8375 0v-3.394528h-5.09179202v3.394528zm4.83749998 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm14.6433594 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm14.6433594 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm-82.49921878 11.3v-3.394528h-5.09179202v3.394528zm4.8375 0v-3.394528h-5.09179202v3.394528zm4.83749998 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528zm4.8375 0v-3.394528h-5.091792v3.394528z' fill='%23afafaf' fill-rule='nonzero'/%3E%3Cg fill='%230073ce'%3E%3Crect height='10.857143' rx='5' width='35.413793' x='51.362069' y='50.142857'/%3E%3Crect height='10.857143' rx='5' width='35.413793' x='93.586207' y='50.142857'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1280
+ }
1281
+
1282
+ .radio-theme-custom input[type=radio] {
1283
+ background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='15px' height='15px' viewBox='0 0 15 15' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E+%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' font-family='HelveticaNeue, Helvetica Neue' font-size='28' font-weight='normal'%3E%3Cg id='wizard_configurator' transform='translate(-972.000000, -622.000000)' fill='%23333333'%3E%3Ctext id='+'%3E%3Ctspan x='971.6' y='637'%3E+%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
1284
+ background-size: 16px 16px;
1285
+ background-repeat: no-repeat;
1286
+ background-position: center;
1287
+ }
1288
+
1289
+ .radio-cards {
1290
+ display: -webkit-box;
1291
+ display: -ms-flexbox;
1292
+ display: flex;
1293
+ grid-gap: 0.625rem;
1294
+ grid-auto-flow: column;
1295
+ -ms-grid-rows: auto;
1296
+ grid-template-rows: auto;
1297
+ overflow-x: auto;
1298
+ padding: 0.5rem;
1299
+ margin: 0 -0.5rem;
1300
+ }
1301
+ .radio-cards .radio-card {
1302
+ text-align: center;
1303
+ position: relative;
1304
+ min-width: 7rem;
1305
+ -webkit-box-flex: 1;
1306
+ -ms-flex: 1;
1307
+ flex: 1;
1308
+ display: -webkit-box;
1309
+ display: -ms-flexbox;
1310
+ display: flex;
1311
+ }
1312
+ .radio-cards .radio-card input {
1313
+ position: absolute;
1314
+ top: 0;
1315
+ left: 0;
1316
+ opacity: 0;
1317
+ }
1318
+ .radio-cards .radio-card input:checked ~ div {
1319
+ -webkit-box-shadow: 0 0 0 0.35rem rgba(28, 198, 145, 0.15), 0 0 0 1px #1cc691;
1320
+ box-shadow: 0 0 0 0.35rem rgba(28, 198, 145, 0.15), 0 0 0 1px #1cc691;
1321
+ }
1322
+ .radio-cards .radio-card input:checked ~ .check-icon {
1323
+ display: block;
1324
+ }
1325
+ .radio-cards .radio-card .check-icon {
1326
+ position: absolute;
1327
+ display: none;
1328
+ top: 0.5rem;
1329
+ right: 0.5rem;
1330
+ }
1331
+ .radio-cards .radio-card > div {
1332
+ -webkit-box-flex: 1;
1333
+ -ms-flex: 1;
1334
+ flex: 1;
1335
+ padding: 1.5rem 1rem;
1336
+ border: 1px solid rgba(0, 0, 0, 0.2);
1337
+ border-radius: 0.35rem;
1338
+ display: -webkit-box;
1339
+ display: -ms-flexbox;
1340
+ display: flex;
1341
+ -webkit-box-align: center;
1342
+ -ms-flex-align: center;
1343
+ align-items: center;
1344
+ -webkit-box-pack: center;
1345
+ -ms-flex-pack: center;
1346
+ justify-content: center;
1347
+ -webkit-box-orient: vertical;
1348
+ -webkit-box-direction: normal;
1349
+ -ms-flex-direction: column;
1350
+ flex-direction: column;
1351
+ cursor: pointer;
1352
+ }
1353
+ .radio-cards .radio-card > div img {
1354
+ width: 45%;
1355
+ margin-bottom: 0.35rem;
1356
+ }
1357
+ .radio-cards .radio-card > div span {
1358
+ font-weight: bold;
1359
+ font-size: 0.85rem;
1360
+ line-height: 1;
1361
+ display: inline-block;
1362
+ }
1363
+
1364
+ .check-icon {
1365
+ display: inline-block;
1366
+ width: 2rem;
1367
+ height: 2rem;
1368
+ background-image: url("data:image/svg+xml,%3Csvg height='7' viewBox='0 0 8 7' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m14.8113573 11.5935296h-5.33333337l.03831907-1.99999999' fill='none' stroke='%23fff' stroke-linecap='round' stroke-width='2' transform='matrix(.64278761 -.76604444 .76604444 .64278761 -11.776881 5.087513)'/%3E%3C/svg%3E");
1369
+ background-repeat: no-repeat;
1370
+ background-position: center;
1371
+ background-size: 0.75rem;
1372
+ border-radius: 50%;
1373
+ background-color: #1cc691;
1374
+ }
1375
+
1376
+ /*RADIO BUTTON STYLE*/
1377
+ .radio-btn-style {
1378
+ position: relative;
1379
+ }
1380
+ .radio-btn-style > div {
1381
+ border-radius: 0.25rem;
1382
+ border: 1px solid #ced4da;
1383
+ padding: 1.5rem 2rem;
1384
+ overflow: hidden;
1385
+ }
1386
+ .radio-btn-style input {
1387
+ -webkit-appearance: none;
1388
+ -moz-appearance: none;
1389
+ appearance: none;
1390
+ opacity: 0;
1391
+ position: absolute;
1392
+ top: 0;
1393
+ left: 0;
1394
+ }
1395
+ .radio-btn-style input:checked + div {
1396
+ border-color: #1cc691;
1397
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1398
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1399
+ }
1400
+ .radio-btn-style .btn-fake {
1401
+ background-image: url("data:image/svg+xml,%3Csvg height='21' viewBox='0 0 11 21' width='11' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m5.328 0c2.94257315 0 5.328 2.38542685 5.328 5.328 0 1.8242202-.91678202 3.43431448-2.31474111 4.39467789l1.28526555 10.92332211h-8.59704888l1.28526555-10.92332211c-1.39795909-.96036341-2.31474111-2.57045769-2.31474111-4.39467789 0-2.94257315 2.38542685-5.328 5.328-5.328z' fill='%231cc691' fill-rule='evenodd'/%3E%3C/svg%3E");
1402
+ background-position: left 1rem center;
1403
+ background-repeat: no-repeat;
1404
+ border: 2px solid rgba(0, 0, 0, 0.2);
1405
+ padding: 1rem 1.5rem 1rem 3rem;
1406
+ border-radius: 0.35rem;
1407
+ display: -webkit-box;
1408
+ display: -ms-flexbox;
1409
+ display: flex;
1410
+ margin-right: -4rem;
1411
+ color: #444;
1412
+ }
1413
+ .radio-btn-style .btn-fake:before, .radio-btn-style .btn-fake:after {
1414
+ content: "";
1415
+ display: inline-block;
1416
+ height: 0.5rem;
1417
+ background-color: currentColor;
1418
+ white-space: nowrap;
1419
+ margin-right: 0.5rem;
1420
+ }
1421
+ .radio-btn-style .btn-fake:before {
1422
+ width: 4rem;
1423
+ }
1424
+ .radio-btn-style .btn-fake:after {
1425
+ width: 2rem;
1426
+ }
1427
+
1428
+ .radio-btn-style-dark .btn-fake {
1429
+ color: white;
1430
+ background-color: #444;
1431
+ }
1432
+
1433
+ .paste_embed_code {
1434
+ min-inline-size: auto;
1435
+ }
1436
+ .paste_embed_code textarea {
1437
+ -webkit-appearance: none;
1438
+ -moz-appearance: none;
1439
+ appearance: none;
1440
+ width: 100%;
1441
+ background: transparent;
1442
+ padding: 1rem;
1443
+ font-family: monospace;
1444
+ border: 0;
1445
+ resize: none;
1446
+ outline: 0;
1447
+ }
1448
+ .paste_embed_code textarea:focus {
1449
+ -webkit-box-shadow: none;
1450
+ box-shadow: none;
1451
+ }
1452
+ .paste_embed_code input[type=text] {
1453
+ width: 100% !important;
1454
+ display: block !important;
1455
+ border: 1px solid rgba(0, 0, 0, 0.2) !important;
1456
+ padding: 1rem !important;
1457
+ font-family: monospace !important;
1458
+ }
1459
+ .paste_embed_code input[type=text]:focus {
1460
+ -webkit-box-shadow: none !important;
1461
+ box-shadow: none !important;
1462
+ }
1463
+
1464
+ .paste-api-form {
1465
+ border: 1px solid #979797;
1466
+ border-radius: 0.25rem;
1467
+ position: relative;
1468
+ -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1469
+ transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1470
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
1471
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1472
+ display: -webkit-box;
1473
+ display: -ms-flexbox;
1474
+ display: flex;
1475
+ }
1476
+ @media (max-width: 767px) {
1477
+ .paste-api-form {
1478
+ -webkit-box-orient: vertical;
1479
+ -webkit-box-direction: normal;
1480
+ -ms-flex-direction: column;
1481
+ flex-direction: column;
1482
+ }
1483
+ }
1484
+ .paste-api-form:focus-within {
1485
+ border-color: #1cc691;
1486
+ -webkit-box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1487
+ box-shadow: 0 0 0 0.25rem rgba(28, 198, 145, 0.25);
1488
+ outline: none;
1489
+ }
1490
+ .paste-api-form button {
1491
+ margin: 1rem;
1492
+ -ms-flex-item-align: end;
1493
+ align-self: flex-end;
1494
+ }
1495
+ .paste-api-form input[type=text],
1496
+ .paste-api-form button {
1497
+ padding: 1rem;
1498
+ }
1499
+ .paste-api-form input[type=text] {
1500
+ -webkit-box-flex: 2;
1501
+ -ms-flex-positive: 2;
1502
+ flex-grow: 2;
1503
+ outline: none;
1504
+ border: none;
1505
+ border-radius: 0.25rem;
1506
+ font-family: "hkgrotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
1507
+ }
1508
+ .paste-api-form input[type=text]:focus {
1509
+ -webkit-box-shadow: none;
1510
+ box-shadow: none;
1511
+ }
1512
+
1513
+ fieldset {
1514
+ border: none;
1515
+ margin: 0;
1516
+ padding: 0;
1517
+ }
1518
+
1519
+ label,
1520
+ input {
1521
+ cursor: pointer;
1522
+ }
1523
+
1524
+ .custom-iframe-field,
1525
+ .custom-script-field {
1526
+ display: none;
1527
+ margin-bottom: 0.5rem;
1528
+ }
1529
+ .custom-iframe-field.shown,
1530
+ .custom-script-field.shown {
1531
+ display: -webkit-box;
1532
+ display: -ms-flexbox;
1533
+ display: flex;
1534
+ }
1535
+
1536
+ .tabs .tabs__target:not(.active) {
1537
+ display: none;
1538
+ }
1539
+ .tabs .tabs__nav__item {
1540
+ margin: 0;
1541
+ cursor: pointer;
1542
+ }
1543
+ .tabs--style2 {
1544
+ border: 1px solid rgba(0, 0, 0, 0.2);
1545
+ border-radius: 0.35rem;
1546
+ }
1547
+ .tabs--style2 > .tabs__nav {
1548
+ display: -webkit-box;
1549
+ display: -ms-flexbox;
1550
+ display: flex;
1551
+ overflow-x: auto;
1552
+ overflow-y: hidden;
1553
+ margin: 0;
1554
+ padding: 0;
1555
+ list-style: none;
1556
+ font-size: 0.95rem;
1557
+ }
1558
+ .tabs--style2 > .tabs__nav li {
1559
+ -webkit-box-flex: 1;
1560
+ -ms-flex: 1;
1561
+ flex: 1;
1562
+ text-align: center;
1563
+ padding: 0.75rem 1rem;
1564
+ white-space: nowrap;
1565
+ border: 1px solid transparent;
1566
+ border-bottom-color: rgba(0, 0, 0, 0.2);
1567
+ border-right-color: rgba(0, 0, 0, 0.05);
1568
+ }
1569
+ .tabs--style2 > .tabs__nav li:last-of-type {
1570
+ border-right-color: transparent;
1571
+ }
1572
+ .tabs--style2 > .tabs__nav li.active {
1573
+ margin: 0 0 0 -1px;
1574
+ font-weight: bold;
1575
+ border-bottom-color: transparent;
1576
+ border-left-color: rgba(0, 0, 0, 0.2);
1577
+ border-right-color: rgba(0, 0, 0, 0.2);
1578
+ }
1579
+ .tabs--style2 > .tabs__nav li.active:first-of-type {
1580
+ border-left-color: transparent;
1581
+ }
1582
+ .tabs--style2 > .tabs__nav li.active:last-of-type {
1583
+ border-right-color: transparent;
1584
+ }
1585
+ .tabs--style1 > .tabs__nav {
1586
+ display: -webkit-box;
1587
+ display: -ms-flexbox;
1588
+ display: flex;
1589
+ list-style: none;
1590
+ margin: 0;
1591
+ padding: 0;
1592
+ text-transform: uppercase;
1593
+ overflow-x: auto;
1594
+ }
1595
+ .tabs--style1 > .tabs__nav .tabs__nav__item {
1596
+ font-size: 0.85rem;
1597
+ padding: 0 0 0.5rem;
1598
+ border-bottom: 2px solid rgba(0, 0, 0, 0.1);
1599
+ font-weight: bold;
1600
+ white-space: nowrap;
1601
+ color: #777;
1602
+ }
1603
+ .tabs--style1 > .tabs__nav .tabs__nav__item:not(:last-of-type) {
1604
+ margin-right: 3rem;
1605
+ }
1606
+ .tabs--style1 > .tabs__nav .tabs__nav__item.active {
1607
+ border-bottom-color: #1cc691;
1608
+ color: #333;
1609
+ }
1610
+
1611
+ .modal {
1612
+ position: fixed;
1613
+ top: 0;
1614
+ left: 0;
1615
+ width: 100%;
1616
+ height: 100%;
1617
+ padding: 1rem;
1618
+ background: rgba(0, 0, 0, 0.5);
1619
+ display: none;
1620
+ overflow-y: auto;
1621
+ z-index: 99999;
1622
+ }
1623
+ .modal.shown {
1624
+ display: -webkit-box;
1625
+ display: -ms-flexbox;
1626
+ display: flex;
1627
+ }
1628
+ .modal__window {
1629
+ margin: auto;
1630
+ background: white;
1631
+ border-radius: 0.5rem;
1632
+ -webkit-box-shadow: 0 0 2rem rgba(0, 0, 0, 0.1);
1633
+ box-shadow: 0 0 2rem rgba(0, 0, 0, 0.1);
1634
+ max-width: 320px;
1635
+ }
1636
+ .modal__window--md {
1637
+ max-width: 640px;
1638
+ }
1639
+ @media (max-width: 767px) {
1640
+ .modal__window--md {
1641
+ max-width: 100%;
1642
+ }
1643
+ }
1644
+
1645
+ .breadcrumb {
1646
+ background-color: rgba(0, 0, 0, 0.035);
1647
+ padding: 1.5rem;
1648
+ margin: 0;
1649
+ display: -webkit-box;
1650
+ display: -ms-flexbox;
1651
+ display: flex;
1652
+ }
1653
+ .breadcrumb li {
1654
+ margin: 0;
1655
+ }
1656
+ .breadcrumb li:not(:last-of-type) {
1657
+ margin-right: 1rem;
1658
+ }
1659
+ .breadcrumb li:not(:last-of-type):after {
1660
+ content: "→";
1661
+ margin-left: 1rem;
1662
+ }
1663
+
1664
+ @-webkit-keyframes spin {
1665
+ from {
1666
+ -webkit-transform: rotate(0);
1667
+ transform: rotate(0);
1668
+ }
1669
+ to {
1670
+ -webkit-transform: rotate(359deg);
1671
+ transform: rotate(359deg);
1672
+ }
1673
+ }
1674
+
1675
+ @keyframes spin {
1676
+ from {
1677
+ -webkit-transform: rotate(0);
1678
+ transform: rotate(0);
1679
+ }
1680
+ to {
1681
+ -webkit-transform: rotate(359deg);
1682
+ transform: rotate(359deg);
1683
+ }
1684
+ }
1685
+ @-webkit-keyframes spin_button {
1686
+ from {
1687
+ -webkit-transform: translate(-50%, -50%) rotate(0);
1688
+ transform: translate(-50%, -50%) rotate(0);
1689
+ }
1690
+ to {
1691
+ -webkit-transform: translate(-50%, -50%) rotate(359deg);
1692
+ transform: translate(-50%, -50%) rotate(359deg);
1693
+ }
1694
+ }
1695
+ @keyframes spin_button {
1696
+ from {
1697
+ -webkit-transform: translate(-50%, -50%) rotate(0);
1698
+ transform: translate(-50%, -50%) rotate(0);
1699
+ }
1700
+ to {
1701
+ -webkit-transform: translate(-50%, -50%) rotate(359deg);
1702
+ transform: translate(-50%, -50%) rotate(359deg);
1703
+ }
1704
+ }
1705
+ .btn-loading {
1706
+ position: relative;
1707
+ }
1708
+ .btn-loading, .btn-loading:hover {
1709
+ color: transparent;
1710
+ }
1711
+ .btn-loading:before {
1712
+ content: "";
1713
+ border: solid 2px transparent;
1714
+ border-top-color: white;
1715
+ border-left-color: white;
1716
+ -webkit-animation: spin_button 0.8s linear infinite;
1717
+ animation: spin_button 0.8s linear infinite;
1718
+ width: 1rem;
1719
+ height: 1rem;
1720
+ border-radius: 50%;
1721
+ display: inline-block;
1722
+ vertical-align: middle;
1723
+ position: absolute;
1724
+ top: 50%;
1725
+ left: 50%;
1726
+ }
1727
+
1728
+ .inline-spinner {
1729
+ border: solid 2px transparent;
1730
+ border-top-color: currentColor;
1731
+ border-left-color: currentColor;
1732
+ -webkit-animation: spin 0.8s linear infinite;
1733
+ animation: spin 0.8s linear infinite;
1734
+ width: 1.5rem;
1735
+ height: 1.5rem;
1736
+ border-radius: 50%;
1737
+ display: inline-block;
1738
+ }
1739
+ .inline-spinner.lg {
1740
+ width: 5rem;
1741
+ height: 5rem;
1742
+ }
1743
+
1744
+ .position-select {
1745
+ position: relative;
1746
+ }
1747
+ .position-select .form-control {
1748
+ overflow: auto;
1749
+ height: auto;
1750
+ resize: vertical;
1751
+ padding: 1rem;
1752
+ border: 1px solid #ddd;
1753
+ border-radius: 0.25rem;
1754
+ position: relative;
1755
+ width: 100%;
1756
+ -webkit-box-sizing: border-box;
1757
+ box-sizing: border-box;
1758
+ -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1759
+ transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1760
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
1761
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
1762
+ }
1763
+ .position-select .form-control.form-control:focus {
1764
+ color: #495057;
1765
+ background-color: #fff;
1766
+ border-color: #76ecc7;
1767
+ outline: 0;
1768
+ border-radius: 0.25rem;
1769
+ outline: 0;
1770
+ -webkit-box-shadow: 0 0 0 0.2rem rgba(28, 198, 145, 0.25);
1771
+ box-shadow: 0 0 0 0.2rem rgba(28, 198, 145, 0.25);
1772
+ }
1773
+ .position-select .overlaybox {
1774
+ display: none;
1775
+ -webkit-box-flex: 0;
1776
+ -ms-flex: 0 0 100%;
1777
+ flex: 0 0 100%;
1778
+ width: 100%;
1779
+ padding: 1rem;
1780
+ }
1781
+ .position-select .position-select-radio {
1782
+ -webkit-appearance: none;
1783
+ -moz-appearance: none;
1784
+ appearance: none;
1785
+ margin: 0;
1786
+ border: 0;
1787
+ padding: 0;
1788
+ outline: 0;
1789
+ background: none;
1790
+ width: 0;
1791
+ height: 0;
1792
+ opacity: 0;
1793
+ visibility: 0;
1794
+ position: absolute;
1795
+ }
1796
+ .position-select .position-select-radio + label {
1797
+ display: block;
1798
+ cursor: pointer;
1799
+ margin: 0;
1800
+ }
1801
+ .position-select:before {
1802
+ content: "";
1803
+ display: block;
1804
+ width: 150px;
1805
+ height: 90px;
1806
+ }
1807
+ .position-select > div {
1808
+ border: 1px solid rgba(0, 0, 0, 0.1);
1809
+ -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, 0.025);
1810
+ box-shadow: 0 2px 1px rgba(0, 0, 0, 0.025);
1811
+ border-radius: 0.25rem;
1812
+ background-color: white;
1813
+ position: absolute;
1814
+ top: 0;
1815
+ left: 0;
1816
+ display: -webkit-box;
1817
+ display: -ms-flexbox;
1818
+ display: flex;
1819
+ -ms-flex-wrap: wrap;
1820
+ flex-wrap: wrap;
1821
+ }
1822
+ .position-select > div.open {
1823
+ width: 456px;
1824
+ z-index: 2;
1825
+ -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, 0.025), 0 0 32px rgba(0, 0, 0, 0.05);
1826
+ box-shadow: 0 2px 1px rgba(0, 0, 0, 0.025), 0 0 32px rgba(0, 0, 0, 0.05);
1827
+ }
1828
+ .position-select > div.open .overlaybox {
1829
+ display: block;
1830
+ }
1831
+ @media (max-width: 767px) {
1832
+ .position-select > div.open {
1833
+ width: 300px;
1834
+ display: -webkit-box;
1835
+ display: -ms-flexbox;
1836
+ display: flex;
1837
+ -ms-flex-wrap: wrap;
1838
+ flex-wrap: wrap;
1839
+ }
1840
+ }
1841
+ .position-select > div.open > label {
1842
+ -webkit-box-flex: 0;
1843
+ -ms-flex: 0 0 33.3333333%;
1844
+ flex: 0 0 33.3333333%;
1845
+ max-width: 33.333333%;
1846
+ display: block !important;
1847
+ }
1848
+ .position-select > div.open > label:hover {
1849
+ background-color: rgba(0, 0, 0, 0.025);
1850
+ }
1851
+ .position-select > div.open > label:not(:last-of-type) {
1852
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1853
+ }
1854
+ .position-select > div.open > .position-select-radio:checked + label {
1855
+ -webkit-box-shadow: inset 0 0 0 1px #1cc691, inset 0 0 0 4px #c9f1e5;
1856
+ box-shadow: inset 0 0 0 1px #1cc691, inset 0 0 0 4px #c9f1e5;
1857
+ }
1858
+ .position-select > div:not(.open) {
1859
+ width: 148px;
1860
+ }
1861
+ .position-select > div:not(.open) .position-select-radio + label {
1862
+ padding-right: 1.5rem;
1863
+ }
1864
+ .position-select > div:not(.open) .position-select-radio + label:after {
1865
+ pointer-events: none;
1866
+ display: inline-block;
1867
+ width: 0;
1868
+ height: 0;
1869
+ margin-left: 0.25em;
1870
+ vertical-align: 0.25em;
1871
+ content: "";
1872
+ border-top: 0.25rem solid;
1873
+ border-right: 0.25rem solid transparent;
1874
+ border-bottom: 0;
1875
+ border-left: 0.25rem solid transparent;
1876
+ position: absolute;
1877
+ top: 50%;
1878
+ right: 0.75rem;
1879
+ -webkit-transform: translateY(-50%);
1880
+ transform: translateY(-50%);
1881
+ opacity: 0.5;
1882
+ }
1883
+ .position-select > div:not(.open) > .position-select-radio:checked + label {
1884
+ -webkit-box-ordinal-group: 0;
1885
+ -ms-flex-order: -1;
1886
+ order: -1;
1887
+ }
1888
+ .position-select > div:not(.open):hover {
1889
+ background-color: rgba(0, 0, 0, 0.025);
1890
+ }
1891
+ .position-select > div > .position-select-radio:not(:checked) + label {
1892
+ display: none;
1893
+ }
1894
+ .position-select > div > .position-select-radio + label {
1895
+ width: 100%;
1896
+ -webkit-transition: display 0.4s ease 0.1s;
1897
+ transition: display 0.4s ease 0.1s;
1898
+ }
1899
+ .position-select > div > .position-select-radio + label > div {
1900
+ display: -webkit-box;
1901
+ display: -ms-flexbox;
1902
+ display: flex;
1903
+ -webkit-box-align: center;
1904
+ -ms-flex-align: center;
1905
+ align-items: center;
1906
+ padding: 0.5rem;
1907
+ position: relative;
1908
+ }
1909
+ .position-select > div > .position-select-radio + label > div > div {
1910
+ -webkit-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
1911
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
1912
+ border-radius: 0.25rem;
1913
+ overflow: hidden;
1914
+ background-color: rgba(0, 0, 0, 0.05);
1915
+ position: relative;
1916
+ display: -webkit-box;
1917
+ display: -ms-flexbox;
1918
+ display: flex;
1919
+ width: 100%;
1920
+ }
1921
+ .position-select > div > .position-select-radio + label > div > div:after {
1922
+ padding-bottom: 65%;
1923
+ content: "";
1924
+ }
1925
+ .position-select > div > .position-select-radio + label > div > div > span {
1926
+ background-color: rgba(0, 0, 0, 0.45);
1927
+ height: 20px;
1928
+ }
1929
+ .position-select > div > .position-select-radio + label > div > div.center {
1930
+ -webkit-box-align: center !important;
1931
+ -ms-flex-align: center !important;
1932
+ align-items: center !important;
1933
+ -webkit-box-pack: center !important;
1934
+ -ms-flex-pack: center !important;
1935
+ justify-content: center !important;
1936
+ }
1937
+ .position-select > div > .position-select-radio + label > div > div.top {
1938
+ -webkit-box-align: start !important;
1939
+ -ms-flex-align: start !important;
1940
+ align-items: flex-start !important;
1941
+ }
1942
+ .position-select > div > .position-select-radio + label > div > div.bottom {
1943
+ -webkit-box-align: end !important;
1944
+ -ms-flex-align: end !important;
1945
+ align-items: flex-end !important;
1946
+ }
1947
+ .position-select > div > .position-select-radio + label > div > div.left {
1948
+ -webkit-box-pack: start !important;
1949
+ -ms-flex-pack: start !important;
1950
+ justify-content: flex-start !important;
1951
+ }
1952
+ .position-select > div > .position-select-radio + label > div > div.right {
1953
+ -webkit-box-pack: end !important;
1954
+ -ms-flex-pack: end !important;
1955
+ justify-content: flex-end !important;
1956
+ }
1957
+ .position-select > div > .position-select-radio + label > div > div.full span {
1958
+ width: 100%;
1959
+ }
1960
+ .position-select > div > .position-select-radio + label > div > div.float span {
1961
+ width: 30px;
1962
+ margin: 0.5rem;
1963
+ border-radius: 0.25rem;
1964
+ }
1965
+ .position-select > div > .position-select-radio + label > div > div.top.center span, .position-select > div > .position-select-radio + label > div > div.bottom.center span {
1966
+ width: 60px;
1967
+ }
1968
+
1969
+ .list_radar {
1970
+ display: -webkit-box;
1971
+ display: -ms-flexbox;
1972
+ display: flex;
1973
+ -webkit-box-align: center;
1974
+ -ms-flex-align: center;
1975
+ align-items: center;
1976
+ -webkit-box-pack: justify;
1977
+ -ms-flex-pack: justify;
1978
+ justify-content: space-between;
1979
+ list-style: none;
1980
+ text-align: center;
1981
+ padding: 0;
1982
+ }
1983
+ @media (max-width: 768px) {
1984
+ .list_radar {
1985
+ display: block;
1986
+ }
1987
+ }
1988
+ .list_radar--block {
1989
+ -webkit-box-orient: vertical;
1990
+ -webkit-box-direction: normal;
1991
+ -ms-flex-direction: column;
1992
+ flex-direction: column;
1993
+ }
1994
+ .list_radar--block .list_radar__item {
1995
+ display: -webkit-box;
1996
+ display: -ms-flexbox;
1997
+ display: flex;
1998
+ -webkit-box-orient: horizontal;
1999
+ -webkit-box-direction: normal;
2000
+ -ms-flex-direction: row;
2001
+ flex-direction: row;
2002
+ text-align: left;
2003
+ -webkit-box-align: start;
2004
+ -ms-flex-align: start;
2005
+ align-items: flex-start;
2006
+ }
2007
+ .list_radar--block .list_radar__item figure {
2008
+ margin-right: 1rem;
2009
+ }
2010
+ .list_radar__item {
2011
+ display: -webkit-box;
2012
+ display: -ms-flexbox;
2013
+ display: flex;
2014
+ -webkit-box-orient: vertical;
2015
+ -webkit-box-direction: normal;
2016
+ -ms-flex-direction: column;
2017
+ flex-direction: column;
2018
+ -webkit-box-align: center;
2019
+ -ms-flex-align: center;
2020
+ align-items: center;
2021
+ }
2022
+ .list_radar__item figure {
2023
+ position: relative;
2024
+ margin: 0;
2025
+ }
2026
+ .list_radar__item figure:after {
2027
+ content: "";
2028
+ position: absolute;
2029
+ width: 2rem;
2030
+ height: 2rem;
2031
+ border-radius: 2rem;
2032
+ top: 0;
2033
+ right: 0;
2034
+ }
2035
+ .list_radar__item--on figure:after {
2036
+ background: #1cc691;
2037
+ background-image: url("../images/white_checkmark.svg");
2038
+ background-position: center;
2039
+ background-repeat: no-repeat;
2040
+ background-size: 0.7rem;
2041
+ }
2042
+ .list_radar__item--off figure:after {
2043
+ background: #cf7463;
2044
+ background-image: url("../images/white_x.svg");
2045
+ background-position: center;
2046
+ background-repeat: no-repeat;
2047
+ background-size: 0.7rem;
2048
+ }
2049
+
2050
+ .circularBar {
2051
+ --progress-bar-stroke-width: 2;
2052
+ --progress-bar-size: 125px;
2053
+ --progress-bar-color: #78bec7;
2054
+ --progress-bar-stroke-dash: 85;
2055
+ --progress-bar-font-size: 2rem;
2056
+ display: inline-block;
2057
+ font-family: sans-serif;
2058
+ position: relative;
2059
+ -webkit-user-select: none;
2060
+ -moz-user-select: none;
2061
+ -ms-user-select: none;
2062
+ user-select: none;
2063
+ }
2064
+ .circularBar.lg {
2065
+ --progress-bar-stroke-width: 1;
2066
+ --progress-bar-size: 150px;
2067
+ --progress-bar-stroke-dash: 84;
2068
+ }
2069
+ .circularBar.sm {
2070
+ --progress-bar-stroke-width: 3;
2071
+ --progress-bar-size: 75px;
2072
+ --progress-bar-stroke-dash: 84;
2073
+ --progress-bar-font-size: 1.25rem;
2074
+ }
2075
+ .circularBar span {
2076
+ position: absolute;
2077
+ top: calc(50% - 2px);
2078
+ left: 50%;
2079
+ -webkit-transform: translate(-50%, -50%);
2080
+ transform: translate(-50%, -50%);
2081
+ font-size: var(--progress-bar-font-size);
2082
+ font-weight: bold;
2083
+ line-height: 0;
2084
+ }
2085
+ .circularBar span b {
2086
+ font-size: 0.65em;
2087
+ }
2088
+ .circularBar svg {
2089
+ height: var(--progress-bar-size);
2090
+ width: var(--progress-bar-size);
2091
+ -webkit-transform: rotate(-90deg);
2092
+ transform: rotate(-90deg);
2093
+ }
2094
+ .circularBar circle {
2095
+ fill: none;
2096
+ stroke-width: var(--progress-bar-stroke-width);
2097
+ }
2098
+ .circularBar .circle1 {
2099
+ stroke: #e2eff0;
2100
+ }
2101
+ .circularBar .circle2 {
2102
+ stroke: currentColor;
2103
+ stroke-dasharray: var(--progress-bar-stroke-dash);
2104
+ stroke-dashoffset: var(--progress-bar-stroke-dash);
2105
+ stroke-linecap: round;
2106
+ -webkit-transition: stroke-dashoffset 1s ease-in-out;
2107
+ transition: stroke-dashoffset 1s ease-in-out;
2108
+ }
2109
+
2110
+ .siteinfo--icon {
2111
+ background-color: rgba(0, 0, 0, 0.05);
2112
+ height: 5rem;
2113
+ width: 5rem;
2114
+ border-radius: 0.25rem;
2115
+ display: -webkit-box;
2116
+ display: -ms-flexbox;
2117
+ display: flex;
2118
+ -webkit-box-pack: center;
2119
+ -ms-flex-pack: center;
2120
+ justify-content: center;
2121
+ margin-right: 1rem;
2122
+ }
2123
+ .siteinfo--icon img {
2124
+ width: 50%;
2125
+ }
2126
+ @media (max-width: 767px) {
2127
+ .siteinfo--icon {
2128
+ margin: 0 auto 1rem auto;
2129
+ }
2130
+ }
2131
+
2132
+ .sitenav {
2133
+ background-color: rgba(0, 0, 0, 0.025);
2134
+ }
2135
+
2136
+ @media (min-width: 768px) {
2137
+ .configure-services-cards {
2138
+ display: -webkit-box;
2139
+ display: -ms-flexbox;
2140
+ display: flex;
2141
+ -ms-flex-wrap: wrap;
2142
+ flex-wrap: wrap;
2143
+ -webkit-box-pack: center;
2144
+ -ms-flex-pack: center;
2145
+ justify-content: center;
2146
+ max-width: 800px;
2147
+ margin: 0 auto;
2148
+ }
2149
+ }
2150
+ .configure-services-cards .service-card {
2151
+ display: -webkit-box;
2152
+ display: -ms-flexbox;
2153
+ display: flex;
2154
+ -webkit-box-orient: vertical;
2155
+ -webkit-box-direction: normal;
2156
+ -ms-flex-direction: column;
2157
+ flex-direction: column;
2158
+ border: 1px solid rgba(151, 151, 151, 0.28);
2159
+ border-radius: 0.35rem;
2160
+ margin: 0.5rem;
2161
+ -ms-flex-negative: 0;
2162
+ flex-shrink: 0;
2163
+ -webkit-box-shadow: 0 0 16px rgba(0, 0, 0, 0.06);
2164
+ box-shadow: 0 0 16px rgba(0, 0, 0, 0.06);
2165
+ }
2166
+ @media (min-width: 768px) {
2167
+ .configure-services-cards .service-card {
2168
+ max-width: calc(50% - 1rem);
2169
+ -webkit-box-flex: 0;
2170
+ -ms-flex: 0 0 calc(50% - 1rem);
2171
+ flex: 0 0 calc(50% - 1rem);
2172
+ }
2173
+ }
2174
+
2175
+ .service-on {
2176
+ background-color: rgba(0, 0, 0, 0.04);
2177
+ border-radius: 0.25rem;
2178
+ text-align: center;
2179
+ margin: 1rem;
2180
+ padding: 1rem;
2181
+ white-space: nowrap;
2182
+ overflow: hidden;
2183
+ text-overflow: ellipsis;
2184
+ }
2185
+ .service-on li {
2186
+ display: inline;
2187
+ margin: 0;
2188
+ }
2189
+
2190
+ .iubenda-consent-forms table {
2191
+ border: 1px solid #c3c4c7;
2192
+ }
2193
+
2194
+ .consent-forms-tabs {
2195
+ display: -webkit-box;
2196
+ display: -ms-flexbox;
2197
+ display: flex;
2198
+ }
2199
+ .consent-forms-tabs li {
2200
+ margin-right: 0.5rem;
2201
+ }
2202
+ .consent-forms-tabs--current {
2203
+ font-weight: bold;
2204
+ }
2205
+
2206
+ /* CUSTOME SETTINGS TABS*/
2207
+ .custom-scripts {
2208
+ border: 1px solid rgba(0, 0, 0, 0.2);
2209
+ border-radius: 0.35rem;
2210
+ }
2211
+ .custom-scripts .tabs__nav {
2212
+ display: -webkit-box;
2213
+ display: -ms-flexbox;
2214
+ display: flex;
2215
+ overflow-x: auto;
2216
+ overflow-y: hidden;
2217
+ margin: 0;
2218
+ padding: 0;
2219
+ list-style: none;
2220
+ font-size: 0.95rem;
2221
+ }
2222
+ .custom-scripts .tabs__nav li {
2223
+ -webkit-box-flex: 1;
2224
+ -ms-flex: 1;
2225
+ flex: 1;
2226
+ text-align: center;
2227
+ padding: 0.75rem 1rem;
2228
+ white-space: nowrap;
2229
+ border: 1px solid transparent;
2230
+ border-bottom-color: rgba(0, 0, 0, 0.2);
2231
+ border-right-color: rgba(0, 0, 0, 0.05);
2232
+ }
2233
+ .custom-scripts .tabs__nav li:last-of-type {
2234
+ border-right-color: transparent;
2235
+ }
2236
+ .custom-scripts .tabs__nav li.active {
2237
+ margin: 0 -1px;
2238
+ font-weight: bold;
2239
+ border-bottom-color: transparent;
2240
+ border-left-color: rgba(0, 0, 0, 0.2);
2241
+ border-right-color: rgba(0, 0, 0, 0.2);
2242
+ }
2243
+ .custom-scripts .tabs__nav li.active:first-of-type {
2244
+ border-left-color: transparent;
2245
+ }
2246
+ .custom-scripts .tabs__nav li.active:last-of-type {
2247
+ border-right-color: transparent;
2248
+ }
2249
+
2250
+ .modalSync img {
2251
+ width: 13rem;
2252
+ height: auto;
2253
+ }
2254
+
2255
+ .modalAlmostThere img {
2256
+ width: 90%;
2257
+ height: auto;
2258
+ margin-right: auto;
2259
+ margin-left: auto;
2260
+ }
2261
+
2262
+ .tooltip-icon {
2263
+ width: 1.25rem;
2264
+ height: 1.25rem;
2265
+ display: -webkit-box;
2266
+ display: -ms-flexbox;
2267
+ display: flex;
2268
+ place-items: center;
2269
+ line-height: 0.25rem;
2270
+ background-color: #c8c8c8;
2271
+ color: #fff;
2272
+ border-radius: 50%;
2273
+ font-size: 0.75rem;
2274
+ display: -webkit-inline-box;
2275
+ display: -ms-inline-flexbox;
2276
+ display: inline-flex;
2277
+ -webkit-box-pack: center;
2278
+ -ms-flex-pack: center;
2279
+ justify-content: center;
2280
+ font-weight: bold;
2281
+ }
2282
+
2283
+ .steps {
2284
+ border-radius: 50%;
2285
+ border: 1px solid #979797;
2286
+ margin: 0;
2287
+ width: 2rem;
2288
+ height: 2rem;
2289
+ display: -webkit-box;
2290
+ display: -ms-flexbox;
2291
+ display: flex;
2292
+ -webkit-box-pack: center;
2293
+ -ms-flex-pack: center;
2294
+ justify-content: center;
2295
+ -webkit-box-align: center;
2296
+ -ms-flex-align: center;
2297
+ align-items: center;
2298
+ }
2299
+
2300
+ .main-box {
2301
+ width: 90%;
2302
+ max-width: 1140px;
2303
+ margin: 0 auto;
2304
+ border: 1px solid rgba(151, 151, 151, 0.28);
2305
+ border-radius: 0.4rem;
2306
+ background: #fff;
2307
+ }
2308
+ .main-box__bg {
2309
+ background: #fff;
2310
+ background-image: url("../images/welcome_screen_bg.svg");
2311
+ background-position: 97% -14%;
2312
+ background-repeat: no-repeat;
2313
+ }
2314
+
2315
+ .subOptions {
2316
+ border-left: 1px solid rgba(0, 0, 0, 0.1);
2317
+ padding: 0.5rem 0 0.5rem 1.5rem;
2318
+ margin-left: 1rem;
2319
+ }
2320
+
2321
+ .link-helper {
2322
+ display: -webkit-inline-box;
2323
+ display: -ms-inline-flexbox;
2324
+ display: inline-flex;
2325
+ -webkit-box-align: center;
2326
+ -ms-flex-align: center;
2327
+ align-items: center;
2328
+ }
2329
+ .link-helper:hover .link-helper__label {
2330
+ text-decoration: underline;
2331
+ }
2332
+ .link-helper:hover .tooltip-icon {
2333
+ color: currentColor;
2334
+ }
2335
+
2336
+ .link:hover {
2337
+ text-decoration: underline;
2338
+ }
2339
+
2340
+ .link-underline {
2341
+ text-decoration: underline;
2342
+ }
2343
+
2344
+ .link-underline-dashed {
2345
+ text-decoration: underline;
2346
+ -webkit-text-decoration-style: dashed;
2347
+ text-decoration-style: dashed;
2348
+ }
2349
+ .link-underline-dashed:hover {
2350
+ -webkit-text-decoration-style: solid;
2351
+ text-decoration-style: solid;
2352
+ }
2353
+
2354
+ .hidden {
2355
+ display: none;
2356
+ }
2357
+
2358
+ @media (max-width: 767px) {
2359
+ .scrollable {
2360
+ overflow-x: auto;
2361
+ }
2362
+ }
2363
+ .inactive {
2364
+ pointer-events: none;
2365
+ opacity: 0.6;
2366
+ }
2367
+
2368
+ .services-list li:not(:last-of-type) {
2369
+ margin-right: 1rem;
2370
+ }
2371
+
2372
+ .rounded {
2373
+ border-radius: 0.25rem;
2374
+ }
2375
+
2376
+ .border-1 {
2377
+ border: 1px solid;
2378
+ }
2379
+ #iubenda-header {
2380
+ margin-bottom: 30px;
2381
+ }
2382
+ .iubenda-notice {
2383
+ border-left-color: #1CC691;
2384
+ padding-left: 0;
2385
+ display: flex;
2386
+ justify-content: flex-start;
2387
+ align-items: center;
2388
+ }
2389
+ .iubenda-notice::before {
2390
+ display: inline-block;
2391
+ content: '';
2392
+ height: 49px;
2393
+ width: 22px;
2394
+ margin: 1em 2em;
2395
+ background-size: contain;
2396
+ background-position: center center;
2397
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMjFweCIgaGVpZ2h0PSI0OTBweCIgdmlld0JveD0iMCAwIDIyMSA0OTAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+aXViZW5kYSB2ZWN0b3IgbG9nb192M19vbmx5X2lfZ3JlZW48L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJpdWJlbmRhLXZlY3Rvci1sb2dvX3YzX29ubHlfaV9ncmVlbiIgZmlsbD0iIzFDQzY5MSIgZmlsbC1ydWxlPSJub256ZXJvIj4gICAgICAgICAgICA8cGF0aCBkPSJNMjIwLjYsMTA4LjQgQzIyMC42LDEzNSAyMTAuOCwxNTkuMyAxOTQuNSwxNzguMSBMMjE3LjksNDg5LjQgTDguNSw0ODkuNCBMMzEuMiwxODMuNSBDMTEuOSwxNjQuMiAwLDEzNy43IDAsMTA4LjQgQzAsNDguNyA0OS40LDAuNCAxMTAuMywwLjQgQzE3MS4yLDAuNCAyMjAuNiw0OC43IDIyMC42LDEwOC40IFogTTExMC4zLDEzMyBDMTI1LDEzMyAxMzYuOCwxMjEuMiAxMzYuOCwxMDYuNyBDMTM2LjgsOTIuMiAxMjQuOSw4MC41IDExMC4zLDgwLjUgQzk1LjYsODAuNSA4My44LDkyLjMgODMuOCwxMDYuNyBDODMuOCwxMjEuMyA5NS42LDEzMyAxMTAuMywxMzMgWiBNMTMxLjIsMjI3IEw5NC45LDI2My4zIEw5NC45LDQwMy44IEwxMzEuMiw0MDMuOCBMMTMxLjIsMjI3IFoiIGlkPSJTaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);
2398
+ }
2399
+ .iubenda-notice .notice-question {
2400
+ margin-bottom: 5px;
2401
+ display: block;
2402
+ }
2403
+ .iubenda-notice .notice-reply {
2404
+ margin-top: 0;
2405
+ }
2406
+ .iubenda-notice .step-2 {
2407
+ display: none;
2408
+ }
2409
+ .iubenda-notice .reply-yes {
2410
+ margin-right: 10px;
2411
+ }
2412
+ .iubenda-notice .reply-yes:before,
2413
+ .iubenda-notice .reply-no:before {
2414
+ font-family: dashicons;
2415
+ display: inline-block;
2416
+ line-height: 1;
2417
+ font-weight: 400;
2418
+ font-style: normal;
2419
+ speak: none;
2420
+ text-decoration: inherit;
2421
+ text-transform: none;
2422
+ text-rendering: auto;
2423
+ -webkit-font-smoothing: antialiased;
2424
+ -moz-osx-font-smoothing: grayscale;
2425
+ width: 20px;
2426
+ height: 20px;
2427
+ font-size: 20px;
2428
+ vertical-align: top;
2429
+ text-align: center;
2430
+ transition: color .1s ease-in;
2431
+ text-decoration: none;
2432
+ }
2433
+ .iubenda-notice .reply-yes:before {
2434
+ content: "\f147";
2435
+ }
2436
+ .iubenda-notice .reply-no:before {
2437
+ content: "\f335";
2438
+ }
assets/fonts/HKGrotesk-Bold.eot ADDED
Binary file
assets/fonts/HKGrotesk-Bold.woff ADDED
Binary file
assets/fonts/HKGrotesk-Bold.woff2 ADDED
Binary file
assets/fonts/HKGrotesk-Regular.eot ADDED
Binary file
assets/fonts/HKGrotesk-Regular.woff ADDED
Binary file
assets/fonts/HKGrotesk-Regular.woff2 ADDED
Binary file
assets/images/banner_failure.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="45" viewBox="0 0 45 45" width="45" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke="#cf7463"><circle cx="22.5" cy="22.5" r="21.5"/><g stroke-linecap="round" stroke-linejoin="round"><path d="m22.5 13.5v11"/><path d="m22.5 28.5v2"/></g></g></svg>
assets/images/banner_success.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="45" viewBox="0 0 45 45" width="45" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke="#1cc691" transform="translate(1 1)"><circle cx="21.5" cy="21.5" r="21.5"/><path d="m11 21.1543779 7.8986384 7.8456221 15.1013616-15"/></g></svg>
assets/images/checkboxes/button_style_dark.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="38" viewBox="0 0 194 38" width="194" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="#454141" height="36" rx="6" stroke="#000" stroke-opacity=".233894" stroke-width="1.5" width="192" x=".75" y=".75"/><g fill="#1cc691" transform="translate(15 8)"><circle cx="5.328" cy="5.328" r="5.328"/><path d="m3.33 1.11h3.996l2.30052444 19.536h-8.59704888z"/></g><text fill="#fff" font-family="HelveticaNeue-Bold, Helvetica Neue" font-size="19.5" font-weight="bold"><tspan x="37.5" y="25">Privacy policy</tspan></text></g></svg>
assets/images/checkboxes/button_style_light.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="38" viewBox="0 0 194 38" width="194" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="#fff" height="36" rx="6" stroke="#979797" stroke-width="1.5" width="192" x=".75" y=".75"/><g fill="#1cc691" transform="translate(15 8)"><circle cx="5.328" cy="5.328" r="5.328"/><path d="m3.33 1.11h3.996l2.30052444 19.536h-8.59704888z"/></g><text fill="#3f3e3e" font-family="HelveticaNeue-Bold, Helvetica Neue" font-size="19.5" font-weight="bold"><tspan x="38.5" y="25">Privacy policy</tspan></text></g></svg>
assets/images/checkboxes/cons_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="35" viewBox="0 0 34 35" width="34" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke="#7e818d" stroke-width=".94" transform="translate(1.3008 1)"><path d="m0 25.563551v2.1463524c0 2.677675 5.23114681 4.8491035 12.3464727 4.8491035 2.8181842 0 5.3407908-.3406392 7.3598622-.9184546.4732992-.1354482.9189291-.2839292 1.3342109-.4441104"/><path d="m0 18.5826026v3.1113008c0 2.677675 5.23114681 4.8491035 12.3464727 4.8491035 1.8738531 0 3.6170278-.1506007 5.1683914-.4213874" fill="#fff"/><path d="m0 12.6738342v2.5865796c0 2.5989198 5.23114681 4.7064828 12.3464727 4.7064828 7.1153259 0 12.3464728-2.107563 12.3464728-4.7064828v-2.5865796"/><path d="m0 4.56386207v4.70648276c0 2.59891977 5.23114681 4.70648277 12.3464727 4.70648277 7.1153259 0 12.3464728-2.107563 12.3464728-4.70648277v-4.70648276" fill="#ededed"/><path d="m12.3464727 9.41296552c7.1153259 0 12.3464728-2.10756298 12.3464728-4.70648276s-5.2311469-4.70648276-12.3464728-4.70648276c-7.11532589 0-12.3464727 2.10756298-12.3464727 4.70648276s5.23114681 4.70648276 12.3464727 4.70648276z" fill="#ededed"/><circle cx="25.574543" cy="24.972943" fill="#d2ecfe" r="5.721743"/><circle cx="25.574543" cy="24.972943" r="5.721743"/><path d="m27.8577432 25.5710401h-4.3752727l.0314356-2.4064" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -9.497168 28.368937)"/></g></svg>
assets/images/checkboxes/cs_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="36" viewBox="0 0 40 36" width="40" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(1.3008 1)"><g stroke="#7e818d"><path d="m6.24843636 27.2700267h-6.24843636v-27.2700267h36.6976v27.2700267h-6.6176" fill="#fff" stroke-linejoin="round" stroke-width=".94"/><path d="m0 4.8128h36.6976" stroke-linejoin="round" stroke-width=".94"/><path d="m2.4064 2.4064h1.668073" stroke-linejoin="round" stroke-width=".94"/><path d="m5.4144 2.4064h1.668073" stroke-linejoin="round" stroke-width=".94"/><path d="m8.4224 2.4064h1.668073" stroke-linejoin="round" stroke-width=".94"/></g><path d="m1.8048 6.6176h33.088v7.2192h-33.088z" fill="#efefef"/><g stroke="#bdbdbd" stroke-linecap="square" stroke-width=".94" transform="translate(29.4784 9.024)"><path d="m.3008.3008 1.8048 1.8048"/><path d="m.3008.3008 1.8048 1.8048" transform="matrix(1 0 0 -1 0 2.4064)"/></g><g stroke="#7e818d" stroke-width=".94" transform="translate(9.6256 16.8448)"><path d="m16.116112 4.099904c-.152656-.261696-.43616-.45804069-.7415447-.50165669-.3270473-.04354331-.6323593.04368869-.8722473.23996069-.3926167.34885531-.894128.523392-1.41752.523392-1.19944 0-2.1808-.98136-2.1808-2.1808 0-.21815269.0436887-.45804069.10904-.65424.0873047-.305312.0436887-.63250469-.10904-.89420069-.1745367-.283504-.4580407-.4580407-.7632073-.523392-.4580407-.065424-.93788939-.10896731-1.4175927-.10896731-4.81964069 0-8.7232 3.90355931-8.7232 8.7232 0 4.8194953 3.90355931 8.7232 8.7232 8.7232 4.8196407 0 8.7232-3.9037047 8.7232-8.7232 0-1.6356-.4580407-3.22765669-1.330288-4.623296z" fill="#d2ecfe" fill-rule="nonzero"/><path d="m16.116112 4.099904c-.152656-.261696-.43616-.45804069-.7415447-.50165669-.3270473-.04354331-.6323593.04368869-.8722473.23996069-.3926167.34885531-.894128.523392-1.41752.523392-1.19944 0-2.1808-.98136-2.1808-2.1808 0-.21815269.0436887-.45804069.10904-.65424.0873047-.305312.0436887-.63250469-.10904-.89420069-.1745367-.283504-.4580407-.4580407-.7632073-.523392-.4580407-.065424-.93788939-.10896731-1.4175927-.10896731-4.81964069 0-8.7232 3.90355931-8.7232 8.7232 0 4.8194953 3.90355931 8.7232 8.7232 8.7232 4.8196407 0 8.7232-3.9037047 8.7232-8.7232 0-1.6356-.4580407-3.22765669-1.330288-4.623296z" fill-rule="nonzero"/><path d="m11.4304 9.6256h-4.8128l.03457912-1.8048" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -3.458874 10.02882)"/></g></g></svg>
assets/images/checkboxes/eu_only_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="28" viewBox="0 0 30 28" width="30" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m4.5 5.5h25.5v18h-25.5z" fill="#bcbcbc" fill-opacity=".1"/><path d="m13.5 7a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm0 10.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5zm4.5-6a.75.75 0 1 0 1.5 0 .75.75 0 0 0 -1.5 0zm-10.5 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0 -1.5 0zm9.182 3.182a.75.75 0 1 0 1.06 1.06.75.75 0 0 0 -1.06-1.06zm-7.425-7.425a.75.75 0 1 0 1.061 1.061.75.75 0 0 0 -1.06-1.06zm1.061 7.425a.75.75 0 1 0 -1.06 1.06.75.75 0 0 0 1.06-1.06zm7.425-7.425a.75.75 0 1 0 -1.061 1.061.75.75 0 0 0 1.06-1.06z" fill="#333"/><g stroke="#333" stroke-linecap="round" stroke-linejoin="round"><path d="m.75 2.5h25.391v18h-25.391z"/><path d="m.75 1v26.027" fill="#d8d8d8"/></g></g></svg>
assets/images/checkboxes/pp_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="41" viewBox="0 0 35 41" width="35" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m19.0034824 25.2672v-3.9895579c0-2.4478154 1.9962574-4.4328421 4.4589176-4.4328421s4.4589176 1.9850267 4.4589176 4.4328421v3.9895579"/><filter id="b" height="158.7%" width="155.4%" x="-27.7%" y="-29.3%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.47" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="2" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><path d="m28.8459487 4.22139661h4.2420513v-.84427932c0-1.86501302-1.5195028-3.37711729-3.393641-3.37711729h-9.3325128" fill="#d8d8d8" stroke="#7e818d" stroke-width=".94"/><path d="m11.9132253 32.0826142h-11.9132253v-28.70549691c0-1.86501302 1.51950277-3.37711729 3.39364103-3.37711729h26.75546587c-2.0404267 0-3.848389 1.45553755-3.848389 3.4826522v10.5300274m0 18.0699346h-5.0904615" fill="#fff" stroke="#7e818d" stroke-width=".94"/><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" stroke-width=".94" xlink:href="#a"/></g><g stroke="#7e818d" stroke-width=".94"><path d="m31.8848 38.0054261c0 .6064128-.4851302 1.0985739-1.08288 1.0985739h-14.07744c-.5977498 0-1.08288-.4921611-1.08288-1.0985739v-10.4364522c0-.6064128.4851302-1.0985739 1.08288-1.0985739h14.07744c.5977498 0 1.08288.4921611 1.08288 1.0985739z" fill="#d2ecfe" stroke-linejoin="round"/><path d="m31.8848 38.0054261c0 .6064128-.4851302 1.0985739-1.08288 1.0985739h-14.07744c-.5977498 0-1.08288-.4921611-1.08288-1.0985739v-10.4364522c0-.6064128.4851302-1.0985739 1.08288-1.0985739h14.07744c.5977498 0 1.08288.4921611 1.08288 1.0985739z" stroke-linejoin="round"/><path d="m23.2580881 29.5403052c-.7465194.1832499-1.3540535.8174054-1.535682 1.6020479-.2432242 1.0484113.2226923 2.0007552.9876378 2.4705412v1.9741006c0 .613054.4717076 1.1106051 1.0529187 1.1106051.5817376 0 1.0529187-.4975511 1.0529187-1.1106051v-1.9741006c.6270131-.3848247 1.0529187-1.0933908 1.0529187-1.9130174 0-1.4004731-1.2287561-2.4983062-2.6107119-2.1595717z" fill="#fff" stroke-linejoin="round"/><path d="m4.242051 8.442793h17.816616"/><path d="m4.242051 11.819911h17.816616"/><path d="m4.242051 15.197028h11.029334"/><path d="m6.787282 25.32838h4.242051"/><path d="m4.242051 25.32838h1.696821"/></g></g></svg>
assets/images/checkboxes/tc_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="40" viewBox="0 0 35 40" width="35" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke="#7e818d" stroke-width=".94" transform="translate(1 1)"><path d="m28.8459487 4.22139661h4.2420513v-.84427932c0-1.86501302-1.5195028-3.37711729-3.393641-3.37711729h-9.3325128" fill="#d8d8d8"/><path d="m11.9985445 32.0826142h-11.9985445v-28.70549691c0-1.86501302 1.51950277-3.37711729 3.39364103-3.37711729h26.75546587c-2.0404267 0-3.848389 1.45553755-3.848389 3.4826522v10.5300274m0 18.0699346h-5.0904615" fill="#fff"/><path d="m4.242051 8.442793h17.816616"/><path d="m4.242051 11.819911h17.816616"/><path d="m4.242051 15.197028h11.029334"/><path d="m6.787282 25.32838h4.242051"/><path d="m4.242051 25.32838h1.696821"/><g stroke-linejoin="round"><path d="m23.4672761 17.4464-8.4272761 3.5583699v8.4511286c0 3.9733649 7.9547352 8.3199138 8.4224 8.4449015.4681081-.1249877 8.4224-4.7753325 8.4224-8.0001052v-8.8959249z" fill="#d2ecfe"/><path d="m23.4672761 17.4464-8.4272761 3.5583699v8.4511286c0 3.9733649 7.9547352 8.3199138 8.4224 8.4449015.4681081-.1249877 8.4224-4.7753325 8.4224-8.0001052v-8.8959249z"/><path d="m19.8528 28.0680483 2.4691351 2.6135517 5.9532649-7.2192"/></g></g></svg>
assets/images/checkboxes/worldwide.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="30" viewBox="0 0 32 30" width="32" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(1 1.632)"><circle cx="18" cy="14.368" fill="#bcbcbc" fill-opacity=".1" r="13"/><g stroke="#333"><circle cx="13" cy="13.368" r="13"/><path d="m17.545 4.368h-3.409l-2.045 1.715v1.143h-2.046l-2.045 1.142v1.143h3.409l.682.572h1.364l1.363 1.143h2.727l1.364 1.142 1.364-1.142h2.727m-7.5 4.017h-1.25l-1.875-1.875h-2.5l-1.875 1.875 1.25 3.125h1.875l1.25 1.25v3.125l.625.625h1.25l1.875-1.875v-1.875l1.875-1.875z"/></g></g></svg>
assets/images/iubenda_logo.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="170" height="62" viewBox="0 0 170 62"><title>Group 56</title><g fill="none" fill-rule="evenodd"><path fill="#1CC691" d="M13.665 0c7.55 0 13.666 6.093 13.666 13.615 0 3.35-1.213 6.416-3.233 8.79L27 61.64H1.055l2.813-38.55A13.509 13.509 0 0 1 0 13.616C0 6.093 6.116 0 13.665 0zm2.595 28.552l-4.497 4.498v17.795h4.497V28.552zM13.665 10.1c-1.815 0-3.286 1.481-3.286 3.309 0 1.827 1.471 3.308 3.286 3.308s3.287-1.481 3.287-3.308c0-1.828-1.472-3.309-3.287-3.309z"/><g fill="#5A5A5A" transform="translate(43.238 18.109)"><path d="M23.293 24.622c-1.754 1.903-3.474 3.101-4.395 3.593a6.13 6.13 0 01-2.926.738c-1.146 0-2.14-.332-2.98-.996a5.148 5.148 0 01-1.754-2.561c-.327-1.044-.491-2.521-.491-4.43v-7.494c0-.013 0-.025.002-.038v-1.103c0-.217 0-1.164-.588-1.455-.089-.045-.248-.08-.478-.106a.347.347 0 01-.307-.344l-.007-1a.347.347 0 01.344-.35h3.764c.541 0 .98.442.98.987v5.134h-.003v6.35c0 1.91.331 3.163.994 3.76.662.596 1.462.894 2.4.894.64 0 1.366-.201 2.177-.604.81-.402 2.157-1.17 3.273-2.301l.003-.968h.002l.012-9.115v-.882c0-.217 0-1.164-.58-1.455-.088-.044-.242-.08-.463-.105a.347.347 0 01-.306-.344l-.007-1a.347.347 0 01.344-.351H26.012c.536 0 .97.437.97.976v3.307a.55.55 0 01.004.068v6.823c0 1.58-.001 3.035-.004 4.363h-.004l.004.513c0 .217-.025 1.256.557 1.548.088.045.243.08.466.106.174.02.305.167.306.343l.007 1.004a.347.347 0 01-.344.35H24.253a.972.972 0 01-.968-.975V27.5l.006-1.859h-.004l.006-1.018zM30.778 5.88h-.002V3.31c0-.208 0-1.118-.565-1.399a1.13 1.13 0 00-.226-.08.348.348 0 01-.261-.335L29.717.53a.347.347 0 01.344-.35H33.403c.521 0 .943.424.943.949v.001L34.34 6.07v6.344c1.913-2.642 3.977-3.963 6.192-3.963 2.028 0 3.797.86 5.307 2.581 1.51 1.721 2.266 4.074 2.266 7.06 0 3.484-1.165 6.29-3.495 8.419-2 1.828-4.229 2.742-6.688 2.742-1.151 0-2.32-.207-3.506-.621-1.015-.355-2.047-.86-3.099-1.517a1.145 1.145 0 01-.536-.971V7.234l-.002-1.354zm3.894 19.956c.63.562 1.278.997 1.943 1.307a5.654 5.654 0 002.406.546c1.309 0 2.528-.714 3.657-2.142 1.129-1.429 1.693-3.507 1.693-6.235 0-2.513-.564-4.445-1.693-5.795-1.13-1.35-2.413-2.024-3.851-2.024-.763 0-1.525.193-2.287.578-.505.251-1.132.722-1.88 1.413a.996.996 0 00-.32.732V25.09c0 .285.12.556.332.745zM73.484 22.502V13.96c1.692-1.827 4.132-2.74 5.84-2.74 1.104 0 1.89.396 2.356 1.19.466.795.699 2.07.699 3.826v6.268h-.006v4.992c0 .524.421.948.941.948h2.62c.217 0 .493-.003.826-.009a.347.347 0 00.34-.35l-.006-.962a.348.348 0 00-.294-.342c-.13-.02-.23-.048-.303-.084-.564-.283-.564-1.202-.564-1.412V22.69h-.003v-6.793c0-1.742-.158-3.035-.474-3.879-.459-1.208-1.076-2.076-1.85-2.603-.775-.527-1.7-.79-2.777-.79-1.969 0-4.772 1.204-6.931 3.614l-.02.022a.225.225 0 01-.394-.152v-.761s0 .002-.002.003v-1.39a.936.936 0 00-.932-.939H69.266a.347.347 0 00-.343.35l.006.966a.348.348 0 00.257.334c.08.022.151.048.212.078.558.28.558 1.19.558 1.397v.045c-.005.193-.004.405 0 .62v1.9h.003c-.01.704-.026 1.483-.026 2.26v8.304c0 .209 0 1.126-.563 1.408a1.412 1.412 0 01-.418.1.347.347 0 00-.303.343l-.006.949a.347.347 0 00.343.35h3.559c.518 0 .939-.423.939-.945v-4.98zM123.322 23.683v1.296a17.107 17.107 0 00.01.27c.04.594.225.974.553 1.138.067.034.154.063.259.086a.348.348 0 01.273.338l.006.968a.347.347 0 01-.344.35H120.71a.942.942 0 01-.94-.945v-1.846c-2.028 1.585-3.301 2.501-3.819 2.749a5.785 5.785 0 01-2.482.545c-1.367 0-2.493-.473-3.378-1.418-.884-.945-1.327-2.189-1.327-3.73 0-.975.216-1.819.648-2.532.59-.988 1.475-2.118 3.075-2.792 1.6-.674 2.968-.828 7.283-1.815v-1.757c-.017-1.866-.314-3.77-3.388-3.582-2.154.132-4.134.817-5.94 2.056a.345.345 0 01-.542-.287v-1.14c0-.6.115-.994.344-1.18 1.271-1.03 4.41-2.26 7.47-2.052 3.397.23 4.618 1.656 5.23 3.831.186.664.388 1.15.388 3.084v5.962c0 .837-.003 1.638-.01 2.403zm-3.552-5.838c-2.672.552-4.21.895-4.612 1.03-1.49.503-2.671 1.076-2.768 3.583-.04 1.046.31 1.916.928 2.607.619.69 1.33 1.036 2.137 1.036 1 0 2.29-.76 3.868-1.979a1.15 1.15 0 00.447-.91v-5.367zM105.585 25.185v.009c0 .203 0 1.092.546 1.366.06.03.133.056.217.078a.348.348 0 01.263.335l.005.927a.347.347 0 01-.343.35h-3.222a.914.914 0 01-.91-.917v-.899l-.01.004c-.935 1.003-1.849 1.722-2.742 2.16a6.486 6.486 0 01-2.89.655c-2.093 0-3.921-.9-5.484-2.697-1.563-1.798-2.345-4.108-2.345-6.93 0-2.823.865-5.405 2.596-7.747 1.73-2.343 3.957-3.514 6.678-3.514 1.689 0 3.085.552 4.187 1.655V3.14c0-.209 0-1.122-.547-1.404a1.097 1.097 0 00-.19-.075.348.348 0 01-.25-.332L101.14.35a.347.347 0 01.343-.35h3.19c.505 0 .914.412.914.92v24.265zm-5.872-13.75c-.69-.408-1.364-.613-2.02-.613-1.228 0-2.347.531-3.35 1.566-1.103 1.14-1.842 2.674-1.842 5.54 0 2.894.614 5.11 1.843 6.65 1.228 1.541 2.595 2.311 4.103 2.311 1.076 0 2.121-.468 3.137-1.403a1.7 1.7 0 00.547-1.25v-8.55c0-1.748-.92-3.366-2.418-4.251zM52.081 26.673c-1.562-1.785-2.374-4.639-2.374-7.47 0-2.99.923-5.725 2.599-7.7 1.745-2.057 4.132-3.145 6.901-3.145 2.348 0 4.138.807 5.32 2.398 1.102 1.484 1.66 3.608 1.66 6.313 0 .327-.019.783-.058 1.368a.694.694 0 01-.69.65H53.413a.2.2 0 00-.2.203c.042 2.222.743 4.1 2.03 5.432 1.264 1.309 2.998 2 5.014 2 1.504 0 3.476-.396 4.998-.862a.405.405 0 01.51.494l-.205.792c-.075.29-.272.531-.54.662-1.502.738-3.753 1.445-6.065 1.445-2.809 0-5.218-.689-6.874-2.58zm.998-10.159a.173.173 0 00.054.142c.038.038.09.06.146.06h9.658c.103 0 .19-.074.2-.17.11-1.018.153-2.863-1.352-4.431-.743-.774-1.64-1.166-3.365-1.166-3.008 0-5.007 2.991-5.341 5.565z"/><path d="M82.386 22.618v2.619c0 .212 0 1.14-.56 1.426a.533.533 0 01-.065.028.982.982 0 00-.655.92.812.812 0 00.813.817h3.068a.935.935 0 00.935-.935v-5.066l-3.536.19zM73.486 22.618v2.619c0 .212 0 1.14.56 1.426.019.01.04.019.064.028.39.138.652.505.655.92a.812.812 0 01-.812.817h-3.069a.935.935 0 01-.935-.936v-5.065l3.537.19zM5.062 10.612v15.2c0 .397.226.76.582.934.357.175.583.537.583.934v.294c0 .321-.26.582-.583.582H.577A.577.577 0 010 27.98v-.306c0-.393.223-.753.577-.928.353-.174.576-.534.576-.928V11.144a.374.374 0 00-.374-.374.374.374 0 01-.374-.374v-.484c0-.473.384-.858.858-.858h2.24c.861 0 1.559.698 1.559 1.558z"/><ellipse cx="3.114" cy="2.786" rx="2.422" ry="2.438"/></g></g></svg>
assets/images/list_radar_cons.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="89" viewBox="0 0 89 89" width="89" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m59 25h18"/><filter id="b" height="100%" width="105.6%" x="-2.8%" y="-50%"><feMorphology in="SourceAlpha" operator="dilate" radius="0.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="1" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/></filter><path id="c" d="m77 32h-18"/><filter id="d" height="100%" width="105.6%" x="-2.8%" y="-50%"><feMorphology in="SourceAlpha" operator="dilate" radius="0.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="1" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(1 16)"><path d="m65 47v-39.80729931c0-.56033171-.2128492-1.12009801-.6329609-1.54868674-.426257-.42858874-.9798883-.64401395-1.5340782-.64401395-22.3509384 0-39.1141422 0-50.2896114 0" stroke="#7e818d"/><path d="m14 47h47v-37h-47" fill="#e7e7e7"/><path d="m18.8838533 47h41.1161467v-37h-47.0250335m-2.5263518 0h-5.4486147" stroke="#7e818d"/><path d="m70 47v3.5009062c0 .896522-.3195867 1.793648-.96046 2.4757055-.6386067.6790369-1.4789383 1.0233883-2.3243698 1.0233883-18.4816432 0-36.1908559 0-48.4812095 0m-3.8044798 0c-1.606173 0-3.0874112 0-4.4294809 0" stroke="#7e818d"/><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" xlink:href="#a"/><path d="m81 25h4" stroke="#7e818d"/><use fill="#000" filter="url(#d)" xlink:href="#c"/><use stroke="#7e818d" xlink:href="#c"/><path d="m81 32h4" stroke="#7e818d"/><path d="m78.6403901 6.65260873.7192198.69478254-9.807648 10.15260873h-14.5519619v-1h14.127589z" fill="#7e818d" fill-rule="nonzero"/><path d="m87 4.50038399c0 2.484427-2.0140773 4.49961601-4.4988482 4.49961601-2.4855388 0-4.5011518-2.01518901-4.5011518-4.49961601 0-2.48519498 2.015613-4.50038399 4.5011518-4.50038399 2.4847709 0 4.4988482 2.01518901 4.4988482 4.50038399z" stroke="#7e818d"/><path d="m55 39.5v-1h14.5519619l9.807648 10.1526087-.7192198.6947826-9.5128011-9.8473913z" fill="#7e818d" fill-rule="nonzero"/><g stroke="#7e818d"><path d="m87 52.4992321c0-2.4834471-2.0140773-4.4992321-4.4988482-4.4992321-2.4855388 0-4.5011518 2.015785-4.5011518 4.4992321 0 2.4849829 2.015613 4.5007679 4.5011518 4.5007679 2.4847709 0 4.4988482-2.015785 4.4988482-4.5007679z"/><circle cx="36.5" cy="28.5" fill="#fff" r="9.5"/><path d="m41 29h-8l.0574786-4" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -7.466342 37.988379)"/></g></g></svg>
assets/images/list_radar_cs.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="89" viewBox="0 0 89 89" width="89" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(14 16)"><g stroke="#7e818d"><path d="m10.3863636 45.3291667h-10.3863636v-45.3291667h61v45.3291667h-11" fill="#fff" stroke-linejoin="round"/><path d="m0 8h61" stroke-linejoin="round"/><path d="m4 4h2.772727" stroke-linejoin="round"/><path d="m9 4h2.772727" stroke-linejoin="round"/><path d="m14 4h2.772727" stroke-linejoin="round"/></g><path d="m3 11h55v12h-55z" fill="#efefef"/><g stroke="#bdbdbd" stroke-linecap="square" transform="translate(49 15)"><path d="m.5.5 3 3"/><path d="m.5.5 3 3" transform="matrix(1 0 0 -1 0 4)"/></g><g fill-rule="nonzero" transform="translate(16 28)"><path d="m26.78875 6.815c-.25375-.435-.725-.76137083-1.2326208-.83387083-.5436292-.07237917-1.0511292.07262083-1.4498792.39887083-.6526208.57987917-1.48625.87-2.35625.87-1.99375 0-3.625-1.63125-3.625-3.625 0-.36262083.0726208-.76137083.18125-1.0875.1451208-.5075.0726208-1.05137083-.18125-1.48637083-.2901208-.47125-.7613708-.76137084-1.2686292-.87-.7613708-.10875-1.5589916-.18112917-2.3563708-.18112917-8.01137083 0-14.5 6.48862917-14.5 14.5 0 8.0111292 6.48862917 14.5 14.5 14.5 8.0113708 0 14.5-6.4888708 14.5-14.5 0-2.71875-.7613708-5.36512083-2.21125-7.685z" fill="#e7e7e7"/><path d="m26.78875 6.815c-.25375-.435-.725-.76137083-1.2326208-.83387083-.5436292-.07237917-1.0511292.07262083-1.4498792.39887083-.6526208.57987917-1.48625.87-2.35625.87-1.99375 0-3.625-1.63125-3.625-3.625 0-.36262083.0726208-.76137083.18125-1.0875.1451208-.5075.0726208-1.05137083-.18125-1.48637083-.2901208-.47125-.7613708-.76137084-1.2686292-.87-.7613708-.10875-1.5589916-.18112917-2.3563708-.18112917-8.01137083 0-14.5 6.48862917-14.5 14.5 0 8.0111292 6.48862917 14.5 14.5 14.5 8.0113708 0 14.5-6.4888708 14.5-14.5 0-2.71875-.7613708-5.36512083-2.21125-7.685z" stroke="#7e818d"/></g><path d="m35 44h-8l.0574786-3" stroke="#7e818d" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -21.483305 38.928904)"/></g></svg>
assets/images/list_radar_pp.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="89" viewBox="0 0 89 89" width="89" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m31.5882353 42v-6.6315789c0-4.0688422 3.3182471-7.3684211 7.4117647-7.3684211s7.4117647 3.2995789 7.4117647 7.3684211v6.6315789"/><filter id="b" height="150%" width="147.2%" x="-23.6%" y="-25%"><feMorphology in="SourceAlpha" operator="dilate" radius="2" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="2.5" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(17 12)"><path d="m47.9487179 7.01694915h7.0512821v-1.40338983c0-3.10008813-2.5257692-5.61355932-5.6410256-5.61355932h-15.5128206" fill="#d8d8d8" stroke="#7e818d"/><path d="m19.8025686 53.3288136h-19.8025686v-47.71525428c0-3.10008813 2.52576923-5.61355932 5.64102564-5.61355932h44.47384616c-3.3916667 0-6.3969231 2.41944407-6.3969231 5.78898305v17.50337005m0 30.0364605h-8.4615384" fill="#fff" stroke="#7e818d"/><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" xlink:href="#a"/></g><path d="m53 63.173913c0 1.008-.8064 1.826087-1.8 1.826087h-23.4c-.9936 0-1.8-.818087-1.8-1.826087v-17.347826c0-1.008.8064-1.826087 1.8-1.826087h23.4c.9936 0 1.8.818087 1.8 1.826087z" fill="#e7e7e7"/><g stroke="#7e818d"><path d="m53 63.173913c0 1.008-.8064 1.826087-1.8 1.826087h-23.4c-.9936 0-1.8-.818087-1.8-1.826087v-17.347826c0-1.008.8064-1.826087 1.8-1.826087h23.4c.9936 0 1.8.818087 1.8 1.826087z" stroke-linejoin="round"/><path d="m38.6603857 49.102901c-1.2408899.3046041-2.2507537 1.358719-2.5526627 2.6629786-.4042956 1.7427048.3701667 3.3257233 1.641685 4.1066175v3.2814172c0 1.0190393.7840884 1.8460857 1.7501974 1.8460857.966984 0 1.7501973-.8270464 1.7501973-1.8460857v-3.2814172c1.0422425-.6396687 1.7501973-1.8174713 1.7501973-3.1798825 0-2.3279141-2.0424803-4.1527697-4.3396143-3.5897136z" fill="#fff" stroke-linejoin="round"/><path d="m7.051282 14.033898h29.615385"/><path d="m7.051282 19.647458h29.615385"/><path d="m7.051282 25.261017h18.333333"/><path d="m11.282051 42.101695h7.051282"/><path d="m7.051282 42.101695h2.820513"/></g></g></svg>
assets/images/list_radar_tc.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="89" viewBox="0 0 89 89" width="89" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(17 13)"><g stroke="#7e818d"><path d="m47.9487179 7.01694915h7.0512821v-1.40338983c0-3.10008813-2.5257692-5.61355932-5.6410256-5.61355932h-15.5128206" fill="#d8d8d8"/><path d="m19.9443891 53.3288136h-19.9443891v-47.71525428c0-3.10008813 2.52576923-5.61355932 5.64102564-5.61355932h44.47384616c-3.3916667 0-6.3969231 2.41944407-6.3969231 5.78898305v17.50337005m0 30.0364605h-8.4615384" fill="#fff"/><path d="m7.051282 14.033898h29.615385"/><path d="m7.051282 19.647458h29.615385"/><path d="m7.051282 25.261017h18.333333"/><path d="m11.282051 42.101695h7.051282"/><path d="m7.051282 42.101695h2.820513"/></g><path d="m39.0081053 29-14.0081053 5.9148436v14.0477537c0 6.6046623 13.2226316 13.8296438 14 14.0374027.7781053-.2077589 14-7.9377202 14-13.2980472v-14.7871092z" fill="#e7e7e7"/><path d="m39.0081053 29-14.0081053 5.9148436v14.0477537c0 6.6046623 13.2226316 13.8296438 14 14.0374027.7781053-.2077589 14-7.9377202 14-13.2980472v-14.7871092z" stroke="#7e818d" stroke-linejoin="round"/><path d="m33 46.6556654 4.1042805 4.3443346 9.8957195-12" stroke="#7e818d" stroke-linejoin="round"/></g></svg>
assets/images/modals/modal_almost_there.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="124" viewBox="0 0 371 124" width="371" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m23.5995742 40.9132972-6.5269404 6.5531046v25.3627558h6.5269404zm-3.764931-16.9684197c2.6348039 0 4.7696192-2.123861 4.7696192-4.7402544 0-2.6169847-2.1348153-4.7384806-4.7696192-4.7384806-2.6365706 0-4.7713859 2.1214959-4.7713859 4.7384806 0 2.6163934 2.1348153 4.7402544 4.7713859 4.7402544zm19.8328765-4.4434342c0 4.8005645-1.7596768 9.1919664-4.6918825 12.5912084l4.212506 56.1989473h-37.65637636l4.0823559-55.216839c-3.47518497-3.5092191-5.61412274-8.2914541-5.61412274-13.5733167 0-10.77244544 8.87788737-19.5014433 19.8346432-19.5014433 10.9567559 0 19.8328765 8.72899786 19.8328765 19.5014433z"/><filter id="b" height="107.9%" width="117.6%" x="-8.8%" y="-4%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><g stroke="#7e818d"><path d="m151 60.6575186v58.3424814c0 1.656854-1.343146 3-3 3h-145c-1.65685425 0-3-1.343146-3-3v-116c0-1.65685425 1.34314575-3 3-3h145c1.656854 0 3 1.34314575 3 3v27.0786124" stroke-linecap="round" stroke-linejoin="round"/><path d="m12.5 13.5h5" stroke-linecap="round" stroke-linejoin="round"/><path d="m21.5 13.5h5" stroke-linecap="round" stroke-linejoin="round"/><path d="m30.5 13.5h5" stroke-linecap="round" stroke-linejoin="round"/><path d="m.5 26.5h45" stroke-linecap="square"/><path d="m105.5 26.5h45" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="translate(53 14)"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use fill="#1cc691" fill-rule="evenodd" stroke="#7e818d" xlink:href="#a"/></g><rect height="122" rx="3" stroke="#7e818d" width="151" x="218"/><path d="m218.5 26.5h45" stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"/><path d="m323.5 26.5h45" stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"/><rect fill="#fff" height="50" rx="3" stroke="#7e818d" width="136" x="107" y="50"/><g stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"><path d="m153.5 64.5h27" opacity=".468442"/><g transform="translate(136 30.5)"><path d="m10.5 7h29"/><path d="m38.1502072 2.5v9h-9" transform="matrix(.70710678 -.70710678 .70710678 .70710678 4.90617 25.844542)"/><path d="m.5 7h6"/></g><g transform="translate(181 107.795455)"><path d="m7.266667 4.704545h15.466666"/><path d="m22.1855545 1.56818182v6.27272727h-6.2727273" transform="matrix(.70710678 -.70710678 .70710678 .70710678 2.252763 14.847741)"/><path d="m.277778 4.704545h4.444444"/></g><path d="m206.5 64.5h15"/><path d="m185.5 64.5h15"/><path d="m153.5 74.5h33"/><path d="m190.5 74.5h19" opacity=".468442"/><path d="m153.5 79.5h19" opacity=".468442"/><path d="m153.5 84.5h24"/><path d="m181.5 84.5h16" opacity=".648597"/><path d="m153.5 69.5h14"/><path d="m172.5 69.5h14"/></g><g stroke="#7e818d"><circle cx="132" cy="75" fill="#d2ecfe" r="14"/><g stroke-linecap="round" stroke-linejoin="round" transform="translate(123 67)"><path d="m10.719983.803419-3.428571 15.111111"/><path d="m1.76638796 11.9192344.08689792-5.61626249c.01671576-1.0803492.88847004-1.95210348 1.96881924-1.96881924l5.61626251-.08689792" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -4.074819 6.329007)"/><path d="m8.56995939 11.9192344.08689792-5.61626249c.01671576-1.0803492.88847004-1.95210348 1.96881929-1.96881924l5.6162625-.08689792" transform="matrix(-.70710678 -.70710678 -.70710678 .70710678 26.893997 11.139858)"/></g></g><g fill-rule="nonzero" transform="translate(258 25)"><g fill="#676767"><path d="m33 0c-18.1959228 0-33 14.8040772-33 33s14.8040772 33 33 33 33-14.8040772 33-33-14.8040772-33-33-33zm0 63.25c-16.6799317 0-30.25-13.5700683-30.25-30.25s13.5700683-30.25 30.25-30.25 30.25 13.5700683 30.25 30.25-13.5700683 30.25-30.25 30.25z"/><path d="m8.2830858 22c-1.46012055 3.3678858-2.2830858 7.0797686-2.2830858 10.9864491 0 11.1210638 6.5805715 20.6981643 16 25.0135509l-12.53260687-36z"/><path d="m21.8849214 20.9687708c0 .7521595-.6200711 1.3607973-1.3863598 1.3607973h-.7997968l7.7735658 23.6704319c1.4168218-3.9656147 2.8745982-8.086711 4.0059233-11.3775749l-4.409545-12.292857h-1.0247081c-.7662888 0-1.3863598-.6086378-1.3863598-1.3607973s.620071-1.3607974 1.3863598-1.3607974h12.4772381c.7662887 0 1.3863598.6086379 1.3863598 1.3607974s-.6200711 1.3607973-1.3863598 1.3607973h-.5425622l7.7735659 23.6704319c1.6111017-4.5076412 3.2858352-9.2451829 4.4582841-12.7003322.5320696-2.6112958-1.5325775-5.8923589-3.3657134-8.8039868-1.425622-2.2657807-2.6576411-4.2232558-2.6576411-5.8936876 0-5.0963455 3.0218312-5.8578075 4.8224741-5.8578075 1.0854629 0 2.0781858.2850498 2.9903537.7249169-4.9705532-4.61611279-11.6574714-7.4691028-19.0242003-7.4691028-10.236419 0-19.1727872 5.486877-23.9757997 13.6079734h11.4985616c.7662887 0 1.3863598.6086379 1.3863598 1.3607974z"/><path d="m25 59.9702579c2.3921697.6531429 4.9003193 1.0297421 7.5011153 1.0297421 2.6001098 0 5.1074015-.3764303 7.4988847-1.0292359l-7.5078062-20.9707641c-2.6850359 7.6877168-6.2562194 17.5621376-7.4921938 20.9702579z"/><path d="m54.9005596 17c1.1103833 3.5154217-.2520206 9.4992717-1.6958342 14.1146991-.2347773.7529093-.5265908 1.6547898-.8595235 2.6680633-.0318343.1382347-.0676475.2764692-.1087669.414704-.0305079.1060246-.0742799.2066809-.1273368.2992847-2.3136166 6.980683-6.3058238 18.3781651-8.1090982 23.5032489 9.4197723-4.3196655 16-13.9019787 16-25.0291984 0-5.9581826-1.9035854-11.4635795-5.0994404-15.9708016z"/></g><path d="m33 0c-18.1959228 0-33 14.8040772-33 33s14.8040772 33 33 33 33-14.8040772 33-33-14.8040772-33-33-33z"/></g><path d="m227.5 13.5h5" stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"/><path d="m236.5 13.5h5" stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"/><path d="m245.5 13.5h5" stroke="#7e818d" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
assets/images/modals/modal_no_website_found.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="124" viewBox="0 0 176 124" width="176" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m23.6 40.913-6.527 6.553v25.364h6.527zm-3.765-16.968c2.634 0 4.77-2.124 4.77-4.74 0-2.617-2.136-4.739-4.77-4.739-2.637 0-4.772 2.122-4.772 4.739 0 2.616 2.135 4.74 4.772 4.74zm19.833-4.445c0 4.801-1.76 9.192-4.692 12.592l4.212 56.199h-37.656l4.082-55.217c-3.474-3.509-5.614-8.291-5.614-13.574 0-10.77 8.878-19.5 19.835-19.5 10.955 0 19.833 8.729 19.833 19.501z"/><filter id="b" height="107.9%" width="117.6%" x="-8.8%" y="-4%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd"><g stroke="#7e818d"><path d="m152 92.634v27.366a3 3 0 0 1 -3 3h-145a3 3 0 0 1 -3-3v-116a3 3 0 0 1 3-3h145a3 3 0 0 1 3 3v27.079" stroke-linecap="round" stroke-linejoin="round"/><g stroke-linecap="round" stroke-linejoin="round"><path d="m169.496 50.386c-4.31-5.126-10.773-8.386-17.996-8.386-12.979 0-23.5 10.521-23.5 23.5s10.521 23.5 23.5 23.5c12.061 0 22-9.087 23.345-20.788.102-.89.155-1.795.155-2.712m-.945-6.617a23.376 23.376 0 0 0 -2.508-5.652" fill="#fff"/><path d="m142.528 56.5 17.944 18m0-18-17.944 18"/></g><path d="m13.5 14.5h5m4 0h5m4 0h5" stroke-linecap="round" stroke-linejoin="round"/><path d="m1.5 27.5h45" stroke-linecap="square"/><path d="m106.5 27.5h45" stroke-linecap="round" stroke-linejoin="round"/></g><g transform="translate(54 15)"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use fill="#1cc691" stroke="#7e818d" xlink:href="#a"/></g></g></svg>
assets/images/modals/modal_pp_created.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="132" viewBox="0 0 133 132" width="133" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m63.1764706 84v-13.2631579c0-8.1376842 6.6364941-14.7368421 14.8235294-14.7368421s14.8235294 6.5991579 14.8235294 14.7368421v13.2631579"/><filter id="b" height="148.2%" width="145.5%" x="-22.8%" y="-24.1%"><feMorphology in="SourceAlpha" operator="dilate" radius="3.75" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="4" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd"><g transform="translate(22 1)"><path d="m95.8974359 14.0338983h14.1025641v-2.8067797c0-6.20017623-5.051538-11.2271186-11.2820513-11.2271186h-31.025641" fill="#d8d8d8" stroke="#7e818d" stroke-width="1.5"/><path d="m39.6051373 106.657627h-39.6051373v-95.4305084c0-6.20017623 5.05153846-11.2271186 11.2820513-11.2271186h88.9476927c-6.7833337 0-12.7938466 4.83888814-12.7938466 11.5779661v35.00674m0 60.0729209h-16.9230769" fill="#fff" stroke="#7e818d" stroke-width="1.5"/><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" stroke-width="1.5" xlink:href="#a"/></g><g stroke="#7e818d" stroke-width="1.5"><path d="m106 126.347826c0 2.016-1.6128 3.652174-3.6 3.652174h-46.8c-1.9872 0-3.6-1.636174-3.6-3.652174v-34.6956521c0-2.016 1.6128-3.6521739 3.6-3.6521739h46.8c1.9872 0 3.6 1.6361739 3.6 3.6521739z" fill="#e7e7e7" stroke-linejoin="round"/><path d="m106 126.347826c0 2.016-1.6128 3.652174-3.6 3.652174h-46.8c-1.9872 0-3.6-1.636174-3.6-3.652174v-34.6956521c0-2.016 1.6128-3.6521739 3.6-3.6521739h46.8c1.9872 0 3.6 1.6361739 3.6 3.6521739z" stroke-linejoin="round"/><path d="m77.3207715 98.205802c-2.4817798.6092083-4.5015075 2.717438-5.1053256 5.325957-.8085911 3.48541.7403335 6.651447 3.2833702 8.213235v6.562835c0 2.038078 1.5681768 3.692171 3.5003946 3.692171 1.9339681 0 3.5003947-1.654093 3.5003947-3.692171v-6.562835c2.084485-1.279337 3.5003946-3.634942 3.5003946-6.359765 0-4.655828-4.0849605-8.3055393-8.6792285-7.179427z" fill="#fff" stroke-linejoin="round"/><path d="m14.102564 28.067797h59.230769"/><path d="m14.102564 39.294915h59.230769"/><path d="m14.102564 50.522034h36.666667"/><path d="m22.564103 84.20339h14.102564"/><path d="m14.102564 84.20339h5.641026"/></g></g><g transform="translate(0 32)"><circle cx="21" cy="21" fill="#1cc691" r="21"/><path d="m26.1451613 21.1818028-9.7550986-.0190301.0629524-3.6605419" stroke="#fff" stroke-linecap="round" stroke-width="2" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -7.21979 23.201144)"/></g></g></svg>
assets/images/modals/modal_sync.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="166" viewBox="0 0 176 166" width="176" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m25.896543 38.0427092v-6.9475588c0-4.2627133 3.4884248-7.7195098 7.7918802-7.7195098 4.3034555 0 7.7918802 3.4567965 7.7918802 7.7195098v6.9475588"/><filter id="b" height="120.5%" width="119.3%" x="-9.6%" y="-10.2%"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="1.5" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="c" d="m45.8345894 54.5730535c0 .8690239-.6981524 1.5743186-1.558376 1.5743186h-20.2588885c-.8602236 0-1.5583761-.7052947-1.5583761-1.5743186v-14.9560258c0-.8690238.6981525-1.5743185 1.5583761-1.5743185h20.2588885c.8602236 0 1.558376.7052947 1.558376 1.5743185z"/><filter id="d" height="155.2%" width="142.8%" x="-21.4%" y="-27.6%"><feMorphology in="SourceAlpha" operator="dilate" radius="2" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><circle id="e" cx="9.515358" cy="9.515358" r="9.515358"/><filter id="f" height="136.8%" width="136.8%" x="-18.4%" y="-18.4%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="g" d="m25.0275937 6.36696564c-.2370679-.40640206-.6773368-.7113165-1.1515854-.77905018-.5078897-.06762078-.9820255.06784657-1.3545607.37264812-.609716.54175652-1.3885404.81280412-2.2013445.81280412-1.8626761 0-3.3866839-1.52400773-3.3866839-3.38668385 0-.33878127.0678466-.7113165.1693342-1.01600516.1355803-.47413573.0678466-.9822512-.1693342-1.38865326-.2710475-.4402689-.7113164-.7113165-1.1852264-.81280413-.7113165-.10160051-1.4564998-.1692213-2.2014574-.1692213-7.4846842 0-13.5467354 6.0620512-13.5467354 13.5467354 0 7.4844584 6.0620512 13.5467354 13.5467354 13.5467354s13.5467354-6.062277 13.5467354-13.5467354c0-2.5400129-.7113165-5.01240499-2.0658771-7.17976976z"/><filter id="h" height="125.8%" width="125.8%" x="-12.9%" y="-12.9%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="i" d="m39.8242814 68.7655317-11.0142118 11.0142118v42.6287665h11.0142118zm-6.353321-28.5198819c4.4462315 0 8.0487325-3.5697058 8.0487325-7.9672414 0-4.3985294-3.602501-7.96426-8.0487325-7.96426-4.4492128 0-8.0517138 3.5657306-8.0517138 7.96426 0 4.3975356 3.602501 7.9672414 8.0517138 7.9672414zm33.4679791-7.4683571c0 8.0686083-2.9694546 15.4495116-7.9175517 21.1628296l7.1086039 94.4570777h-63.54513517l6.88897559-92.8063869c-5.86437463-5.8981636-9.47383212-13.9359643-9.47383212-22.8135204 0-18.1059213 14.9814349-32.7772927 33.4709604-32.7772927s33.4679791 14.6713714 33.4679791 32.7772927z"/><filter id="j" height="108.8%" width="119.4%" x="-9.7%" y="-4.4%"><feMorphology in="SourceAlpha" operator="dilate" radius="2.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><g transform="matrix(.96592583 .25881905 -.25881905 .96592583 122.94563 9.8)"><g stroke="#7e818d"><path d="m41.3275215 5.95849663h6.1112786v-1.19169933c0-2.63246381-2.18906-4.7667973-4.8890229-4.7667973h-13.4448129"/><path d="m6.18767 12.146166h25.438197"/><path d="m6.18767 16.958798h25.438197"/><path d="m6.18767 21.77143h15.812933"/><path d="m9.625264 36.438499h6.187669"/><path d="m6.18767 36.438499h2.520902"/><path d="m23.1584887 45.962452h-23.1584887v-41.12429916c0-2.67186991 2.18299227-4.83815284 4.8754713-4.83815284h38.4382157c-2.9313771 0-5.5287844 2.08524387-5.5287844 4.98934511v15.08561229m0 25.8874946h-7.313207"/></g><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" xlink:href="#a"/></g><g stroke-linejoin="round"><use fill="#000" filter="url(#d)" xlink:href="#c"/><use fill="#d2ecfe" fill-rule="evenodd" stroke="#7e818d" xlink:href="#c"/></g><path d="m33.2029049 42.4854282c-1.0562626.2617763-1.9158726 1.1676812-2.1728618 2.2885599-.3441419 1.497678.3150911 2.8581218 1.397425 3.5292212v2.8200452c0 .8757609.6674269 1.5865233 1.4897922 1.5865233.8231101 0 1.4897921-.7107624 1.4897921-1.5865233v-2.8200452c.8871712-.5497304 1.4897921-1.5619322 1.4897921-2.7327865 0-2.0006059-1.7385874-3.5688842-3.6939396-3.0849946z" fill="#fff" stroke="#7e818d" stroke-linejoin="round"/></g><g transform="matrix(.96592583 -.25881905 .25881905 .96592583 108.307092 94.439528)"><g stroke="#7e818d"><path d="m0 42.4191436v8.0220107c0 4.4297542 8.66615643 8.0220106 20.4537299 8.0220106 11.7875735 0 20.4537299-3.5922564 20.4537299-8.0220106v-8.0220107" fill="#ededed"/><path d="m20.4537299 51.4964562c11.7875735 0 20.4537299-3.5922564 20.4537299-8.0220107 0-4.4297542-8.6661564-8.0220106-20.4537299-8.0220106-11.78757347 0-20.4537299 3.5922564-20.4537299 8.0220106 0 4.4297543 8.66615643 8.0220107 20.4537299 8.0220107z" fill="#ededed"/><path d="m0 31.546729v8.0220107c0 4.4297543 8.66615643 8.0220106 20.4537299 8.0220106 11.7875735 0 20.4537299-3.5922563 20.4537299-8.0220106v-8.0220107" fill="#fff"/><path d="m20.4537299 39.6287975c11.7875735 0 20.4537299-3.5922564 20.4537299-8.0220106 0-4.4297543-8.6661564-8.0220107-20.4537299-8.0220107-11.78757347 0-20.4537299 3.5922564-20.4537299 8.0220107 0 4.4297542 8.66615643 8.0220106 20.4537299 8.0220106z" fill="#fff"/><path d="m0 19.7596041v7.7860692c0 4.2994674 8.66615643 7.7860691 20.4537299 7.7860691 11.7875735 0 20.4537299-3.4866017 20.4537299-7.7860691v-7.7860692" fill="#ededed"/><path d="m20.4537299 27.7816148c11.7875735 0 20.4537299-3.4866018 20.4537299-7.7860692s-8.6661564-7.7860692-20.4537299-7.7860692c-11.78757347 0-20.4537299 3.4866018-20.4537299 7.7860692s8.66615643 7.7860692 20.4537299 7.7860692z" fill="#ededed"/><path d="m0 7.55012767v7.78606913c0 4.2994674 8.66615643 7.7860692 20.4537299 7.7860692 11.7875735 0 20.4537299-3.4866018 20.4537299-7.7860692v-7.78606913" fill="#fff"/><path d="m20.4537299 15.5721383c11.7875735 0 20.4537299-3.4866017 20.4537299-7.78606914 0-4.29946739-8.6661564-7.78606916-20.4537299-7.78606916-11.78757347 0-20.4537299 3.48660177-20.4537299 7.78606916 0 4.29946744 8.66615643 7.78606914 20.4537299 7.78606914z" fill="#fff"/></g><ellipse cx="20.45373" cy="6.606362" fill="#d9d9d9" rx="11.416035" ry="3.775064"/><g stroke="#7e818d" transform="translate(15.697049 18.403436)"><path d="m3.16174717.5v1.32809192h-2.66174717v-1.32809192z"/><path d="m7.9004788.5v1.32809192h-2.66174717v-1.32809192z" fill="#d2ecfe"/></g><g stroke="#7e818d" transform="translate(17.124053 42.374298)"><path d="m.5 12.367659h2.649033v1.241978h-2.649033z"/><path d="m.5.5h2.649033v1.241978h-2.649033z"/></g><g stroke="#7e818d" transform="matrix(-1 0 0 1 27.113084 30.14103)"><path d="m3.16174717.5v1.30395962h-2.66174717v-1.30395962z"/><path d="m5.23873163.5h2.66174717v1.30395962h-2.66174717z" fill="#fff"/></g><g transform="translate(30.819114 35.418981)"><use fill="#000" filter="url(#f)" xlink:href="#e"/><g stroke="#7e818d"><use fill="#d2ecfe" fill-rule="evenodd" xlink:href="#e"/><path d="m12.2075195 9.89144617h-5.39785947l.03878267-2.9688227" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -3.043576 10.2871)"/></g></g></g><g transform="matrix(.95105652 .30901699 -.30901699 .95105652 17.501508 93.6)"><g stroke="#7e818d"><path d="m14.1857324 42.1737989h-14.1857324v-42.1737989h56.7429294v42.1737989h-14.2002528" stroke-linejoin="round"/><path d="m0 7.412365h56.742929" stroke-linejoin="round"/><path d="m3.833982 3.833982h2.555988" stroke-linejoin="round"/><path d="m8.43476 3.833982h2.555988" stroke-linejoin="round"/><path d="m14.057933 3.833982h2.555988" stroke-linejoin="round"/><path d="m53.4313428 10.7239512v8.2015562h-50.11975621v-8.2015562z" fill="#7c7c7c"/><path d="m46.998226 13.514786 2.875486 2.875486" stroke-linecap="square"/><path d="m.479248.479248 2.875486 2.875486" stroke-linecap="square" transform="matrix(1 0 0 -1 46.518978 16.86952)"/></g><g transform="translate(14.824729 26.071076)"><g fill-rule="nonzero"><use fill="#000" filter="url(#h)" xlink:href="#g"/><use fill="#d2ecfe" stroke="#7e818d" xlink:href="#g"/></g><path d="m17.1802608 15.133532h-7.47406096l.05369982-2.8027728" stroke="#7e818d" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -5.717346 15.203404)"/></g></g><g stroke="#7e818d" stroke-linejoin="round" transform="matrix(.96592583 -.25881905 .25881905 .96592583 11.6 11.129219)"><path d="m36.9245662 61.8321006v-3.316566c0-2.3174769-1.9761481-4.1957939-4.2422224-4.1957939h-1.2280837v-2.797196c0-2.3174768-.6085716-2.7971959-2.8746459-2.7971959h-1.2280837v-8.3915879l6.8378826-5.5943919v-15.3845777h-6.8378826v5.5943919h-5.4703061v-5.5943919h-6.8378826v5.5943919h-5.47030613v-5.5943919h-6.83788262v15.3845777l6.83788262 5.5943919v8.3915879h-1.22808372c-2.2660743 0-2.87464585.4797191-2.87464585 2.7971959v2.797196h-1.22808372c-2.2660743 0-4.24222238 1.878317-4.24222238 4.1957939v6.9929899h30.9092968" fill="#fff"/><path d="m5.169439 53.597884h13.292844"/><path d="m25.108705 53.597884h5.169439"/><path d="m2.215474 33.498677h16.246809"/><path d="m25.108705 33.498677h8.123405"/><path d="m29.0965581 10.4218107h-10.634275v-8.18856555h13.2928438v4.09428278" fill="#d2ecfe"/><path d="m29.5396529 13.3994709h13.2928439v-6.69973544h-13.2928439z" fill="#d2ecfe"/><path d="m18.462283 16.377131v-16.377131"/></g><g transform="translate(53 12)"><use fill="#000" filter="url(#j)" xlink:href="#i"/><use fill="#1cc691" fill-rule="evenodd" stroke="#7e818d" xlink:href="#i"/></g></g></svg>
assets/images/pc_screen_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="29" viewBox="0 0 36 29" width="36" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke="#7e818d" stroke-width="1.5"><path d="m.75.75h34.14v21.18h-34.14z"/><path d="m17.91 22.68v4.32" stroke-linecap="round" stroke-linejoin="round"/><path d="m9.672353 27.27h15.755294"/></g></svg>
assets/images/question_mark.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="14" viewBox="0 0 14 14" width="14" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="7" cy="7" fill="#6e6e6e" r="7"/><text fill="#fff" font-family="HelveticaNeue-Bold, Helvetica Neue" font-size="11" font-weight="bold"><tspan x="4" y="11">?</tspan></text></g></svg>
assets/images/question_mark_light.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" opacity=".43347"><circle cx="8" cy="8" fill="#6e6e6e" r="8"/><text fill="#fff" font-family="HelveticaNeue-Bold, Helvetica Neue" font-size="11" font-weight="bold"><tspan x="5" y="12">?</tspan></text></g></svg>
assets/images/service_cards/cons_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="72" viewBox="0 0 68 72" width="68" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(8 8)"><g stroke="#7e818d"><path d="m0 42.4926047v3.5677401c0 4.4509224 8.69539032 8.0603449 20.5227273 8.0603449 4.6844816 0 8.8776442-.5662222 12.2338134-1.5266866.786734-.2251466 1.5274752-.4719568 2.2177708-.7382153"/><path d="m0 30.8886346v5.1717102c0 4.4509224 8.69539032 8.0603449 20.5227273 8.0603449 3.1147823 0 6.0123466-.2503337 8.591076-.7004445" fill="#fff"/><path d="m0 21.0668787v4.2995006c0 4.3200129 8.69539032 7.8232759 20.5227273 7.8232759 11.8273369 0 20.5227272-3.503263 20.5227272-7.8232759v-4.2995006"/><path d="m0 7.5862069v7.8232759c0 4.3200129 8.69539032 7.8232758 20.5227273 7.8232758 11.8273369 0 20.5227272-3.5032629 20.5227272-7.8232758v-7.8232759" fill="#ededed"/><path d="m20.5227273 15.6465517c11.8273369 0 20.5227272-3.5032629 20.5227272-7.82327584 0-4.32001293-8.6953903-7.82327586-20.5227272-7.82327586-11.82733698 0-20.5227273 3.50326293-20.5227273 7.82327586 0 4.32001294 8.69539032 7.82327584 20.5227273 7.82327584z" fill="#ededed"/></g><circle cx="42.510876" cy="41.510876" fill="#d2ecfe" r="9.510876"/><circle cx="42.510876" cy="41.510876" r="9.510876" stroke="#7e818d"/><path d="m46.3060892 42.5050534h-7.2727273l.0522533-4" stroke="#7e818d" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -15.786516 47.155813)"/></g></svg>
assets/images/service_cards/cs_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="72" viewBox="0 0 68 72" width="68" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(3 8)"><g stroke="#7e818d" stroke-linejoin="round"><path d="m10.3863636 45.3291667h-10.3863636v-45.3291667h61v45.3291667h-11" fill="#fff"/><path d="m0 8h61"/><path d="m4 4h2.772727"/><path d="m9 4h2.772727"/><path d="m14 4h2.772727"/></g><path d="m3 11h55v12h-55z" fill="#efefef"/><g stroke="#bdbdbd" stroke-linecap="square" transform="translate(49 15)"><path d="m.5.5 3 3"/><path d="m.5.5 3 3" transform="matrix(1 0 0 -1 0 4)"/></g><g transform="translate(16 28)"><path d="m26.78875 6.815c-.25375-.435-.725-.76137083-1.2326208-.83387083-.5436292-.07237917-1.0511292.07262083-1.4498792.39887083-.6526208.57987917-1.48625.87-2.35625.87-1.99375 0-3.625-1.63125-3.625-3.625 0-.36262083.0726208-.76137083.18125-1.0875.1451208-.5075.0726208-1.05137083-.18125-1.48637083-.2901208-.47125-.7613708-.76137084-1.2686292-.87-.7613708-.10875-1.5589916-.18112917-2.3563708-.18112917-8.01137083 0-14.5 6.48862917-14.5 14.5 0 8.0111292 6.48862917 14.5 14.5 14.5 8.0113708 0 14.5-6.4888708 14.5-14.5 0-2.71875-.7613708-5.36512083-2.21125-7.685z" fill="#d2ecfe" fill-rule="nonzero"/><g stroke="#7e818d"><path d="m26.78875 6.815c-.25375-.435-.725-.76137083-1.2326208-.83387083-.5436292-.07237917-1.0511292.07262083-1.4498792.39887083-.6526208.57987917-1.48625.87-2.35625.87-1.99375 0-3.625-1.63125-3.625-3.625 0-.36262083.0726208-.76137083.18125-1.0875.1451208-.5075.0726208-1.05137083-.18125-1.48637083-.2901208-.47125-.7613708-.76137084-1.2686292-.87-.7613708-.10875-1.5589916-.18112917-2.3563708-.18112917-8.01137083 0-14.5 6.48862917-14.5 14.5 0 8.0111292 6.48862917 14.5 14.5 14.5 8.0113708 0 14.5-6.4888708 14.5-14.5 0-2.71875-.7613708-5.36512083-2.21125-7.685z" fill-rule="nonzero"/><path d="m19 16h-8l.0574786-3" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -5.749459 16.670246)"/></g></g></g></svg>
assets/images/service_cards/pp_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="72" viewBox="0 0 68 72" width="68" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m31.5882353 42v-6.6315789c0-4.0688422 3.3182471-7.3684211 7.4117647-7.3684211s7.4117647 3.2995789 7.4117647 7.3684211v6.6315789"/><filter id="b" height="150%" width="147.2%" x="-23.6%" y="-25%"><feMorphology in="SourceAlpha" operator="dilate" radius="2" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="2.5" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" transform="translate(6 3)"><path d="m47.9487179 7.01694915h7.0512821v-1.40338983c0-3.10008813-2.5257692-5.61355932-5.6410256-5.61355932h-15.5128206" fill="#d8d8d8" stroke="#7e818d"/><path d="m19.8025686 53.3288136h-19.8025686v-47.71525428c0-3.10008813 2.52576923-5.61355932 5.64102564-5.61355932h44.47384616c-3.3916667 0-6.3969231 2.41944407-6.3969231 5.78898305v17.50337005m0 30.0364605h-8.4615384" fill="#fff" stroke="#7e818d"/><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" xlink:href="#a"/></g><path d="m53 63.173913c0 1.008-.8064 1.826087-1.8 1.826087h-23.4c-.9936 0-1.8-.818087-1.8-1.826087v-17.347826c0-1.008.8064-1.826087 1.8-1.826087h23.4c.9936 0 1.8.818087 1.8 1.826087z" fill="#d2ecfe"/><g stroke="#7e818d"><path d="m53 63.173913c0 1.008-.8064 1.826087-1.8 1.826087h-23.4c-.9936 0-1.8-.818087-1.8-1.826087v-17.347826c0-1.008.8064-1.826087 1.8-1.826087h23.4c.9936 0 1.8.818087 1.8 1.826087z" stroke-linejoin="round"/><path d="m38.6603857 49.102901c-1.2408899.3046041-2.2507537 1.358719-2.5526627 2.6629786-.4042956 1.7427048.3701667 3.3257233 1.641685 4.1066175v3.2814172c0 1.0190393.7840884 1.8460857 1.7501974 1.8460857.966984 0 1.7501973-.8270464 1.7501973-1.8460857v-3.2814172c1.0422425-.6396687 1.7501973-1.8174713 1.7501973-3.1798825 0-2.3279141-2.0424803-4.1527697-4.3396143-3.5897136z" fill="#fff" stroke-linejoin="round"/><path d="m7.051282 14.033898h29.615385"/><path d="m7.051282 19.647458h29.615385"/><path d="m7.051282 25.261017h18.333333"/><path d="m11.282051 42.101695h7.051282"/><path d="m7.051282 42.101695h2.820513"/></g></g></svg>
assets/images/service_cards/tc_icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="72" viewBox="0 0 68 72" width="68" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(6 4)"><g stroke="#7e818d"><path d="m47.9487179 7.01694915h7.0512821v-1.40338983c0-3.10008813-2.5257692-5.61355932-5.6410256-5.61355932h-15.5128206" fill="#d8d8d8"/><path d="m19.9443891 53.3288136h-19.9443891v-47.71525428c0-3.10008813 2.52576923-5.61355932 5.64102564-5.61355932h44.47384616c-3.3916667 0-6.3969231 2.41944407-6.3969231 5.78898305v17.50337005m0 30.0364605h-8.4615384" fill="#fff"/><path d="m7.051282 14.033898h29.615385"/><path d="m7.051282 19.647458h29.615385"/><path d="m7.051282 25.261017h18.333333"/><path d="m11.282051 42.101695h7.051282"/><path d="m7.051282 42.101695h2.820513"/></g><path d="m39.0081053 29-14.0081053 5.9148436v14.0477537c0 6.6046623 13.2226316 13.8296438 14 14.0374027.7781053-.2077589 14-7.9377202 14-13.2980472v-14.7871092z" fill="#d2ecfe"/><path d="m39.0081053 29-14.0081053 5.9148436v14.0477537c0 6.6046623 13.2226316 13.8296438 14 14.0374027.7781053-.2077589 14-7.9377202 14-13.2980472v-14.7871092z" stroke="#7e818d" stroke-linejoin="round"/><path d="m33 46.6556654 4.1042805 4.3443346 9.8957195-12" stroke="#7e818d" stroke-linejoin="round"/></g></svg>
assets/images/warning-icon.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="28" viewBox="0 0 29 28" width="29" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(1 .5)"><text fill="#804123" font-family="HiraMaruProN-W4, Hiragino Maru Gothic ProN" font-size="13"><tspan x="12" y="17.5">!</tspan></text><circle cx="13.5" cy="13.5" r="13.5" stroke="#804123"/></g></svg>
assets/images/welcome_screen_bg.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="246" viewBox="0 0 260 246" width="260" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="m38.5014035 56.6240933v-10.3409885c0-6.344771 5.1863776-11.4899872 11.5844931-11.4899872s11.5844931 5.1452162 11.5844931 11.4899872v10.3409885"/><filter id="b" height="113.7%" width="112.9%" x="-6.5%" y="-6.9%"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feMorphology in="SourceAlpha" operator="erode" radius="1.5" result="shadowInner"/><feOffset dx="0" dy="0" in="shadowInner" result="shadowInner"/><feComposite in="shadowOffsetOuter1" in2="shadowInner" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="c" d="m68.144077 81.2284334c0 1.2934854-1.0379706 2.3432705-2.3168986 2.3432705h-30.1196821c-1.278928 0-2.3168986-1.0497851-2.3168986-2.3432705v-22.2610696c0-1.2934853 1.0379706-2.3432705 2.3168986-2.3432705h30.1196821c1.278928 0 2.3168986 1.0497852 2.3168986 2.3432705z"/><filter id="d" height="148.2%" width="137.4%" x="-18.7%" y="-24.1%"><feMorphology in="SourceAlpha" operator="dilate" radius="2.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><ellipse id="e" cx="14.146855" cy="14.162991" rx="14.146855" ry="14.162991"/><filter id="f" height="124.7%" width="124.7%" x="-12.4%" y="-12.4%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="g" d="m37.2095025 9.47681339c-.3524581-.60490298-1.0070231-1.05874825-1.7121071-1.15956541-.7550995-.10064914-1.4600156.10098519-2.0138783.55466243-.9064886.80636928-2.0643973 1.20980599-3.272825 1.20980599-2.7693134 0-5.0351153-2.26838621-5.0351153-5.04085821 0-.50425385.1008701-1.05874825.2517557-1.51225746.2015725-.70572015.1008702-1.4620169-.2517557-2.06691988-.4029771-.65531157-1.0575421-1.05874825-1.7621226-1.20980597-1.057542-.15122574-2.1654352-.25187488-3.2729928-.25187488-11.12777275 0-20.1404614 9.02296812-20.1404614 20.1634327 0 11.1401286 9.01268865 20.1634328 20.1404614 20.1634328 11.1277728 0 20.1404614-9.0233042 20.1404614-20.1634328 0-3.7806436-1.057542-7.4606381-3.0714203-10.68661931z"/><filter id="h" height="117.4%" width="117.4%" x="-8.7%" y="-8.7%"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><path id="i" d="m58.9989354 102.283243-16.3173509 16.382762v63.406889h16.3173509zm-9.4123273-42.4210493c6.5870096 0 11.924048-5.3096526 11.924048-11.850636 0-6.5424617-5.3370384-11.8462015-11.924048-11.8462015-6.5914265 0-11.928465 5.3037398-11.928465 11.8462015 0 6.5409834 5.3370385 11.850636 11.928465 11.850636zm49.5821911-11.1085855c0 12.0014113-4.3991919 22.9799162-11.7297062 31.478021l10.5312651 140.4973678h-94.14094101l10.20588971-138.042097c-8.68796237-8.7730478-14.0353068-20.7286352-14.0353068-33.9332918 0-26.9311136 22.1947184-48.7536082 49.5866081-48.7536082 27.3918896 0 49.5821911 21.8224946 49.5821911 48.7536082z"/><filter id="j" height="107.2%" width="116.1%" x="-8.1%" y="-3.6%"><feMorphology in="SourceAlpha" operator="dilate" radius="3" result="shadowSpreadOuter1"/><feOffset dx="0" dy="0" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"/><feColorMatrix in="shadowOffsetOuter1" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter></defs><g fill="none" fill-rule="evenodd" opacity=".304256" transform="translate(1.855204 .193051)"><g transform="matrix(.96592583 .25881905 -.25881905 .96592583 181.925426 14.961569)"><g stroke="#7e818d"><path d="m61.4432428 8.86883389h9.0858769v-1.77376678c0-3.91825081-3.2545611-7.09506711-7.2687016-7.09506711h-19.9889292"/><path d="m9.19945 18.078777h37.819963"/><path d="m9.19945 25.242066h37.819963"/><path d="m9.19945 32.405355h23.509707"/><path d="m14.310256 54.23633h9.199451"/><path d="m9.19945 54.23633h3.747925"/><path d="m34.430631 68.4121142h-34.430631v-61.21083903c0-3.97690421 3.24554-7.20127517 7.24855389-7.20127517h57.14759891c-4.3581931 0-8.2198602 3.1037496-8.2198602 7.42631502v22.45395068m0 38.5318485h-10.8728308"/></g><g stroke-linejoin="round"><use fill="#000" filter="url(#b)" xlink:href="#a"/><use stroke="#7e818d" xlink:href="#a"/></g><g stroke-linejoin="round"><use fill="#000" filter="url(#d)" xlink:href="#c"/><use fill="#fff" fill-rule="evenodd" stroke="#7e818d" xlink:href="#c"/></g><path d="m49.3640575 63.2367909c-1.5703869.389637-2.8484028 1.7380173-3.2304786 3.4063723-.5116493 2.2291961.4684582 4.254128 2.0776064 5.2530157v4.1974535c0 1.303513.9922897 2.3614366 2.2149322 2.3614366 1.2237501 0 2.2149323-1.0579236 2.2149323-2.3614366v-4.1974535c1.3189921-.8182378 2.2149322-2.3248343 2.2149322-4.0675745 0-2.9777716-2.5848259-5.3120517-5.4919245-4.5918135z" fill="#fff" stroke="#7e818d" stroke-linejoin="round"/></g><g transform="matrix(.96592583 -.25881905 .25881905 .96592583 160.136501 140.92058)"><g stroke="#7e818d"><path d="m0 63.1381306v11.94024c0 6.5934006 12.8843138 11.9402401 30.4093603 11.9402401 17.5250466 0 30.4093603-5.3468395 30.4093603-11.9402401v-11.94024" fill="#ededed"/><path d="m30.4093603 76.6491188c17.5250466 0 30.4093603-5.3468395 30.4093603-11.94024 0-6.5934006-12.8843137-11.9402401-30.4093603-11.9402401-17.5250465 0-30.4093603 5.3468395-30.4093603 11.9402401 0 6.5934005 12.8843138 11.94024 30.4093603 11.94024z" fill="#ededed"/><path d="m0 46.9552501v11.9402401c0 6.5934005 12.8843138 11.94024 30.4093603 11.94024 17.5250466 0 30.4093603-5.3468395 30.4093603-11.94024v-11.9402401" fill="#fff"/><path d="m30.4093603 58.9848823c17.5250466 0 30.4093603-5.3468395 30.4093603-11.94024s-12.8843137-11.94024-30.4093603-11.94024c-17.5250465 0-30.4093603 5.3468395-30.4093603 11.94024s12.8843138 11.94024 30.4093603 11.94024z" fill="#fff"/><path d="m0 29.4108829v11.5890565c0 6.399477 12.8843138 11.5890565 30.4093603 11.5890565 17.5250466 0 30.4093603-5.1895795 30.4093603-11.5890565v-11.5890565" fill="#ededed"/><path d="m30.4093603 41.3511229c17.5250466 0 30.4093603-5.1895795 30.4093603-11.5890565s-12.8843137-11.5890565-30.4093603-11.5890565c-17.5250465 0-30.4093603 5.1895795-30.4093603 11.5890565s12.8843138 11.5890565 30.4093603 11.5890565z" fill="#ededed"/><path d="m0 11.237873v11.5890565c0 6.399477 12.8843138 11.5890565 30.4093603 11.5890565 17.5250466 0 30.4093603-5.1895795 30.4093603-11.5890565v-11.5890565" fill="#fff"/><path d="m30.4093603 23.178113c17.5250466 0 30.4093603-5.1895795 30.4093603-11.5890565s-12.8843137-11.5890565-30.4093603-11.5890565c-17.5250465 0-30.4093603 5.1895795-30.4093603 11.5890565s12.8843138 11.5890565 30.4093603 11.5890565z" fill="#fff"/></g><ellipse cx="30.40936" cy="9.833139" fill="#d9d9d9" opacity=".428484" rx="16.972666" ry="5.618936"/><g stroke="#7e818d" transform="translate(23.337416 27.392315)"><path d="m4.94406275.5v2.4652131h-4.44406275v-2.4652131z"/><path d="m11.9893204.5v2.4652131h-4.44406272v-2.4652131z" fill="#d2ecfe"/></g><g stroke="#7e818d" transform="translate(25.458999 63.071382)"><path d="m.5 18.164237h4.42516v2.337038h-4.42516z"/><path d="m.5.5h4.42516v2.337038h-4.42516z"/></g><g stroke="#7e818d" transform="matrix(-1 0 0 1 40.310082 44.862958)"><path d="m4.94406275.5v2.42929374h-4.44406275v-2.42929374z"/><path d="m11.9893204.5v2.42929374h-4.44406272v-2.42929374z" fill="#fff"/></g><g transform="translate(45.819982 52.718845)"><use fill="#000" filter="url(#f)" xlink:href="#e"/><g stroke="#7e818d"><use fill="#fff" fill-rule="evenodd" xlink:href="#e"/><path d="m18.1529996 14.7191926-8.0305801.004507.0601772-4.4159772" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -4.537426 15.300881)"/></g></g></g><g transform="matrix(.95105652 .30901699 -.30901699 .95105652 25.158661 139.696541)"><g stroke="#7e818d"><path d="m21.0904832 62.772951h-21.0904832v-62.772951h84.3619327v62.772951h-21.1120713" stroke-linejoin="round"/><path d="m0 11.032822h84.361933" stroke-linejoin="round"/><path d="m5.700131 5.706632h3.800087" stroke-linejoin="round"/><path d="m12.540287 5.706632h3.800087" stroke-linejoin="round"/><path d="m20.900479 5.706632h3.800087" stroke-linejoin="round"/><path d="m79.681837 15.7176851v12.6959166h-75.00174123v-12.6959166z" fill="#7e818d" opacity=".121525"/><path d="m69.874101 20.115878 4.275098 4.279973" stroke-linecap="square"/><path d="m.712516.713329 4.275098 4.279974" stroke-linecap="square" transform="matrix(1 0 0 -1 69.161584 25.10918)"/></g><g transform="translate(22.040505 38.805097)"><g fill-rule="nonzero"><use fill="#000" filter="url(#h)" xlink:href="#g"/><use fill="#fff" stroke="#7e818d" xlink:href="#g"/></g><path d="m25.5479053 22.520551-11.119416.0062407.0822313-4.1690006" stroke="#7e818d" stroke-linecap="round" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -8.519672 22.614087)"/></g></g><g stroke="#7e818d" stroke-linejoin="round" transform="matrix(.96592583 -.25881905 .25881905 .96592583 16.356964 16.919922)"><path d="m54.8971969 92.0330519v-4.9364924c0-3.4494132-2.9380167-6.2451658-6.307078-6.2451658h-1.8258401v-4.1634438c0-3.4494133-.9047871-4.1634439-4.2738484-4.1634439h-1.8258401v-12.4903316l10.1661476-8.3268877v-22.8989413h-10.1661476v8.3268878h-8.1329181v-8.3268878h-10.1661475v8.3268878h-8.1329181v-8.3268878h-10.16614757v22.8989413l10.16614757 8.3268877v12.4903316h-1.8258401c-3.36906131 0-4.27384844.7140306-4.27384844 4.1634439v4.1634438h-1.82584011c-3.3690613 0-6.30707795 2.7957526-6.30707795 6.2451658v10.4086097h45.9540606" fill="#fff"/><path d="m7.685608 79.776957h19.76299"/><path d="m37.330094 79.776957h7.685607"/><path d="m3.293832 49.860598h24.154766"/><path d="m37.330094 49.860598h12.077383"/><path d="m43.2589911 15.512186h-15.8103927v-12.18814614h19.7629909v6.09407307" fill="#fff"/><path d="m43.9177575 19.9442391h19.7629909v-9.97211953h-19.7629909z" fill="#fff"/><path d="m27.448598 24.376292v-24.376292"/></g><g transform="translate(77.104615 17.844224)"><use fill="#000" filter="url(#j)" xlink:href="#i"/><use fill="#fff" fill-rule="evenodd" stroke="#7e818d" xlink:href="#i"/></g></g></svg>
assets/images/white_checkmark.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="7" viewBox="0 0 8 7" width="8" xmlns="http://www.w3.org/2000/svg"><path d="m14.8113573 11.5935296h-5.33333337l.03831907-1.99999999" fill="none" stroke="#fff" stroke-linecap="round" stroke-width="2" transform="matrix(.64278761 -.76604444 .76604444 .64278761 -12.276881 5.087513)"/></svg>
assets/images/white_x.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg height="7" viewBox="0 0 7 7" width="7" xmlns="http://www.w3.org/2000/svg"><g style="stroke:#fff;stroke-width:2;fill:none;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round" transform="translate(1 1)"><path d="m.5.5 4 4"/><path d="m.5.5 4 4" transform="matrix(-1 0 0 1 5 0)"/></g></svg>
assets/js/admin.js ADDED
@@ -0,0 +1,732 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // main function
2
+ var _iub = _iub || [];
3
+
4
+
5
+ function circularBar(el) {
6
+ el.innerHTML = `
7
+ <svg xmlns="http://www.w3.org/2000/svg"
8
+ viewBox="0 0 32 32" >
9
+ <circle class="circle1" cy="16" cx="16" r="13" />
10
+ <circle class="circle2" cy="16" cx="16" r="13" />
11
+ </svg>
12
+ <span></span>
13
+ `;
14
+
15
+ var perc = parseInt(el.dataset.perc);
16
+ var circle = el.querySelector('.circle2');
17
+ var color = '#CF7463';
18
+
19
+ el.querySelector('span').innerHTML = perc + '<b>%</b>';
20
+
21
+ if (perc >= 50)
22
+ color = '#F5B350';
23
+ if (perc > 80)
24
+ color = '#1CC691';
25
+
26
+ var strokeDashArray = parseInt(getComputedStyle(circle, null).getPropertyValue("stroke-dasharray"));
27
+ var strokeDashOffset = strokeDashArray - ((strokeDashArray * perc) / 100);
28
+
29
+ circle.style.strokeDashoffset = strokeDashOffset;
30
+ el.style.color = color;
31
+
32
+ }
33
+ document.addEventListener("DOMContentLoaded", function () {
34
+ // search all .circularBar and initialize them
35
+ document.querySelectorAll(".circularBar").forEach(function (el) {
36
+ circularBar(el);
37
+ });
38
+ });
39
+
40
+ ;(function (global, $) {
41
+ //es5 strict mode
42
+ "use strict";
43
+
44
+ var IUB = global.IUB = global.IUB || {};
45
+
46
+ $(document).ready(function () {
47
+ IUB.ELEMS = {body: $('body')};
48
+ IUB.ELEMS.body.on('click', '.show-modal', showModal);
49
+ IUB.ELEMS.body.on('click', '.show-rating-modal', showRatingModal);
50
+ IUB.ELEMS.body.on('click', '.hide-modal', hideModal);
51
+ IUB.ELEMS.body.on('click', hideAllModals);
52
+ IUB.ELEMS.body.on('click', '.section-checkbox-control', sectionCheckboxShowAndHide);
53
+ IUB.ELEMS.body.on('click', '.section-radio-control', sectionRadioControl);
54
+ IUB.ELEMS.body.on('click', '.active-class-control', activeClassControl);
55
+ IUB.ELEMS.body.on('click', '.show-class-control', showClassControl);
56
+ IUB.ELEMS.body.on('submit', '.ajax-form', submitAjaxForm);
57
+ IUB.ELEMS.body.on('submit', '.ajax-form-to-options', submitAjaxFormToOptions);
58
+ IUB.ELEMS.body.on('click', '.service-checkbox', toggleServiceSetting);
59
+ IUB.ELEMS.body.on('click', '#alert-close', hideAlertDiv);
60
+ IUB.ELEMS.body.on('click', '#public_api_button', savePublicApiKey);
61
+ IUB.ELEMS.body.on('click', '.auto-detect-forms', reloadAutoDetectForms);
62
+ IUB.ELEMS.body.on('click', '.add-custom-section', addCustomSection);
63
+ IUB.ELEMS.body.on('click', '.remove-custom-section', removeCustomSection);
64
+ IUB.ELEMS.body.on('click', '.required-control', requiredControl);
65
+ IUB.ELEMS.body.on('click', '.update-button-style', updateButtonStyle);
66
+ IUB.ELEMS.body.on('change keyup past', '.iub-embed-code-tc', syncEmbedCode);
67
+ IUB.ELEMS.body.on('change click', '.iub-toggle-elements-status', toggleCheckboxes);
68
+ });
69
+
70
+ function showModal(evt) {
71
+ $(".modal").removeClass('shown');
72
+ var elId = $(evt.target).data('modal-name');
73
+ $(elId).addClass('shown');
74
+ }
75
+
76
+ function showRatingModal() {
77
+ $('#modal-rating').addClass('shown')
78
+ }
79
+
80
+ function hideModal(evt) {
81
+ var elId = $(evt.target).data('modal-name');
82
+ $(elId).removeClass('shown');
83
+ }
84
+
85
+ function hideAllModals(evt) {
86
+ if (
87
+ !evt.target.matches(".show-modal") &&
88
+ !evt.target.closest(".modal__window") &&
89
+ !evt.target.closest(".show-rating-modal")
90
+ ) {
91
+ $(".modal").removeClass('shown');
92
+ }
93
+ }
94
+
95
+ function sectionCheckboxShowAndHide(evt) {
96
+ if ($(evt.target).is(':checked')) {
97
+ $($(evt.target).data('section-name')).show();
98
+ } else {
99
+ $($(evt.target).data('section-name')).hide();
100
+ }
101
+ }
102
+
103
+ function sectionRadioControl(evt) {
104
+ if ($(evt.target).is(':checked')) {
105
+ $($(evt.target).data('section-group')).hide();
106
+ $($(evt.target).data('section-name')).show();
107
+ }
108
+ }
109
+
110
+ function activeClassControl(evt) {
111
+ $($(evt.target).data('element-name')).removeClass('inactive');
112
+ }
113
+
114
+ function showClassControl(evt) {
115
+ $($(evt.target).data('section-name')).show();
116
+ }
117
+
118
+
119
+ function submitAjaxForm(evt){
120
+ evt.stopImmediatePropagation();
121
+ evt.preventDefault();
122
+
123
+ var formData= $($(evt.target)).serialize();
124
+ var formButton= $($(evt.target)).find('button[type=submit]');
125
+
126
+ var redirect= $($(evt.target)).find('input[name="_redirect"]').val();
127
+ var showModal= $($(evt.target)).find('input[name="show_modal"]').val();
128
+
129
+ $.ajax({
130
+ type: "POST",
131
+ dataType: "json",
132
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
133
+ data : formData,
134
+ beforeSend: function() {
135
+ formButton.addClass("btn-loading");
136
+ formButton.prop('disabled', true);
137
+ },
138
+ success: function(response){
139
+ formButton.removeClass("btn-loading");
140
+ formButton.prop('disabled', false);
141
+ if (response.status === 'done') {
142
+ if(typeof(showModal) != "undefined" && showModal !== null) {
143
+ $(".modal").removeClass('shown');
144
+ $(showModal).addClass('shown');
145
+ } else {
146
+ window.location = redirect
147
+ }
148
+ }else{
149
+ if(response.focus && $(response.focus).length){
150
+ $(response.focus).trigger('click');
151
+ $([document.documentElement, document.body]).animate({
152
+ scrollTop: $(response.focus).offset().top
153
+ }, 500);
154
+ }
155
+ _paq.push(['trackEvent', 'Error', 'No website found with this embed code.']);
156
+ $('#modal-no-website-found').addClass('shown')
157
+ }
158
+ },
159
+ error: function(response) { // if error occured
160
+
161
+ $("#alert-div").addClass("alert--failure");
162
+ $("#alert-image").attr('src',iub_js_vars['plugin_url'] + '/assets/images/banner_failure.svg');
163
+ $("#alert-message").text(response.responseText);
164
+
165
+
166
+ $("#alert-div").removeClass("hidden");
167
+ formButton.removeClass("btn-loading");
168
+ formButton.prop('disabled', false);
169
+ },
170
+ complete: function() {
171
+ formButton.removeClass("btn-loading");
172
+ formButton.prop('disabled', false);
173
+ },
174
+
175
+ });
176
+ return false;
177
+ }
178
+
179
+ function submitAjaxFormToOptions(evt){
180
+ evt.preventDefault();
181
+ var formData= $($(evt.target)).serialize();
182
+ var formButton= $($(evt.target)).find('button[type=submit]');
183
+
184
+ var redirect= $($(evt.target)).find('input[name="_redirect"]').val();
185
+
186
+ $.ajax({
187
+ type: "POST",
188
+ dataType: "json",
189
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
190
+ data : formData,
191
+ beforeSend: function() {
192
+ formButton.addClass("btn-loading");
193
+ formButton.prop('disabled', true);
194
+ },
195
+ success: function(response){
196
+ formButton.removeClass("btn-loading");
197
+ formButton.prop('disabled', false);
198
+ if (response.status === 'done') {
199
+ window.location = redirect
200
+ }else{
201
+ if(response.focus){
202
+ $(response.focus).trigger('click');
203
+ $([document.documentElement, document.body]).animate({
204
+ scrollTop: $(response.focus).offset().top
205
+ }, 500);
206
+ }
207
+ _paq.push(['trackEvent', 'Error', 'No website found with this embed code.']);
208
+ $('#modal-no-website-found').addClass('shown')
209
+ }
210
+ },
211
+ error: function(response) { // if error occured
212
+
213
+ console.log(response.responseText)
214
+ $("#alert-div").addClass("alert--failure");
215
+ $("#alert-image").attr('src',iub_js_vars['plugin_url'] + '/assets/images/banner_failure.svg');
216
+ $("#alert-message").text(response.responseText);
217
+
218
+
219
+ $("#alert-div").removeClass("hidden");
220
+ formButton.removeClass("btn-loading");
221
+ formButton.prop('disabled', false);
222
+ },
223
+ complete: function() {
224
+ formButton.removeClass("btn-loading");
225
+ formButton.prop('disabled', false);
226
+ },
227
+
228
+ });
229
+ return false;
230
+ }
231
+
232
+ function toggleServiceSetting(evt){
233
+ const serviceName = $(evt.target).data('service-name')
234
+ const serviceKey = $(evt.target).data('service-key')
235
+ const status = $(evt.target).is(":checked")
236
+ if(status === true){
237
+ evt.stopImmediatePropagation();
238
+ evt.preventDefault();
239
+ window.location = $(evt.target).data('redirect')
240
+ return
241
+ }
242
+ jQuery.ajax({
243
+ type: "post",
244
+ dataType: "json",
245
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
246
+ data : {action: "toggle_services", name: serviceName, status: status},
247
+ success: function(response){
248
+ if (response.status === 'done') {
249
+ $('.'+serviceKey+'-item').removeClass("list_radar__item--on").addClass("list_radar__item--off");
250
+ $('#configiration-'+serviceKey).toggle();
251
+
252
+ // Update service status label
253
+ let service_status_label = $('#'+serviceKey+'-status-label');
254
+ if(service_status_label != undefined){
255
+ service_status_label.html(service_status_label.data('status-label-off'));
256
+ }
257
+
258
+ // Update rating circular bar if rating percentage is not equal undefined
259
+ if(response.rating_percentage != undefined){
260
+ document.querySelectorAll(".circularBar").forEach(function (el) {
261
+ $(el).attr('data-perc', response.rating_percentage);
262
+ circularBar(el);
263
+ });
264
+ }
265
+ }
266
+ },
267
+ error: function (jqXHR, exception) {
268
+ var msg = '';
269
+ if (jqXHR.status === 0) {
270
+ msg = 'Not connect.\n Verify Network.';
271
+ } else if (jqXHR.status == 404) {
272
+ msg = 'Requested page not found. [404]';
273
+ } else if (jqXHR.status == 500) {
274
+ msg = 'Internal Server Error [500].';
275
+ } else if (exception === 'parsererror') {
276
+ msg = 'Requested JSON parse failed.';
277
+ } else if (exception === 'timeout') {
278
+ msg = 'Time out error.';
279
+ } else if (exception === 'abort') {
280
+ msg = 'Ajax request aborted.';
281
+ } else {
282
+ msg = 'Uncaught Error.\n' + jqXHR.responseText;
283
+ }
284
+ console.log(msg);
285
+ },
286
+ });
287
+ }
288
+
289
+ function hideAlertDiv(evt){
290
+ $(evt.target).parents('#alert-div').fadeOut();
291
+ }
292
+
293
+ function savePublicApiKey(evt){
294
+ evt.preventDefault();
295
+ document.querySelector('#public_api_key').reportValidity();
296
+ var public_api_key = $('#public_api_key').val();
297
+
298
+ var formButton= $('#public_api_button');
299
+
300
+ $.ajax({
301
+ type: "post",
302
+ dataType: "json",
303
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
304
+ data : {action: "save_public_api_key", public_api_key: public_api_key},
305
+ beforeSend: function() {
306
+ formButton.addClass("btn-loading");
307
+ formButton.prop('disabled', true);
308
+ },
309
+ success: function(response){
310
+ formButton.removeClass("btn-loading");
311
+ formButton.prop('disabled', false);
312
+ if (response.status === 'done') {
313
+ $.ajax({
314
+ type: "post",
315
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
316
+ data : {action: "auto_detect_forms", public_api_key: public_api_key},
317
+ success: function(response) {
318
+ $("#auto-detect-forms").html(response);
319
+ $("#public-api-key-div").show();
320
+ },
321
+ });
322
+
323
+ }else{
324
+ _paq.push(['trackEvent', 'Error', 'No website found with this embed code.']);
325
+ $('#modal-no-website-found').addClass('shown')
326
+ }
327
+ },
328
+ error: function (jqXHR, exception) {
329
+ var msg = '';
330
+ if (jqXHR.status === 0) {
331
+ msg = 'Not connect.\n Verify Network.';
332
+ } else if (jqXHR.status == 404) {
333
+ msg = 'Requested page not found. [404]';
334
+ } else if (jqXHR.status == 500) {
335
+ msg = 'Internal Server Error [500].';
336
+ } else if (exception === 'parsererror') {
337
+ msg = 'Requested JSON parse failed.';
338
+ } else if (exception === 'timeout') {
339
+ msg = 'Time out error.';
340
+ } else if (exception === 'abort') {
341
+ msg = 'Ajax request aborted.';
342
+ } else {
343
+ msg = 'Uncaught Error.\n' + jqXHR.responseText;
344
+ }
345
+ console.log(msg);
346
+ },
347
+ });
348
+ }
349
+
350
+
351
+ function reloadAutoDetectForms(evt){
352
+ evt.preventDefault();
353
+ var auto_detect_forms = $("#auto-detect-forms")
354
+ var auto_detect_parent_div = $("#auto-detect-parent-div")
355
+ auto_detect_parent_div.addClass("loader");
356
+ auto_detect_forms.css('visibility', 'hidden');
357
+
358
+
359
+ var public_api_key = $('input[name="public_api_key"]').val();
360
+
361
+ $.ajax({
362
+ type: "post",
363
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
364
+ data : {action: "auto_detect_forms", public_api_key: public_api_key},
365
+ success: function(result) {
366
+ auto_detect_parent_div.removeClass("loader");
367
+ $("#auto-detect-forms").html(result);
368
+ $("#auto-detect-forms").css('visibility', 'visible');
369
+ },
370
+ error: function (jqXHR, exception) {
371
+ var msg = '';
372
+ if (jqXHR.status === 0) {
373
+ msg = 'Not connect.\n Verify Network.';
374
+ } else if (jqXHR.status == 404) {
375
+ msg = 'Requested page not found. [404]';
376
+ } else if (jqXHR.status == 500) {
377
+ msg = 'Internal Server Error [500].';
378
+ } else if (exception === 'parsererror') {
379
+ msg = 'Requested JSON parse failed.';
380
+ } else if (exception === 'timeout') {
381
+ msg = 'Time out error.';
382
+ } else if (exception === 'abort') {
383
+ msg = 'Ajax request aborted.';
384
+ } else {
385
+ msg = 'Uncaught Error.\n' + jqXHR.responseText;
386
+ }
387
+ console.log(msg);
388
+ },
389
+ });
390
+ }
391
+
392
+ function addCustomSection(evt){
393
+ evt.preventDefault();
394
+ const append_section = $($(evt.target).data('append-section'));
395
+ const cloned_section = $($(evt.target).data('clone-section'));
396
+
397
+ cloned_section.clone().each(function(){
398
+ this.id = Math.random(); // to keep it unique
399
+ $(this).find('input, textarea, button, select').prop('disabled', false);
400
+ }).appendTo(append_section).hide().fadeIn(300);
401
+ }
402
+
403
+ function removeCustomSection(evt){
404
+ evt.preventDefault();
405
+ $($(evt.target)).closest($(evt.target).data('remove-section')).remove();
406
+ $("#parent-selector :input").attr("disabled", true);
407
+ }
408
+
409
+ function requiredControl(evt){
410
+ if ($(evt.target).is(':checked')) {
411
+ $($(evt.target).data('required-control')).show();
412
+ } else {
413
+ $($(evt.target).data('required-control')).hide();
414
+ }
415
+ }
416
+
417
+ function updateButtonStyle(evt){
418
+ $('.iub-pp-code, .iub-tc-code').each(function() {
419
+ var text = $(this).html();
420
+ $(this).html(text.replace('white', $(evt.target).val()).replace('black', $(evt.target).val()));
421
+ });
422
+ $('.iub-language-code').each(function() {
423
+ var text = $(this).val();
424
+ $(this).val(text.replace('white', $(evt.target).val()).replace('black', $(evt.target).val()));
425
+ });
426
+ }
427
+
428
+ // Sync embed code between TC live code and Readonly code
429
+ function syncEmbedCode(evt){
430
+ var ele = $($(evt.target));
431
+
432
+ if($('#iub-tc-code-'+ele.data('language')).length > 0){
433
+ $('#iub-tc-code-'+ele.data('language')).text(ele.val())
434
+ $('#iub-embed-code-readonly-'+ele.data('language')).trigger('click')
435
+ }
436
+ }
437
+
438
+ // Toggle elements status
439
+ function toggleCheckboxes(evt){
440
+ $($($(evt.target)).data('group')).each(function() {
441
+ // Prevent uncheck if they already checked
442
+ if($(evt.target).is(':checked')){
443
+ $(this).prop('checked', $(evt.target).is(':checked'));
444
+ }
445
+ $(this).attr('disabled', $(evt.target).is(':checked'));
446
+ });
447
+ }
448
+
449
+ // Start banner position script
450
+ $( document ).on( 'click', '.position-select > div > label', function ( e ) {
451
+ if (!$(this).closest('.position-select > div').hasClass('open')) {
452
+ $(this).closest('.position-select > div').addClass('open');
453
+ }
454
+ })
455
+
456
+ $(document).on('mousedown', function (e) {
457
+ var positionDropdown = $('.position-select > div.open');
458
+
459
+ if (positionDropdown.length &&
460
+ !positionDropdown.is(e.target) &&
461
+ positionDropdown.has(e.target).length === 0 &&
462
+ $('.pcr-app').has(e.target).length === 0
463
+ ) {
464
+ positionDropdown.removeClass('open');
465
+ }
466
+ });
467
+ // End banner position script
468
+
469
+ // Preferences fields
470
+ // Add new preferences field
471
+ $( document ).on( 'click', '.add-preferences-field', function ( e ) {
472
+ e.preventDefault();
473
+
474
+ $( '#postbox-container-2' ).change();
475
+
476
+ var html = $( '#preferences-field-template' ).html();
477
+ html = html.replace( /__PREFERENCE_ID__/g, $( '.preferences-field' ).length++ );
478
+
479
+ $( '.preferences-table .add-preferences-field' ).closest( 'tr' ).before( '<tr class="preferences-field options-field" style="display: none;">' + html + '</tr>' );
480
+
481
+ var last = $( '.preferences-field' ).last();
482
+
483
+ last.find('.preferences-inputs').prop('disabled',false)
484
+ last.fadeIn( 300 );
485
+ } );
486
+
487
+ // Remove preferences field
488
+ $( document ).on( 'click', '.remove-preferences-field', function ( e ) {
489
+ e.preventDefault();
490
+
491
+ $( '#postbox-container-2' ).change();
492
+
493
+ $( this ).closest( '.preferences-field' ).fadeOut( 300, function () {
494
+ $( this ).remove();
495
+ } );
496
+ } );
497
+
498
+ // Exclude fields
499
+ var excludeID = $( '.exclude-field' ).length;
500
+
501
+ // Add new preferences field
502
+ $( document ).on( 'click', '.add-exclude-field', function ( e ) {
503
+ e.preventDefault();
504
+
505
+ $( '#postbox-container-2' ).change();
506
+
507
+ var html = $( '#exclude-field-template' ).html();
508
+ html = html.replace( /__EXCLUDE_ID__/g, excludeID++ ).replace( 'disabled', '' );
509
+
510
+ $( '.exclude-table .add-exclude-field' ).closest( 'tr' ).before( '<tr class="exclude-field options-field" style="display: none;">' + html + '</tr>' );
511
+
512
+ var last = $( '.exclude-field' ).last();
513
+
514
+ last.fadeIn( 300 );
515
+ } );
516
+
517
+ // Remove exclude field
518
+ $( document ).on( 'click', '.remove-exclude-field', function ( e ) {
519
+ e.preventDefault();
520
+
521
+ $( '#postbox-container-2' ).change();
522
+
523
+ $( this ).closest( '.exclude-field' ).fadeOut( 300, function () {
524
+ $( this ).remove();
525
+ } );
526
+ } );
527
+
528
+ $( function () {
529
+ $('.cs-configuration-type').on('change', function() {
530
+ if($("input[name='iubenda_cookie_law_solution[configuration_type]']:checked").val() == 'simplified'){
531
+ $('.iub-language-code').attr("disabled", true)
532
+ } else {
533
+ $('.iub-language-code').attr("disabled", false)
534
+ }
535
+ }).trigger('change');
536
+
537
+ } );
538
+
539
+ // Legal notices fields
540
+ var legalNoticesID = $( '.legal_notices-field' ).length;
541
+
542
+ // Add new preferences field
543
+ $( document ).on( 'click', '.add-legal_notices-field', function ( e ) {
544
+ e.preventDefault();
545
+
546
+ $( '#postbox-container-2' ).change();
547
+
548
+ var html = $( '#legal_notices-field-template' ).html();
549
+ html = html.replace( /__LEGAL_NOTICE_ID__/g, legalNoticesID++ );
550
+
551
+ console.log( html );
552
+
553
+ $( '.legal_notices-table .add-legal_notices-field' ).closest( 'tr' ).before( '<tr class="legal_notices-field options-field" style="display: none;">' + html + '</tr>' );
554
+
555
+ var last = $( '.legal_notices-field' ).last();
556
+
557
+ last.find('.legal-notices-inputs').prop('disabled',false)
558
+ last.fadeIn( 300 );
559
+ } );
560
+
561
+ // Remove legal notices field
562
+ $( document ).on( 'click', '.remove-legal_notices-field', function ( e ) {
563
+ e.preventDefault();
564
+
565
+ $( '#postbox-container-2' ).change();
566
+
567
+ $( this ).closest( '.legal_notices-field' ).fadeOut( 300, function () {
568
+ $( this ).remove();
569
+ } );
570
+ } );
571
+
572
+ // Handle form fields data
573
+ $( document ).on( 'change', '#postbox-container-2', function() {
574
+ var fields = {},
575
+ fieldsTypes = [ 'subject', 'preferences', 'exclude' ];
576
+
577
+ if ( iub_js_vars['form_id'] > 0 ) {
578
+ // get all fields
579
+ fields.all = $( '.subject-fields-select.select-id option:not([value=""])' ).map( function() { return $( this ).val(); } ).get();
580
+
581
+ // get specific fields
582
+ $.each( fieldsTypes, function( index, fieldType ) {
583
+ fields[fieldType] = [];
584
+
585
+ var fieldItems = $( '.' + fieldType + '-field select' );
586
+
587
+ // get selected values
588
+ $.each( fieldItems, function( index, item ) {
589
+ if ( $( item ).val() != '' )
590
+ fields[fieldType].push( $( item ).val() );
591
+ } );
592
+
593
+ fields.fieldType = $.unique( fields[fieldType] );
594
+
595
+ // remove available fields if needed
596
+ if ( fields[fieldType].length > 0 ) {
597
+
598
+ // get options count
599
+ var templateItemsCount = $( '.template-field .' + fieldType + '-fields-select option:disabled' ).length;
600
+
601
+ // update if options count changed
602
+ if ( templateItemsCount !== 0 && fields[fieldType].length != templateItemsCount ) {
603
+ // console.log( fields[fieldType] );
604
+ }
605
+
606
+ // disable add button if needed
607
+ if ( fields.all.length == fields[fieldType].length ) {
608
+ $( '.add-' + fieldType + '-field' ).attr( 'disabled', 'disabled' );
609
+ } else {
610
+ $( '.add-' + fieldType + '-field' ).attr( 'disabled', false );
611
+ }
612
+
613
+ // adjust disabled options
614
+ $.each( fields.all, function( index, fieldName ) {
615
+ if ( $.inArray( fieldName, fields[fieldType] ) < 0 ) {
616
+ // options field
617
+ $( '.' + fieldType + '-fields-select option:not(:checked)[value="' + fieldName + '"]' ).attr( 'disabled', false );
618
+ // template field
619
+ $( '.template-field .' + fieldType + '-fields-select option[value="' + fieldName + '"]' ).attr( 'disabled', false );
620
+ } else {
621
+ $( '.' + fieldType + '-fields-select option:not(:checked)[value="' + fieldName + '"]' ).attr( 'disabled', 'disabled' );
622
+ $( '.template-field .' + fieldType + '-fields-select option[value="' + fieldName + '"]' ).attr( 'disabled', 'disabled' );
623
+ }
624
+ } );
625
+ }
626
+ } );
627
+
628
+ // console.log( fields );
629
+ }
630
+
631
+ } );
632
+
633
+ // Force trigger change on document ready
634
+ $( function() {
635
+ $( '#postbox-container-2' ).change();
636
+ } );
637
+
638
+ $( document ).on( 'mouseenter mouseleave', '#postbox-container-2 .options-field, #postbox-container-2 .submit-field', function() {
639
+ $( '#postbox-container-2' ).change();
640
+ } );
641
+
642
+ // Update _iub.quick_generator selected language
643
+ $(function($) {
644
+ $('#iub-website-language').on('change', function() {
645
+ try {
646
+ _iub.quick_generator.input.privacy_policy.langs = [$(this).val()]
647
+ }
648
+ catch(err) {
649
+ console.log(err)
650
+ }
651
+ }).trigger('change');
652
+ });
653
+
654
+ $( document ).on( 'click', '.notice-dismiss, .notice-dismiss-by-text', function ( e ) {
655
+ e.preventDefault();
656
+ $(this).closest('div.is-dismissible').slideUp();
657
+ });
658
+
659
+ $( document ).on( 'click', '.dismiss-notification-alert', function ( e ) {
660
+ $.ajax({
661
+ type: "post",
662
+ dataType: "json",
663
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
664
+ data : {
665
+ action: "iubenda_dismiss_notification_alert",
666
+ iubenda_nonce: iub_js_vars['iub_dismiss_notification_alert_nonce'],
667
+ dismiss_key: $(e.target).data('dismiss-key')
668
+ },
669
+
670
+ })
671
+ });
672
+ }(window, jQuery));
673
+
674
+ jQuery(document).ready(function($){
675
+ let activeRequest = false;
676
+ let completed = false;
677
+ setTimeout(ajax, 10);
678
+
679
+ function ajax(){
680
+ if((activeRequest) || (iub_js_vars['radar_status'] == 'completed'))
681
+ {
682
+ return;
683
+ }
684
+ activeRequest = true;
685
+ jQuery.ajax({
686
+ type: "post",
687
+ dataType: "json",
688
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
689
+ data : {action: "radar_percentage_reload"},
690
+ success: function(result){
691
+ if (result.status === 'timeout'){
692
+ activeRequest = false;
693
+ setTimeout(ajax, (parseInt(result.data) * 1000));
694
+ return
695
+ }
696
+
697
+ if (result.status === 'progress'){
698
+ activeRequest = false;
699
+ completed = true;
700
+ setTimeout(ajax, 10000);
701
+ return
702
+ }
703
+
704
+ if (result.status === 'error'){
705
+ $("#alert-div").addClass("alert--failure");
706
+ $("#alert-image").attr('src',iub_js_vars['plugin_url'] + '/assets/images/banner_failure.svg');
707
+ $("#alert-message").html(result.message);
708
+ $("#alert-div-container").fadeIn( 300 );
709
+ }
710
+
711
+ if (result.status === 'complete' && completed){
712
+ if($('#frontpage-main-box').length){
713
+ $.ajax({
714
+ type: "post",
715
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
716
+ data : {action: "frontpage_main_box"},
717
+ success: function(response) {
718
+ _paq.push(['trackEvent', 'Event', 'End of scan and report rating']);
719
+ $('#frontpage-main-box').html(response)
720
+ document.querySelectorAll(".circularBar").forEach(function (el) {
721
+ $(el).attr('data-perc', result.data.percentage);
722
+ circularBar(el);
723
+ });
724
+ },
725
+ });
726
+ }
727
+ }
728
+ }
729
+ })
730
+ setTimeout(ajax, 10000);
731
+ }
732
+ });
{js → assets/js}/frontend.js RENAMED
@@ -111,7 +111,7 @@
111
  };
112
 
113
  // send only if specific form has been submitted
114
- if ( selector.parentElement.id == e.target.parentElement.id ) {
115
  _this.submitForm( form, formArgs );
116
 
117
  _iub.cons.sendData();
111
  };
112
 
113
  // send only if specific form has been submitted
114
+ if ( (selector.parentElement.id == e.target.parentElement.id) || (selector.parentElement.id == e.target.id) ) {
115
  _this.submitForm( form, formArgs );
116
 
117
  _iub.cons.sendData();
assets/js/legal_block.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function ( blocks, editor, element, components, _, blockEditor ) {
2
+ var el = element.createElement;
3
+ var RichText = blockEditor.RichText;
4
+ var useBlockProps = blockEditor.useBlockProps;
5
+
6
+ const iconEl = el('svg', {},
7
+ el('path', {
8
+ fill:"#1CC691" ,
9
+ d: "M 11.6671 0 c 3.1311 0 5.6675 2.5268 5.6675 5.6464 c 0 1.3892 -0.5031 2.6608 -1.3408 3.6454 L 17.1974 25.5634 H 6.4376 l 1.1666 -15.9874 A 5.6025 5.6025 90 0 1 6 5.6468 C 6 2.5268 8.5364 0 11.6671 0 z m 1.0762 11.8411 l -1.865 1.8653 v 7.38 h 1.865 V 11.8411 z M 11.6671 4.1886 c -0.7528 0 -1.3628 0.6142 -1.3628 1.3723 c 0 0.7576 0.61 1.372 1.3628 1.372 s 1.3631 -0.6142 1.3631 -1.372 c 0 -0.7582 -0.6104 -1.3723 -1.3631 -1.3723 z"
10
+ } )
11
+ );
12
+
13
+ blocks.registerBlockType( iub_block_js_vars.block_name, {
14
+ title: 'Iubenda',
15
+ icon: iconEl,
16
+ category: 'layout',
17
+ attributes: {
18
+ title: {
19
+ type: 'string',
20
+ default: iub_block_js_vars.iub_legal_block_short_title
21
+ },
22
+ },
23
+ edit: function ( props ) {
24
+ var attributes = props.attributes;
25
+
26
+ return el(
27
+ 'div',
28
+ useBlockProps({ className: props.className }),
29
+ el( RichText, {
30
+ tagName: 'p',
31
+ placeholder: 'Iubenda',
32
+ value: attributes.title,
33
+ onChange: function ( value ) {
34
+ props.setAttributes( { title: value } );
35
+ },
36
+ } ),
37
+ el( 'p', {}, '' ),
38
+ );
39
+ },
40
+ save: function ( props ) {
41
+ var attributes = props.attributes;
42
+
43
+ return el(
44
+ 'div',
45
+ useBlockProps.save( { className: props.className } ),
46
+ el( RichText.Content, {
47
+ tagName: 'p',
48
+ value: attributes.title,
49
+ } ),
50
+ el( 'p', {}, '['+iub_block_js_vars.iub_legal_block_shortcode+']' ),
51
+ );
52
+ },
53
+ } );
54
+ } )(
55
+ window.wp.blocks,
56
+ window.wp.editor,
57
+ window.wp.element,
58
+ window.wp.components,
59
+ window._,
60
+ window.wp.blockEditor
61
+ );
62
+
assets/js/matomo.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var _paq = window._paq = window._paq || [];
2
+
3
+ _paq.push(['disableAlwaysUseSendBeacon']);
4
+ /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
5
+ _paq.push(['setCustomDimension' , 1 , iub_js_vars['site_locale'] ]);
6
+ _paq.push(['trackPageView']);
7
+ _paq.push(['enableLinkTracking']);
8
+ (function() {
9
+ var u="//athena.iubenda.com/";
10
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
11
+ _paq.push(['setSiteId', '11']);
12
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
13
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
14
+ })();
assets/js/tabs.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function (global, $) {
2
+
3
+ $(document).on('click','.tabs__nav__item', function(e){
4
+
5
+ var navItem = $(this);
6
+ var parent = navItem.closest('.tabs');
7
+ var target = parent.find('.tabs__target[data-target="'+navItem.data('target')+'"]');
8
+ var groupNavs = parent.find('.tabs__nav__item[data-group="'+navItem.data('group')+'"]');
9
+ var groupTargets = parent.find('.tabs__target[data-group="'+navItem.data('group')+'"]');
10
+
11
+ groupNavs.removeClass('active');
12
+ groupTargets.removeClass('active');
13
+ navItem.addClass('active');
14
+
15
+ groupTargets.hide();
16
+ target.show();
17
+
18
+ // target.find('.tabs__nav__item:first-of-type').click();
19
+
20
+ });
21
+
22
+ $(document).ready(function(){
23
+ // $('.tabs__nav__item:first-of-type').click();
24
+ });
25
+ }(window, jQuery));
css/admin.css DELETED
@@ -1,164 +0,0 @@
1
- #iubenda-header {
2
- margin-bottom: 30px;
3
- }
4
- .iubenda-title {
5
- margin-top: 10px;
6
- font-weight: bold;
7
- }
8
- .iubenda-link {
9
- display: table;
10
- margin: 0 auto 10px;
11
- }
12
- .iubenda-text {
13
- margin: 10px auto;
14
- color: #434149
15
- }
16
- .button.button-primary.iub-autodetect-forms {
17
- background: #1CC691;
18
- border-color: #169970;
19
- box-shadow: 0 1px 0 #138461;
20
- text-shadow: 0 -1px 1px #138461,1px 0 1px #138461,0 1px 1px #138461,-1px 0 1px #138461;
21
- display: inline-block;
22
- margin-bottom: 30px;
23
- }
24
- .button.button-primary.iub-autodetect-forms:hover {
25
- background: #1ACC94;
26
- }
27
- .button.button-primary.iub-autodetect-forms:focus {
28
- box-shadow: 0 1px 0 #138461,0 0 2px 1px #1CC691;
29
- }
30
- #iubenda-consent-forms .tablenav.bottom {
31
- display: none;
32
- }
33
- #iubenda-tabs .submit.submit-cons {
34
- padding-top: 0;
35
- }
36
- #iubenda-tabs {
37
- margin: 30px auto 20px;
38
- }
39
- #iub_parser_engine_container {
40
- margin-top: 10px;
41
- }
42
- #iub_parser_engine_container > div:not(:last-child) {
43
- margin-bottom: 10px;
44
- }
45
- #iub_amp_options_container {
46
- margin-top: 10px;
47
- }
48
- #iub_amp_options_container > div:not(:last-child) {
49
- margin-bottom: 10px;
50
- }
51
- #iubenda-tabs .contextual-help-wrap {
52
- overflow: auto;
53
- margin: 0;
54
- position: relative;
55
- }
56
- #iubenda-tabs .contextual-help-back {
57
- position: absolute;
58
- top: 0;
59
- bottom: 0;
60
- left: 150px;
61
- right: 0;
62
- border: 1px solid #e1e1e1;
63
- background: #f6fbfd;
64
- }
65
- #iubenda-tabs .contextual-help-columns {
66
- position: relative;
67
- }
68
- #iubenda-tabs .help-tab-content {
69
- margin-right: 0;
70
- }
71
- #iubenda-tabs .help-tab-content .description {
72
- margin-bottom: 10px;
73
- }
74
- #iubenda-tabs .help-tab-content .custom-script-field, #iubenda-tabs .help-tab-content .custom-iframe-field {
75
- padding-bottom: 10px;
76
- }
77
- #iubenda-tabs .help-tab-content .custom-script-field input, #iubenda-tabs .help-tab-content .custom-iframe-field input {
78
- vertical-align: middle;
79
- }
80
- #tab-panel-scripts, #tab-panel-iframes {
81
- margin-top: 16px;
82
- margin-bottom: 18px;
83
- }
84
- #iubenda-tabs .postbox-container .widefat {
85
- border: none;
86
- box-shadow: none;
87
- }
88
- #iubenda-tabs .postbox-container .widefat h4 {
89
- margin: 8px 0;
90
- }
91
- #iubenda-tabs .postbox-container .widefat select {
92
- min-width: 50%;
93
- }
94
- #iubenda-tabs .postbox-container .widefat thead .label {
95
- font-weight: bold;
96
- }
97
- #iubenda-tabs .postbox-container .widefat .table-label {
98
- width: 25%;
99
- }
100
- #iubenda-tabs .postbox-container .widefat thead td {
101
- border: none;
102
- width: 50%;
103
- }
104
- #iubenda-tabs .postbox-container .widefat .widefat tbody td {
105
- padding-top: 5px;
106
- padding-bottom: 5px;
107
- }
108
- .iubenda-notice {
109
- border-left-color: #1CC691;
110
- padding-left: 0;
111
- display: flex;
112
- justify-content: flex-start;
113
- align-items: center;
114
- }
115
- .iubenda-notice::before {
116
- display: inline-block;
117
- content: '';
118
- height: 49px;
119
- width: 22px;
120
- margin: 1em 2em;
121
- background-size: contain;
122
- background-position: center center;
123
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMjFweCIgaGVpZ2h0PSI0OTBweCIgdmlld0JveD0iMCAwIDIyMSA0OTAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+aXViZW5kYSB2ZWN0b3IgbG9nb192M19vbmx5X2lfZ3JlZW48L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJpdWJlbmRhLXZlY3Rvci1sb2dvX3YzX29ubHlfaV9ncmVlbiIgZmlsbD0iIzFDQzY5MSIgZmlsbC1ydWxlPSJub256ZXJvIj4gICAgICAgICAgICA8cGF0aCBkPSJNMjIwLjYsMTA4LjQgQzIyMC42LDEzNSAyMTAuOCwxNTkuMyAxOTQuNSwxNzguMSBMMjE3LjksNDg5LjQgTDguNSw0ODkuNCBMMzEuMiwxODMuNSBDMTEuOSwxNjQuMiAwLDEzNy43IDAsMTA4LjQgQzAsNDguNyA0OS40LDAuNCAxMTAuMywwLjQgQzE3MS4yLDAuNCAyMjAuNiw0OC43IDIyMC42LDEwOC40IFogTTExMC4zLDEzMyBDMTI1LDEzMyAxMzYuOCwxMjEuMiAxMzYuOCwxMDYuNyBDMTM2LjgsOTIuMiAxMjQuOSw4MC41IDExMC4zLDgwLjUgQzk1LjYsODAuNSA4My44LDkyLjMgODMuOCwxMDYuNyBDODMuOCwxMjEuMyA5NS42LDEzMyAxMTAuMywxMzMgWiBNMTMxLjIsMjI3IEw5NC45LDI2My4zIEw5NC45LDQwMy44IEwxMzEuMiw0MDMuOCBMMTMxLjIsMjI3IFoiIGlkPSJTaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);
124
- }
125
- .iubenda-notice .notice-question {
126
- margin-bottom: 5px;
127
- display: block;
128
- }
129
- .iubenda-notice .notice-reply {
130
- margin-top: 0;
131
- }
132
- .iubenda-notice .step-2 {
133
- display: none;
134
- }
135
- .iubenda-notice .reply-yes {
136
- margin-right: 10px;
137
- }
138
- .iubenda-notice .reply-yes:before,
139
- .iubenda-notice .reply-no:before {
140
- font-family: dashicons;
141
- display: inline-block;
142
- line-height: 1;
143
- font-weight: 400;
144
- font-style: normal;
145
- speak: none;
146
- text-decoration: inherit;
147
- text-transform: none;
148
- text-rendering: auto;
149
- -webkit-font-smoothing: antialiased;
150
- -moz-osx-font-smoothing: grayscale;
151
- width: 20px;
152
- height: 20px;
153
- font-size: 20px;
154
- vertical-align: top;
155
- text-align: center;
156
- transition: color .1s ease-in;
157
- text-decoration: none;
158
- }
159
- .iubenda-notice .reply-yes:before {
160
- content: "\f147";
161
- }
162
- .iubenda-notice .reply-no:before {
163
- content: "\f335";
164
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/CookieSolutionGenerator.php ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) )
4
+ exit;
5
+
6
+ /**
7
+ * Class CookieSolutionGenerator
8
+ */
9
+ class CookieSolutionGenerator {
10
+
11
+ /**
12
+ * @param $language
13
+ * @param $siteId
14
+ * @param $cookiePolicyId
15
+ * @param array $args
16
+ * @return string
17
+ */
18
+ public function handle($language, $siteId, $cookiePolicyId, $args = []) {
19
+ // Return if there is no public ID or site ID
20
+ if(!$cookiePolicyId || !$siteId){
21
+ return null;
22
+ }
23
+
24
+ // Handle if the website is single language
25
+ if($language == 'default'){
26
+ $language = iubenda()->lang_current ?: iubenda()->lang_default;
27
+ }
28
+
29
+ // Workaround to solve return languages if has 'pt' language
30
+ // polylang or wpml
31
+ if($language == 'pt' || $language == 'pt-br'){
32
+ $language = 'pt-BR';
33
+ }
34
+
35
+ $beforeConfiguration = '
36
+ <script type="text/javascript">
37
+ var _iub = _iub || [];
38
+ _iub.csConfiguration =';
39
+ $afterConfiguration = '</script>';
40
+
41
+ $csConfiguration = [
42
+ 'floatingPreferencesButtonDisplay' => 'bottom-right',
43
+ 'lang' => $language,
44
+ 'siteId' => $siteId,
45
+ 'cookiePolicyId' => $cookiePolicyId,
46
+ 'whitelabel' => false,
47
+ 'invalidateConsentWithoutLog' => true,
48
+ ];
49
+ $csConfiguration['banner']['closeButtonDisplay'] = false;
50
+
51
+ $legislation = iub_array_get($args, 'legislation');
52
+
53
+ // If legislation is GDPR or Both
54
+ if ($legislation == 'gdpr' || $legislation == 'both'){
55
+ $csConfiguration['consentOnContinuedBrowsing'] = false;
56
+ $csConfiguration['perPurposeConsent'] = true;
57
+ $csConfiguration['banner']['listPurposes'] = true;
58
+ $csConfiguration['banner']['explicitWithdrawal'] = true;
59
+
60
+ $explicit_reject = iub_array_get($args, 'explicit_reject');
61
+ if ($explicit_reject || true == iub_array_get($args, 'tcf')) {
62
+ $csConfiguration['banner']['rejectButtonDisplay'] = true;
63
+ }
64
+
65
+ $explicit_accept = iub_array_get($args, 'explicit_accept');
66
+ if ($explicit_accept || true == iub_array_get($args, 'tcf')) {
67
+ $csConfiguration['banner']['acceptButtonDisplay'] = true;
68
+ $csConfiguration['banner']['customizeButtonDisplay'] = true;
69
+ }
70
+
71
+ // If Require Consent is EU Only
72
+ if(iub_array_get($args, 'require_consent') == 'eu_only'){
73
+ $csConfiguration['countryDetection'] = true;
74
+ $csConfiguration['gdprAppliesGlobally'] = false;
75
+ }
76
+ }
77
+
78
+ // If legislation is CCPA or Both
79
+ if ($legislation == 'ccpa' || $legislation == 'both'){
80
+ $csConfiguration['enableCcpa'] = true;
81
+
82
+ // If Require Consent is Worldwide
83
+ if(iub_array_get($args, 'require_consent') == 'worldwide'){
84
+ $csConfiguration['ccpaApplies'] = true;
85
+ }
86
+ $afterConfiguration .= '
87
+ <script type="text/javascript" src="//cdn.iubenda.com/cs/ccpa/stub.js"></script>
88
+ ';
89
+ }
90
+
91
+ // If legislation is CCPA
92
+ if ($legislation == 'ccpa'){
93
+ // If Require Consent is Worldwide
94
+ if(iub_array_get($args, 'require_consent') == 'worldwide'){
95
+ $csConfiguration['enableGdpr'] = false;
96
+ }
97
+ }
98
+
99
+ // conditions on TCF is enabled
100
+ if (($legislation == 'gdpr' || $legislation == 'both') && true == iub_array_get($args, 'tcf')){
101
+ $csConfiguration['enableTcf'] = true;
102
+ $csConfiguration['banner']['closeButtonRejects'] = true;
103
+ $csConfiguration['tcfPurposes']['1'] = true;
104
+ $csConfiguration['tcfPurposes']['2'] = 'consent_only';
105
+ $csConfiguration['tcfPurposes']['3'] = 'consent_only';
106
+ $csConfiguration['tcfPurposes']['4'] = 'consent_only';
107
+ $csConfiguration['tcfPurposes']['5'] = 'consent_only';
108
+ $csConfiguration['tcfPurposes']['6'] = 'consent_only';
109
+ $csConfiguration['tcfPurposes']['7'] = 'consent_only';
110
+ $csConfiguration['tcfPurposes']['8'] = 'consent_only';
111
+ $csConfiguration['tcfPurposes']['9'] = 'consent_only';
112
+ $csConfiguration['tcfPurposes']['10'] = 'consent_only';
113
+
114
+ $afterConfiguration .= '
115
+ <script type="text/javascript" src="//cdn.iubenda.com/cs/tcf/stub-v2.js"></script>
116
+ <script type="text/javascript" src="//cdn.iubenda.com/cs/tcf/safe-tcf-v2.js"></script>
117
+ ';
118
+ }
119
+ $csConfiguration['banner']['position'] = str_replace('full-', '', iub_array_get($args, 'position'));
120
+
121
+ $bannerStyle = iub_array_get($args, 'banner_style');
122
+ if ('light' == $bannerStyle) {
123
+ $csConfiguration['banner']['style'] = 'light';
124
+ $csConfiguration['banner']['textColor'] = '#000000';
125
+ $csConfiguration['banner']['backgroundColor'] = '#FFFFFF';
126
+ $csConfiguration['banner']['customizeButtonCaptionColor'] = '#4D4D4D';
127
+ $csConfiguration['banner']['customizeButtonColor'] = '#DADADA';
128
+ }else{
129
+ $csConfiguration['banner']['style'] = 'dark';
130
+ }
131
+
132
+ $background_overlay = iub_array_get($args, 'background_overlay');
133
+ if ($background_overlay) {
134
+ $csConfiguration['banner']['backgroundOverlay'] = true;
135
+ }
136
+
137
+ $afterConfiguration .= '
138
+ <script type="text/javascript" src="//cdn.iubenda.com/cs/iubenda_cs.js" charset="UTF-8" async></script>
139
+ ';
140
+
141
+ return $beforeConfiguration.json_encode($csConfiguration)."; ".$afterConfiguration;
142
+ }
143
+ }
includes/LanguageHelper.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if (!defined('ABSPATH')) exit;
4
+
5
+ /**
6
+ * Class LanguageHelper
7
+ */
8
+ class LanguageHelper {
9
+
10
+ /**
11
+ * Get the language code of logged in user profile
12
+ *
13
+ * @param bool $lower_case
14
+ * @return string
15
+ */
16
+ public function get_user_profile_language_code($lower_case = false): string {
17
+ $iub_supported_languages = iubenda()->supported_languages;
18
+ $user_profile_language = get_bloginfo("language");
19
+
20
+ // Check if the current user language is supported by iubenda
21
+ if (iub_array_get($iub_supported_languages, $user_profile_language) ?: null) {
22
+ $result = $user_profile_language;
23
+ }
24
+ // Remove the country from the language code to check if iubenda supports the current user language without the country
25
+ else{
26
+ $locale = explode('-', $user_profile_language) ?: [];
27
+ $result = iub_array_get($iub_supported_languages, $locale[0]) ? $locale[0] : null;
28
+ }
29
+
30
+ // Fallback to EN if current user language is not supported
31
+ if(!$result){
32
+ $result = 'en';
33
+ }
34
+
35
+ return $lower_case ? strtolower($result) : $result;
36
+ }
37
+
38
+ /**
39
+ * Get the site's default language code
40
+ *
41
+ * @param bool $lower_case
42
+ * @return string
43
+ */
44
+ public function get_default_website_language_code($lower_case = false): string {
45
+ if ((is_plugin_active('polylang/polylang.php') || is_plugin_active('polylang-pro/polylang.php')) && function_exists('PLL')) {
46
+ $default_language_local_code = pll_default_language('locale');
47
+ $website_language_code = iub_array_get(iubenda()->lang_mapping, $default_language_local_code);
48
+ }
49
+ elseif (is_plugin_active('sitepress-multilingual-cms/sitepress.php') && class_exists('SitePress')) {
50
+ global $sitepress;
51
+ $website_language_code = $sitepress->get_default_language();
52
+ }
53
+ else {
54
+ $website_language_code = iub_array_get(iubenda()->lang_mapping, get_locale());
55
+ }
56
+
57
+ return $lower_case ? strtolower($website_language_code) : $website_language_code;
58
+ }
59
+
60
+ }
includes/PrivacyPolicyGenerator.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) )
4
+ exit;
5
+
6
+ /**
7
+ * Class PrivacyPolicyGenerator
8
+ */
9
+ class PrivacyPolicyGenerator {
10
+
11
+ /**
12
+ * @param $language
13
+ * @param $cookiePolicyId
14
+ * @param $buttonStyle
15
+ * @return string
16
+ */
17
+ public function handle($language, $cookiePolicyId, $buttonStyle) {
18
+ // Return if there is no public id
19
+ if(!$cookiePolicyId){
20
+ return null;
21
+ }
22
+ $privacyTitle = 'Privacy Policy';
23
+
24
+ // If the language has translation in iubenda plugin
25
+ $language_code = array_search($language, iubenda()->lang_mapping) ?: null;
26
+ if($language_code){
27
+ $privacyTitle = __iub_trans('Privacy Policy', $language_code);
28
+ }
29
+
30
+ $ppConfiguration = '
31
+ <a href="https://www.iubenda.com/privacy-policy/'.$cookiePolicyId.'" class="iubenda-'.$buttonStyle.' no-brand iubenda-noiframe iubenda-embed iubenda-noiframe " title="'.$privacyTitle.'">'.$privacyTitle.'</a><script type="text/javascript">(function (w,d) {var loader = function () {var s = d.createElement("script"), tag = d.getElementsByTagName("script")[0]; s.src="https://cdn.iubenda.com/iubenda.js"; tag.parentNode.insertBefore(s,tag);}; if(w.addEventListener){w.addEventListener("load", loader, false);}else if(w.attachEvent){w.attachEvent("onload", loader);}else{w.onload = loader;}})(window, document);</script>
32
+ ';
33
+
34
+ return $ppConfiguration;
35
+ }
36
+ }
includes/ProductHelper.php ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if (!defined('ABSPATH')) exit;
4
+
5
+ /**
6
+ * Class ProductHelper
7
+ */
8
+ class ProductHelper
9
+ {
10
+
11
+ /**
12
+ * @param $lang_id
13
+ * @return string
14
+ */
15
+ public function get_cs_embed_code_by_lang($lang_id): string
16
+ {
17
+ $code = iub_array_get(iubenda()->options['cs'], "manual_code_{$lang_id}");
18
+ if (!$code) {
19
+ $code = iub_array_get(iubenda()->options['cs'], "code_{$lang_id}");
20
+ }
21
+
22
+ return html_entity_decode(iubenda()->parse_code($code));
23
+ }
24
+
25
+ /**
26
+ * @param $lang_id
27
+ * @return string
28
+ */
29
+ public function get_pp_embed_code_by_lang($lang_id): string
30
+ {
31
+ return $this->get_embed_code('pp', $lang_id);
32
+ }
33
+
34
+ /**
35
+ * @param $lang_id
36
+ * @return string
37
+ */
38
+ public function get_tc_embed_code_by_lang($lang_id): string
39
+ {
40
+ return $this->get_embed_code('tc', $lang_id);
41
+ }
42
+
43
+ /**
44
+ * Get all languages if website is multilingual and return default if website is single language
45
+ *
46
+ * @return array|string[]
47
+ */
48
+ public function get_languages(): array
49
+ {
50
+ if (iubenda()->multilang && !empty(iubenda()->languages)) {
51
+ return iubenda()->languages;
52
+ }
53
+
54
+ return ['default' => 'default_language'];
55
+ }
56
+
57
+
58
+ /**
59
+ * @param $key
60
+ * @param $lang_id
61
+ * @return string
62
+ */
63
+ private function get_embed_code($key, $lang_id): string
64
+ {
65
+ $code = iub_array_get(iubenda()->options[$key], "code_{$lang_id}");
66
+
67
+ return html_entity_decode(iubenda()->parse_code($code));
68
+ }
69
+
70
+ /**
71
+ * Check Iubenda CS code exists on current lang or not
72
+ *
73
+ * @return bool
74
+ */
75
+ public function check_iub_cs_code_exists_current_lang(): bool
76
+ {
77
+ return $this->check_iub_code_exists_current_lang('cs');
78
+ }
79
+
80
+ /**
81
+ * Check Iubenda $key code exists on current lang or not
82
+ *
83
+ * @param $key
84
+ * @return bool
85
+ */
86
+ private function check_iub_code_exists_current_lang($key): bool
87
+ {
88
+ // Check if there is multi language plugin installed and activated
89
+ if ( iubenda()->multilang === true && defined( 'ICL_LANGUAGE_CODE' ) && isset( iubenda()->options['cs']['code_' . ICL_LANGUAGE_CODE] ) ) {
90
+ $iubenda_code = iubenda()->options[$key]['code_' . ICL_LANGUAGE_CODE];
91
+
92
+ // no code for current language, use default
93
+ if ( ! $iubenda_code ){
94
+ $iubenda_code = iubenda()->options[$key]['code_default'];
95
+ }
96
+ } else{
97
+ $iubenda_code = iubenda()->options[$key]['code_default'];
98
+ }
99
+
100
+ return boolval(trim($iubenda_code ?: ''));
101
+ }
102
+
103
+ /**
104
+ * Getting public id for current language if stored in database
105
+ * @return array|ArrayAccess|false|mixed
106
+ */
107
+ public function get_public_id_for_current_language(){
108
+ // Checking if there is no public id for current language
109
+ if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
110
+ $lang_id = iubenda()->lang_current;
111
+ } else {
112
+ $lang_id = 'default';
113
+ }
114
+
115
+ return iub_array_get(iubenda()->options['global_options'], "public_ids.{$lang_id}", false) ?: false;
116
+ }
117
+
118
+ /**
119
+ * Check privacy policy and terms and condition services status and position and codes
120
+ *
121
+ * @return bool
122
+ */
123
+ public function check_pp_tc_status_and_position(){
124
+ $ppStatus = iub_array_get(iubenda()->settings->services, 'pp.status') == 'true';
125
+ $ppPosition = iub_array_get(iubenda()->options['pp'], 'button_position') == 'automatic';
126
+
127
+ $tcStatus = iub_array_get(iubenda()->settings->services, 'tc.status') == 'true';
128
+ $tcPosition = iub_array_get(iubenda()->options['tc'], 'button_position') == 'automatic';
129
+ $quickGeneratorService = new QuickGeneratorService();
130
+
131
+ if (!($ppStatus && $ppPosition && boolval($quickGeneratorService->pp_button())) && !($tcStatus && $tcPosition && boolval($quickGeneratorService->tc_button()))) {
132
+ return false;
133
+ }
134
+
135
+ return true;
136
+ }
137
+
138
+ /**
139
+ * Get intersect supported local languages intersect with iubenda supported languages
140
+ *
141
+ */
142
+ public function get_local_supported_language(){
143
+ if (iubenda()->multilang && !empty(iubenda()->languages)) {
144
+ $local_languages = array_keys(iubenda()->languages_locale) ?: [];
145
+ $local_languages = iubenda()->language_unification_locale_to_iub($local_languages);
146
+
147
+ $iubenda_intersect_supported_langs = array_intersect($local_languages, array_keys(iubenda()->supported_languages)) ?: [];
148
+ }
149
+ else {
150
+ $iubenda_intersect_supported_langs = array_intersect([iub_array_get(iubenda()->lang_mapping, get_locale())], array_values(iubenda()->lang_mapping)) ?: [];
151
+ }
152
+
153
+ return $iubenda_intersect_supported_langs;
154
+ }
155
+
156
+ /**
157
+ * Check if iubenda service is enabled
158
+ *
159
+ * @param $service
160
+ * @return bool
161
+ */
162
+ private function is_iub_service_enabled($service): bool {
163
+ return boolval(iub_array_get(iubenda()->settings->services, "{$service}.status") == 'true');
164
+ }
165
+
166
+ /**
167
+ * Check if CS service is enabled
168
+ *
169
+ */
170
+ public function is_cs_service_enabled(): bool {
171
+ return $this->is_iub_service_enabled('cs');
172
+ }
173
+
174
+ /**
175
+ * Check if PP service is enabled
176
+ *
177
+ */
178
+ public function is_pp_service_enabled(): bool {
179
+ return $this->is_iub_service_enabled('pp');
180
+ }
181
+
182
+ /**
183
+ * Check if TC service is enabled
184
+ *
185
+ */
186
+ public function is_tc_service_enabled(): bool {
187
+ return $this->is_iub_service_enabled('tc');
188
+ }
189
+
190
+ /**
191
+ * Check if CONS service is enabled
192
+ *
193
+ */
194
+ public function is_cons_service_enabled(): bool {
195
+ return $this->is_iub_service_enabled('cons');
196
+ }
197
+
198
+ /**
199
+ * Check if iubenda service is configured
200
+ *
201
+ * @param $service
202
+ * @return bool
203
+ */
204
+ private function is_iub_service_configured($service): bool {
205
+ return boolval(iub_array_get(iubenda()->settings->services, "{$service}.configured") == 'true');
206
+ }
207
+
208
+ /**
209
+ * Check if CS service is configured
210
+ *
211
+ */
212
+ public function is_cs_service_configured(): bool {
213
+ return $this->is_iub_service_configured('cs');
214
+ }
215
+
216
+ /**
217
+ * Check if PP service is configured
218
+ *
219
+ */
220
+ public function is_pp_service_configured(): bool {
221
+ return $this->is_iub_service_configured('pp');
222
+ }
223
+
224
+ /**
225
+ * Check if TC service is configured
226
+ *
227
+ */
228
+ public function is_tc_service_configured(): bool {
229
+ return $this->is_iub_service_configured('tc');
230
+ }
231
+
232
+ /**
233
+ * Check if CONS service is configured
234
+ *
235
+ */
236
+ public function is_cons_service_configured(): bool {
237
+ return $this->is_iub_service_configured('cons');
238
+ }
239
+ }
includes/QuickGeneratorService.php ADDED
@@ -0,0 +1,638 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if (!defined('ABSPATH'))
4
+ exit;
5
+
6
+ /**
7
+ * Class QuickGeneratorService
8
+ */
9
+ class QuickGeneratorService
10
+ {
11
+ public $QG_Response = [];
12
+
13
+ public function __construct(){
14
+ $this->QG_Response = get_option(iubenda_Settings::IUB_QG_Response, []) ?: [];
15
+ }
16
+
17
+ protected function get_mapped_language_on_local($iub_lang_code)
18
+ {
19
+ $result = [];
20
+ $iub_lang_code = strtolower(str_replace('-', '_', $iub_lang_code));
21
+
22
+ foreach (iubenda()->languages_locale as $wordpress_locale => $lang_code) {
23
+ // lower case and replace - with underscore
24
+ $lower_wordpress_locale = strtolower(str_replace('-', '_', $wordpress_locale));
25
+ // Map after all both codes becomes lower case and underscore
26
+
27
+ // Map en iubenda language to wordpress languages en_us
28
+ if ($iub_lang_code == 'en' && $lower_wordpress_locale == 'en_us') {
29
+ $result[] = $lang_code;
30
+ continue;
31
+ }
32
+
33
+ // Map iubenda language to wordpress languages
34
+ if ($iub_lang_code == $lower_wordpress_locale) {
35
+ $result[] = $lang_code;
36
+ continue;
37
+ }
38
+
39
+ // Map any pt iubenda language to any wordpress languages starts with pt
40
+ if (strpos($iub_lang_code, 'pt_') === 0 && strpos($lower_wordpress_locale, 'pt') === 0) {
41
+ $result[] = $lang_code;
42
+ continue;
43
+ }
44
+
45
+ // Cases iubenda languages without _ mapped to
46
+ if ($iub_lang_code == strstr($lower_wordpress_locale, '_', true)) {
47
+ $result[] = $lang_code;
48
+ continue;
49
+ }
50
+ // Map any XX_ iubenda language to any wordpress languages starts with XX_
51
+ if ((strpos($iub_lang_code, '_') === 0 && strstr($iub_lang_code, '_', true)) && (strpos($lower_wordpress_locale, '_') === 0 && strstr($lower_wordpress_locale, '_', true))) {
52
+ $result[] = $lang_code;
53
+ continue;
54
+ }
55
+
56
+ if ($lower_wordpress_locale == $iub_lang_code) {
57
+ $result[] = $lang_code;
58
+ continue;
59
+ }
60
+ }
61
+
62
+ return $result;
63
+ }
64
+
65
+ public function quick_generator_api()
66
+ {
67
+ $public_ids = [];
68
+ $privacy_policies = [];
69
+ $site_id = null;
70
+
71
+ $body = iub_array_get($_POST, 'payload');
72
+ $user = iub_array_get($body, 'user');
73
+
74
+ $multi_lang = boolval(iubenda()->multilang && !empty(iubenda()->languages));
75
+
76
+ foreach (iub_array_get($body, 'privacy_policies', []) ?? [] as $key => $privacy_policy) {
77
+ //getting site id to save it into Iubenda global option
78
+ if(!$site_id){
79
+ $site_id = iub_array_get($privacy_policy, 'site_id');
80
+ }
81
+
82
+ if($multi_lang){
83
+ if($local_lang_codes = $this->get_mapped_language_on_local($privacy_policy['lang'])){
84
+ foreach ($local_lang_codes as $local_lang_code){
85
+ $privacy_policies[$local_lang_code] = $privacy_policy;
86
+
87
+ //getting public id to save it into Iubenda global option default lang
88
+ $public_ids[$local_lang_code] = iub_array_get($privacy_policy, 'public_id');
89
+ }
90
+ }
91
+
92
+ // Getting supported local languages intersect with iubenda supported languages
93
+ $iubenda_intersect_supported_langs = (new ProductHelper())->get_local_supported_language();
94
+
95
+ // Fallback to default language if no supported local languages intersect with iubenda supported languages
96
+ if (empty($iubenda_intersect_supported_langs)) {
97
+ $public_ids[iubenda()->lang_default] = iub_array_get($privacy_policy, 'public_id');
98
+ }
99
+ }else{
100
+ $privacy_policies['default'] = $privacy_policy;
101
+
102
+ //getting public id to save it into Iubenda global option default lang
103
+ $public_ids['default'] = iub_array_get($privacy_policy, 'public_id');
104
+ }
105
+ }
106
+
107
+ $configuration = [
108
+ 'website' => iub_array_get($_POST, 'website'),
109
+ 'user' => [
110
+ 'id' => iub_array_get($user, 'id'),
111
+ 'email' => iub_array_get($user, 'email'),
112
+ ],
113
+ 'privacy_policies' => $privacy_policies,
114
+ ];
115
+
116
+ update_option(iubenda_Settings::IUB_QG_Response, $configuration);
117
+ update_option( 'iubenda_global_options', ['site_id' => $site_id, 'public_ids' => $public_ids] );
118
+
119
+ iubenda()->settings->add_notice( 'iub_integrated_success', __( 'Your website has been created and your legal documents have been generated. Setup your cookie banner and privacy policy button to complete the integration.', 'iubenda' ), 'success' );
120
+
121
+ echo json_encode([
122
+ 'status' => 'done',
123
+ 'redirect' => admin_url( 'admin.php?page=iubenda&view=integrate-setup') ,
124
+ ]);
125
+ wp_die();
126
+ }
127
+
128
+ public function integrate_setup()
129
+ {
130
+ // Saving iubenda plugin settings
131
+ $this->plugin_settings_save_options();
132
+
133
+ if(iub_array_get($_POST, 'cookie_law') == 'on'){
134
+ // Saving CS data with CS function
135
+ $this->cs_save_options();
136
+ }
137
+
138
+ if(iub_array_get($_POST, 'privacy_policy') == 'on'){
139
+ // Saving PP data with PP function
140
+ $this->pp_save_options();
141
+ }
142
+
143
+ if (iub_array_get($_POST, 'cookie_law') == 'on' || iub_array_get($_POST, 'privacy_policy') == 'on') {
144
+ //add notice that`s notice user the integrate has been done successfully
145
+ iubenda()->settings->add_notice('iub_integrated_success', __('Our products has been integrated successfully, now customize all products to increase the compliance rating and make your website fully compliant.', 'iubenda'), 'success');
146
+ }
147
+
148
+ // Encourage user to verify his account
149
+ $iub_notifications = get_option(iubenda_Settings::IUB_NOTIFICATIONS, []) ?: [];
150
+ $iub_notifications['iub_user_needs_to_verify_his_account'] = true;
151
+ update_option(iubenda_Settings::IUB_NOTIFICATIONS, $iub_notifications);
152
+
153
+ echo json_encode(['status' => 'done']);
154
+ wp_die();
155
+ }
156
+
157
+ public function save_public_api_key()
158
+ {
159
+ if(empty(iub_array_get($_POST, 'public_api_key'))){
160
+ echo json_encode(['status' => 'error', 'responseText' => "invalid public API key" ]);
161
+ wp_die();
162
+ }
163
+ update_option('iubenda_consent_solution', ['public_api_key' => iub_array_get($_POST, 'public_api_key')]);
164
+
165
+ $iubenda_activated_products = get_option('iubenda_activated_products');
166
+ $iubenda_activated_products['iubenda_consent_solution'] = 'true';
167
+ update_option('iubenda_activated_products', $iubenda_activated_products);
168
+
169
+ echo json_encode(['status' => 'done']);
170
+ wp_die();
171
+ }
172
+
173
+ public function auto_detect_forms()
174
+ {
175
+ iubenda()->forms->autodetect_forms();
176
+
177
+ require_once IUBENDA_PLUGIN_PATH . 'views/partials/auto_detect_forms.php';
178
+ wp_die();
179
+
180
+ }
181
+
182
+ public function add_footer()
183
+ {
184
+ if(iub_array_get(iubenda()->settings->services, 'pp.status') == 'true' && iub_array_get(iubenda()->options['pp'], 'button_position') == 'automatic'){
185
+ echo $this->pp_button();
186
+ }
187
+ if(iub_array_get(iubenda()->settings->services, 'tc.status') == 'true' && iub_array_get(iubenda()->options['tc'], 'button_position') == 'automatic'){
188
+ echo $this->tc_button();
189
+ }
190
+ }
191
+
192
+ public function tc_button_shortcode(){
193
+ if ((iub_array_get(iubenda()->settings->services, 'tc.status') == 'true') && (iub_array_get(iubenda()->options['tc'], 'button_position') == 'manual')) {
194
+ return $this->tc_button();
195
+ }
196
+ return "[iub-tc-button]";
197
+ }
198
+
199
+ public function tc_button(){
200
+ if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
201
+ $code = iub_array_get(iubenda()->options, 'tc.code_'.iubenda()->lang_current) ?? null;
202
+ } else {
203
+ $code = iub_array_get(iubenda()->options, 'tc.code_default') ?? null;
204
+ }
205
+
206
+ return $code;
207
+ }
208
+
209
+ public function pp_button_shortcode(){
210
+ if (iub_array_get(iubenda()->settings->services, 'pp.status') == 'true' && iub_array_get(iubenda()->options['pp'], 'button_position') != 'automatic') {
211
+ return $this->pp_button();
212
+ }
213
+ return "[iub-pp-button]";
214
+ }
215
+
216
+ public function pp_button(){
217
+ $privacy_policy_generator = new PrivacyPolicyGenerator();
218
+
219
+ if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
220
+ $code = iub_array_get(iubenda()->options, 'pp.code_'.iubenda()->lang_current) ?? null;
221
+ } else {
222
+ $code = iub_array_get(iubenda()->options, 'pp.code_default') ?? null;
223
+ }
224
+
225
+ if (!$code){
226
+ if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
227
+ $public_id = iub_array_get(iubenda()->options['global_options'], 'public_ids.'.iubenda()->lang_current);
228
+ } else {
229
+ $public_id = iub_array_get(iubenda()->options['global_options'], 'public_ids.default');
230
+ }
231
+
232
+ $code = $privacy_policy_generator->handle('default', $public_id, iub_array_get(iubenda()->options, 'pp.button_style'));
233
+ }
234
+
235
+ return $code;
236
+ }
237
+
238
+ public function ajax_save_options()
239
+ {
240
+ $iubenda_section_name = iub_array_get($_POST, 'iubenda_section_name');
241
+ $iubenda_section_key = iub_array_get($_POST, 'iubenda_section_key');
242
+
243
+ // If section == CS save by CS function
244
+ if($iubenda_section_key == 'cs'){
245
+ $this->cs_save_options(false);
246
+ }
247
+
248
+ // Elseif section == Plugin-settings save by plugin settings function
249
+ elseif($iubenda_section_key == 'plugin-settings'){
250
+ $this->plugin_settings_save_options(false);
251
+ }
252
+
253
+ else{
254
+ $codes_statues = [];
255
+ $global_options = iubenda()->options['global_options'];
256
+
257
+ $section_new_option = iub_array_get($_POST, $iubenda_section_name);
258
+ $old_section_options = iubenda()->options[$iubenda_section_key];
259
+
260
+ if($iubenda_section_name == 'iubenda_terms_conditions_solution') {
261
+ foreach($section_new_option as $index => $option) {
262
+ if(substr( $index, 0, 5 ) === "code_"){
263
+ $parsed_code = iubenda()->parse_tc_pp_configuration(stripslashes_deep($option));
264
+
265
+ if ($parsed_code) {
266
+ $codes_statues["{$iubenda_section_name}_codes"][] = true;
267
+ $global_options['public_ids'][substr($index, 5)] = iub_array_get($parsed_code, 'cookie_policy_id');
268
+ }else{
269
+ $codes_statues["{$iubenda_section_name}_codes"][] = false;
270
+ }
271
+ }
272
+ }
273
+
274
+ // validating Embed Codes of TC contains at least one valid code
275
+ if(count(array_filter($codes_statues["{$iubenda_section_name}_codes"])) == 0){
276
+ echo json_encode(['status' => 'error', 'responseText' => "( {$iubenda_section_name} ) At least one code must be valid."]);
277
+ wp_die();
278
+ }
279
+ }
280
+
281
+ // Update buttons style & position
282
+ // Privacy policy Button
283
+ if($iubenda_section_name == 'iubenda_privacy_policy_solution') {
284
+ // Add a widget in the sidebar if the button is positioned automatically
285
+ if('automatic' === iub_array_get($section_new_option, 'button_position')){
286
+ iubenda()->assign_legal_block_or_widget();
287
+ }
288
+
289
+ // Merge old old PP options with new options to update codes with new style
290
+ $old_section_options = $old_section_options ? $this->stripslashes_deep($old_section_options) : [];
291
+ $section_new_option = array_merge($old_section_options, $section_new_option);
292
+
293
+ // Update PP codes with new button style
294
+ $section_new_option = $this->update_button_style($section_new_option, 'pp');
295
+ }
296
+
297
+ // Terms and conditions Button
298
+ if($iubenda_section_name == 'iubenda_terms_conditions_solution') {
299
+ // Add a widget in the sidebar if the button is positioned automatically
300
+ if('automatic' === iub_array_get($section_new_option, 'button_position')){
301
+ iubenda()->assign_legal_block_or_widget();
302
+ }
303
+
304
+ // Update TC codes with new button style
305
+ $section_new_option = $this->update_button_style($section_new_option, 'tc');
306
+ }
307
+
308
+ //set the product configured option true
309
+ $section_new_option['configured'] = 'true';
310
+
311
+ $iubenda_activated_products = get_option('iubenda_activated_products');
312
+ $iubenda_activated_products[$iubenda_section_name] = 'true';
313
+ update_option('iubenda_activated_products', $iubenda_activated_products);
314
+
315
+ $section_new_option = $this->stripslashes_deep($section_new_option);
316
+ if($old_section_options){
317
+ $old_section_options = $this->stripslashes_deep($old_section_options);
318
+ $section_new_option = array_merge($old_section_options, $section_new_option);
319
+ }
320
+ update_option($iubenda_section_name, $section_new_option);
321
+
322
+ //update iubenda global options (public_ids)
323
+ update_option( 'iubenda_global_options', $global_options );
324
+ }
325
+
326
+ echo json_encode(['status' => 'done']);
327
+ wp_die();
328
+ }
329
+
330
+ private function prepare_custom_scripts_iframes($data, $flag ) {
331
+ return array_combine(
332
+ iub_array_get($data, $flag),
333
+ iub_array_get($data, 'type')
334
+ );
335
+ }
336
+
337
+ private function stripslashes_deep($value)
338
+ {
339
+ $value = is_array($value) ?
340
+ array_map('stripslashes_deep', $value) :
341
+ stripslashes($value);
342
+
343
+ return $value;
344
+ }
345
+
346
+ /**.
347
+ * Update button style in options
348
+ *
349
+ * @param $options
350
+ * @param $service
351
+ * @return array
352
+ */
353
+ public function update_button_style($options, $service): array
354
+ {
355
+ if($service == 'pp'){
356
+ $privacy_policy_generator = new PrivacyPolicyGenerator();
357
+ }
358
+
359
+ $new_options = [];
360
+ $button_style = iub_array_get($options, 'button_style');
361
+
362
+ foreach($options as $key => $index){
363
+ $new_options[$key] = $index;
364
+
365
+ if(substr( $key, 0, 5 ) === "code_"){
366
+ if($service == 'pp'){
367
+ // Get public_id for this language
368
+ $public_id = iub_array_get(iubenda()->options['global_options'], "public_ids.".substr( $key, 5 ), false) ?: false;
369
+
370
+ if ((!$index || empty($index)) && $public_id) {
371
+ $index = $privacy_policy_generator->handle(substr( $key, 5 ), $public_id, iubenda()->options['pp']);
372
+ }
373
+ }
374
+
375
+ $new_code = str_replace(['iubenda-black', 'iubenda-white'], "iubenda-{$button_style}",$index);
376
+ $new_options[$key] = $new_code;
377
+ }
378
+ }
379
+ return $new_options;
380
+ }
381
+
382
+ /**
383
+ * saving Iubenda cookie law solution options
384
+ * @param bool $default_options
385
+ */
386
+ private function cs_save_options($default_options = true)
387
+ {
388
+ $iubenda_cookie_solution_generator = new CookieSolutionGenerator;
389
+ $global_options = iubenda()->options['global_options'];
390
+
391
+ $codes_statues = [];
392
+ $site_id = null;
393
+ $new_cs_option = iub_array_get($_POST, 'iubenda_cookie_law_solution');
394
+
395
+ if (!$default_options) {
396
+ //CS plugin general options
397
+ $new_cs_option['parse'] = (bool)isset($new_cs_option['parse']);
398
+ $new_cs_option['parser_engine'] = isset($new_cs_option['parser_engine']) && in_array($new_cs_option['parser_engine'], ['default', 'new']) ? $new_cs_option['parser_engine'] : iubenda()->defaults['cs']['parser_engine'];
399
+ $new_cs_option['skip_parsing'] = (bool)isset($new_cs_option['skip_parsing']);
400
+ $new_cs_option['amp_support'] = iub_array_get($new_cs_option, 'amp_support', false) ?: false;
401
+ }
402
+
403
+ if(isset($new_cs_option['custom_scripts'])){
404
+ $new_cs_option['custom_scripts'] = $this->prepare_custom_scripts_iframes( iub_array_get($new_cs_option, 'custom_scripts'), 'script');
405
+
406
+ // Set all selected values Int to not break compatibility with old version
407
+ $new_cs_option['custom_scripts'] = array_map('intval' , $new_cs_option['custom_scripts']);
408
+ }else{
409
+ $new_cs_option['custom_scripts'] = [];
410
+ }
411
+
412
+ if(isset($new_cs_option['custom_iframes'])){
413
+ $new_cs_option['custom_iframes'] = $this->prepare_custom_scripts_iframes( iub_array_get($new_cs_option, 'custom_iframes'), 'iframe');
414
+
415
+ // Set all selected values Int to not break compatibility with old version
416
+ $new_cs_option['custom_iframes'] = array_map('intval' , $new_cs_option['custom_iframes']);
417
+ }else{
418
+ $new_cs_option['custom_iframes'] = [];
419
+ }
420
+
421
+ if ('simplified' === iub_array_get($new_cs_option, 'configuration_type')) {
422
+ // Check explicit accept & reject forced on if TCF is on
423
+ if(true == iub_array_get($new_cs_option, 'simplified.tcf')){
424
+ $new_cs_option['simplified']['explicit_accept'] = 'on';
425
+ $new_cs_option['simplified']['explicit_reject'] = 'on';
426
+ }
427
+ $languages = (new ProductHelper())->get_languages();
428
+ // loop on iubenda->>language
429
+ foreach ($languages as $lang_id => $lang_name) {
430
+ $privacy_policy_id = iub_array_get($global_options, "public_ids.{$lang_id}");
431
+
432
+ if(!$privacy_policy_id){
433
+ continue;
434
+ }
435
+
436
+ $site_id = iub_array_get(iubenda()->options, 'global_options.site_id') ?: null;
437
+
438
+ // Generating CS Simplified code
439
+ $cs_embed_code = $iubenda_cookie_solution_generator->handle($lang_id, $site_id, $privacy_policy_id, iub_array_get($new_cs_option, 'simplified'));
440
+
441
+ $new_cs_option["code_{$lang_id}"] = $this->stripslashes_deep($cs_embed_code);
442
+
443
+ // generate amp template file if the code is valid
444
+ if($cs_embed_code){
445
+ // generate amp template file
446
+ if ($new_cs_option['amp_support']) {
447
+ $template_done[$lang_id] = false;
448
+
449
+ $template_done[$lang_id] = (bool)iubenda()->AMP->generate_amp_template($cs_embed_code, $lang_id);
450
+
451
+ // Check if AMP is checked and the auto generated option is selected
452
+ if ("1" == $new_cs_option['amp_support'] && 'local' == $new_cs_option['amp_source']) {
453
+
454
+ if (is_bool($template_done[$lang_id]) && false === $template_done[$lang_id]) {
455
+ $this->add_amp_permission_error();
456
+ }
457
+ }
458
+
459
+ $new_cs_option['amp_template_done'] = $template_done;
460
+
461
+ // TODO need to checked with AMP files url
462
+ if (is_array($new_cs_option['amp_template'])) {
463
+ foreach ($new_cs_option['amp_template'] as $lang => $template) {
464
+ $new_cs_option['amp_template'][$lang] = esc_url($template);
465
+ }
466
+ } else {
467
+ $new_cs_option['amp_template'] = esc_url($new_cs_option['amp_template']);
468
+ }
469
+ }
470
+ }
471
+ }
472
+ }
473
+ elseif('manual' === iub_array_get($new_cs_option, 'configuration_type')){
474
+ foreach($new_cs_option as $index => $option) {
475
+ //check code if valid or not
476
+ if (substr($index, 0, 5) === "code_" && !empty($option)) {
477
+ // Getting data from embed code
478
+ $parsed_code = iubenda()->parse_configuration(stripslashes_deep($option));
479
+
480
+ // if code parsed correctly
481
+ // if(!$parsed_code){
482
+ // $codes_statues[substr($index, 5)] = false;
483
+ // continue;
484
+ // }
485
+ $new_cs_option['manual_'."$index"] = $option;
486
+ $codes_statues[substr($index, 5)] = true;
487
+
488
+ //getting cookiePolicyId to save it into Iubenda global option
489
+ if(iub_array_get($parsed_code, 'cookiePolicyId') ?: null){
490
+ $global_options['public_ids'][substr($index, 5)] = iub_array_get($parsed_code, 'cookiePolicyId');
491
+ }
492
+
493
+ //getting site id to save it into Iubenda global option
494
+ if(!$site_id && iub_array_get($parsed_code, 'siteId') ?: null){
495
+ $site_id = iub_array_get($parsed_code, 'siteId');
496
+ }
497
+
498
+ // generate amp template file
499
+ if ($new_cs_option['amp_support']) {
500
+ $lang_id = substr($index, 5);
501
+ $template_done[$lang_id] = false;
502
+
503
+ $template_done[$lang_id] = (bool)iubenda()->AMP->generate_amp_template(stripslashes_deep($option), $lang_id);
504
+
505
+ // Check if AMP is checked and the auto generated option is selected
506
+ if ("1" == $new_cs_option['amp_support'] && 'local' == $new_cs_option['amp_source']) {
507
+
508
+ if (is_bool($template_done[$lang_id]) && false === $template_done[$lang_id]) {
509
+ $this->add_amp_permission_error();
510
+ }
511
+ }
512
+
513
+ $new_cs_option['amp_template_done'] = $template_done;
514
+
515
+ // TODO need to checked with AMP files url
516
+ if (is_array($new_cs_option['amp_template'])) {
517
+ foreach ($new_cs_option['amp_template'] as $lang => $template) {
518
+ $new_cs_option['amp_template'][$lang] = esc_url($template);
519
+ }
520
+ } else {
521
+ $new_cs_option['amp_template'] = esc_url($new_cs_option['amp_template']);
522
+ }
523
+ }
524
+ }
525
+ }
526
+ // validating Embed Codes of CS contains at least one valid code
527
+ if(count(array_filter($codes_statues)) == 0){
528
+ echo json_encode(['status' => 'error', 'responseText' => "( Iubenda cookie law solution ) At least one code must be valid."]);
529
+ wp_die();
530
+ }
531
+ }
532
+
533
+ //set the product configured option true
534
+ $new_cs_option['configured'] = 'true';
535
+
536
+ // update only cs make it activated service
537
+ iubenda()->options['activated_products']['iubenda_cookie_law_solution'] = 'true';
538
+ update_option('iubenda_activated_products', iubenda()->options['activated_products']);
539
+
540
+ // saving new options merged by old options
541
+ $new_cs_option = $this->stripslashes_deep($new_cs_option);
542
+ $old_cs_options = $this->stripslashes_deep(iubenda()->options['cs']);
543
+
544
+ $new_cs_option = array_merge($old_cs_options, $new_cs_option);
545
+ update_option('iubenda_cookie_law_solution', $new_cs_option);
546
+
547
+ // save site ID into Iubenda global option
548
+ if($site_id){
549
+ $global_options['site_id'] = $site_id;
550
+ }
551
+
552
+ //update iubenda global options (site_id & public_ids)
553
+ iubenda()->options['global_options'] = $global_options;
554
+ update_option( 'iubenda_global_options', $global_options );
555
+ }
556
+
557
+ /**
558
+ * Saving iubenda plugin settings
559
+ * @param bool $default_options
560
+ */
561
+ private function plugin_settings_save_options($default_options = true)
562
+ {
563
+ $new_options = iub_array_get($_POST, 'iubenda_plugin_settings', []) ?: [];
564
+
565
+ if (!$default_options) {
566
+ $new_options['ctype'] = (bool)isset($new_options['ctype']);
567
+ $new_options['output_feed'] = (bool)isset($new_options['output_feed']);
568
+ $new_options['output_post'] = (bool)isset($new_options['output_post']);
569
+ $new_options['menu_position'] = (bool)isset($new_options['menu_position']) ? $new_options['menu_position'] : iubenda()->defaults['cs']['menu_position'];
570
+ $new_options['deactivation'] = (bool)isset($new_options['deactivation']);
571
+ }
572
+
573
+ $old_cs_options = $this->stripslashes_deep(iubenda()->options['cs']);
574
+ $new_cs_option = array_merge($old_cs_options, $new_options);
575
+ update_option('iubenda_cookie_law_solution', $new_cs_option);
576
+ }
577
+
578
+ /**
579
+ * saving Iubenda privacy policy solution options
580
+ */
581
+ private function pp_save_options()
582
+ {
583
+ // TODO enhance more
584
+ $privacy_policy_generator = new PrivacyPolicyGenerator();
585
+ $global_options = iubenda()->options['global_options'];
586
+
587
+ $languages = (new ProductHelper())->get_languages();
588
+ // loop on iubenda->>language
589
+ foreach ($languages as $lang_id => $v) {
590
+ $privacy_policy_id = null;
591
+
592
+ // getting privacy policy id from saved QG response
593
+ $privacy_policy_id = iub_array_get($global_options, "public_ids.{$lang_id}");
594
+
595
+ if(!$privacy_policy_id){
596
+ continue;
597
+ }
598
+
599
+ // Insert PP Simplified code into options
600
+ $pp_embed_code = $privacy_policy_generator->handle($lang_id, $privacy_policy_id, iub_array_get($_POST, 'iubenda_privacy_policy_solution.button_style'));
601
+
602
+ $pp_data["code_{$lang_id}"] = $pp_embed_code;
603
+
604
+ //getting public id to save it into Iubenda global option for each lang
605
+ $global_options['public_ids'][$lang_id] = $privacy_policy_id;
606
+ }
607
+
608
+ // Add a widget in the sidebar if the button is positioned automatically
609
+ if('automatic' === iub_array_get($_POST, 'iubenda_privacy_policy_solution.button_position')){
610
+ iubenda()->assign_legal_block_or_widget();
611
+ }
612
+
613
+ // Set the version of PP service as Simplified
614
+ $pp_data["version"] = 'Simplified';
615
+
616
+ // Set the configured status as true
617
+ $pp_data["configured"] = 'true';
618
+
619
+ update_option("iubenda_privacy_policy_solution", array_merge($pp_data, iub_array_get($_POST, 'iubenda_privacy_policy_solution')));
620
+
621
+ // update only pp make it activated service
622
+ iubenda()->options['activated_products']['iubenda_privacy_policy_solution'] = 'true';
623
+ update_option('iubenda_activated_products', iubenda()->options['activated_products']);
624
+
625
+ //update iubenda global options (site_id & public_ids)
626
+ iubenda()->options['global_options'] = $global_options;
627
+ update_option( 'iubenda_global_options', $global_options );
628
+ }
629
+
630
+ private function add_amp_permission_error()
631
+ {
632
+ $file_path = IUBENDA_PLUGIN_PATH . 'templates' . DIRECTORY_SEPARATOR;
633
+ $message = sprintf( __( 'Currently, you do not have write permission for <i class="text-bold">%s</i>. For instructions on how to fix this, please read <a class="link-underline" target="_blank" href="%s">our guide</a>.', 'iubenda' ), $file_path, iubenda()->settings->links['amp_permission_support']);
634
+
635
+ add_settings_error('cs_settings_errors', 'iub_cs_settings_updated', $message, 'error');
636
+ iubenda()->settings->add_notice( 'iub_integrated_success', $message, 'error' );
637
+ }
638
+ }
includes/RadarService.php ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) )
4
+ exit;
5
+
6
+
7
+ /**
8
+ * Class Radar_API
9
+ */
10
+ class RadarService {
11
+
12
+ private $authorization = [
13
+ 'username' => 'devops',
14
+ 'password' => 'orIDiVvPVdHvwyjM4',
15
+ ];
16
+ private $serviceRating = '';
17
+
18
+ private $url = [
19
+ 'match-async' => 'https://radar.iubenda.com/api/match-async',
20
+ 'match-progress' => 'https://radar.iubenda.com/api/match-progress',
21
+ ];
22
+
23
+ public $apiConfiguration = [];
24
+
25
+ private $updateMessage = "Please, make also sure the plugin is updated to the <a target='_blank' href='https://wordpress.org/plugins/iubenda-cookie-law-solution/'><u> latest version.</u></a>";
26
+
27
+ public function __construct(){
28
+ $this->serviceRating = new ServiceRating();
29
+ $this->apiConfiguration = get_option('iubenda_radar_api_configuration', []) ?: [];
30
+ }
31
+
32
+ public function ask_radar_to_send_request(){
33
+ if (!empty($this->apiConfiguration)) {
34
+ return $this->send_radar_progress_request();
35
+ }
36
+
37
+ return $this->send_radar_sync_request();
38
+ }
39
+
40
+ public function force_delete_radar_configuration(){
41
+ delete_option('iubenda_radar_api_configuration');
42
+ return true;
43
+ }
44
+
45
+ public function calculate_radar_percentage(){
46
+ $services['pp'] = $this->serviceRating->is_privacy_policy_activated();
47
+ $services['cs'] = $this->serviceRating->is_cookie_solution_activated();
48
+ $services['cons'] = boolval($this->serviceRating->is_cookie_solution_activated() && $this->serviceRating->is_cookie_solution_automatically_parse_enabled());
49
+ $services['tc'] = $this->serviceRating->is_terms_conditions_activated();
50
+
51
+ return [
52
+ 'percentage' => (count(array_filter($services)) / count($services)) * 100,
53
+ 'services' => $services
54
+ ];
55
+ }
56
+
57
+ private function send_radar_sync_request()
58
+ {
59
+ $website = get_site_url();
60
+ $data = ['timeout' => 30,
61
+ 'redirection' => 5,
62
+ 'httpversion' => '1.0',
63
+ 'headers' => ['Authorization' => 'Basic ' . base64_encode($this->authorization['username'] . ':' . $this->authorization['password'])],
64
+ 'body' => ['url' => $website, 'detectLegalDocuments' => 'true'],
65
+ ];
66
+
67
+ $response = wp_remote_get(iub_array_get($this->url, 'match-async'), $data);
68
+ $responseCode = wp_remote_retrieve_response_code($response);
69
+
70
+ //check response code
71
+ $this->check_response($response, $responseCode);
72
+
73
+ $body = json_decode(iub_array_get($response, 'body'), true);
74
+
75
+ $body['trial_num'] = 1;
76
+ $body['next_trial'] = time();
77
+
78
+ update_option('iubenda_radar_api_configuration', $body);
79
+
80
+ if (defined('DOING_AJAX') && DOING_AJAX) {
81
+ wp_send_json(['code' => $responseCode, 'status' => 'progress',]);
82
+ wp_die();
83
+ }
84
+
85
+ return true;
86
+ }
87
+
88
+ private function send_radar_progress_request()
89
+ {
90
+ $iubendaRadarApiConfiguration = $this->apiConfiguration;
91
+
92
+
93
+ if (iub_array_get($iubendaRadarApiConfiguration, 'status') == 'completed') {
94
+ if (defined('DOING_AJAX') && DOING_AJAX) {
95
+ wp_send_json(['code' => '200', 'status' => 'complete', 'data' => $this->calculate_radar_percentage(),]);
96
+ wp_die();
97
+ }
98
+
99
+ return true;
100
+ }
101
+
102
+ // Check if the next trial is not now
103
+ if(intval(iub_array_get($iubendaRadarApiConfiguration, 'next_trial')) > time()){
104
+ if (defined('DOING_AJAX') && DOING_AJAX) {
105
+ $nextRequestInSec = intval(iub_array_get($iubendaRadarApiConfiguration, 'next_trial')) - (time());
106
+
107
+ wp_send_json(['code' => '200', 'status' => 'timeout', 'data' => $nextRequestInSec,]);
108
+ wp_die();
109
+ }
110
+
111
+ return true;
112
+ }
113
+
114
+ $nextTrial = time();
115
+ $trialNum = intval(iub_array_get($iubendaRadarApiConfiguration, 'trial_num', 1) ?? 1);
116
+
117
+ // Check if 3 trials were made in this round
118
+ if(is_int($trialNum / 3)){
119
+ $rounds = $trialNum / 3 ;
120
+ $nextTrial = time() + (pow(30, $rounds));
121
+ }
122
+ $trialNum++;
123
+
124
+ $id = iub_array_get($iubendaRadarApiConfiguration, 'id');
125
+
126
+ $data = [
127
+ 'timeout' => 30,
128
+ 'redirection' => 5,
129
+ 'httpversion' => '1.0',
130
+ 'headers' => ['Authorization' => 'Basic ' . base64_encode($this->authorization['username'] . ':' . $this->authorization['password'])],
131
+ 'body' => ['id' => $id],
132
+ ];
133
+
134
+ $response = wp_remote_get(iub_array_get($this->url, 'match-progress'), $data);
135
+ $responseCode = wp_remote_retrieve_response_code($response);
136
+
137
+ //check response code
138
+ $this->check_response($response, $responseCode);
139
+
140
+ $body = json_decode(iub_array_get($response, 'body'), true);
141
+ $body['trial_num'] = $trialNum;
142
+ $body['next_trial'] = $nextTrial;
143
+
144
+ update_option('iubenda_radar_api_configuration', $body);
145
+
146
+ if (defined('DOING_AJAX') && DOING_AJAX) {
147
+ wp_send_json(['code' => $responseCode, 'status' => 'progress',]);
148
+ wp_die();
149
+ }
150
+
151
+ return true;
152
+ }
153
+
154
+ private function check_response($response, $responseCode)
155
+ {
156
+ if (is_wp_error($response) || $responseCode != 200) {
157
+ if (!is_numeric($responseCode)) {
158
+ $message = $this->updateMessage;
159
+ } elseif ($responseCode == 408) {
160
+ //408 error code it`s mean request timeout
161
+ $message = $this->updateMessage;
162
+ } elseif (is_numeric(substr($responseCode, 0, 1)) == 4) {
163
+ //4xx error codes
164
+ $message = $this->updateMessage;
165
+ } else {
166
+ $message = "Something went wrong: " . $response->get_error_message();
167
+ }
168
+
169
+ if (defined('DOING_AJAX') && DOING_AJAX) {
170
+ wp_send_json(['code' => $responseCode, 'status' => 'error', 'message' => $message]);
171
+ wp_die();
172
+ }
173
+ return true;
174
+ }
175
+ }
176
+ }
includes/ServiceRating.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // exit if accessed directly
3
+ if ( ! defined( 'ABSPATH' ) )
4
+ exit;
5
+
6
+
7
+ /**
8
+ * Class ServiceRating
9
+ */
10
+ class ServiceRating {
11
+ public $radar_api_configuration = [];
12
+
13
+ public function __construct(){
14
+ $this->radar_api_configuration = get_option('iubenda_radar_api_configuration', []) ?: [];
15
+ }
16
+
17
+ public function is_cookie_solution_activated(){
18
+ if(iub_array_get(iubenda()->settings->services, 'cs.status') == 'true'){
19
+ return true;
20
+ }
21
+
22
+ if($this->is_service_detected_or_installed_by_radar('cp') == true){
23
+ return true;
24
+ }
25
+ return false;
26
+ }
27
+
28
+ public function is_cookie_solution_automatically_parse_enabled(){
29
+ if((bool) iub_array_get(iubenda()->options, 'cs.parse') == true){
30
+ return true;
31
+ }
32
+
33
+ if($this->is_service_detected_or_installed_by_radar('cp') == true){
34
+ return true;
35
+ }
36
+ return false;
37
+ }
38
+
39
+ public function is_privacy_policy_activated(){
40
+ if(iub_array_get(iubenda()->settings->services, 'pp.status') == 'true'){
41
+ return true;
42
+ }
43
+
44
+ if($this->is_service_detected_or_installed_by_radar('pp') == true){
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+
50
+ public function is_terms_conditions_activated(){
51
+ if(iub_array_get(iubenda()->settings->services, 'tc.status') == 'true'){
52
+ return true;
53
+ }
54
+
55
+ if($this->is_service_detected_or_installed_by_radar('tc') == true){
56
+ return true;
57
+ }
58
+ return false;
59
+ }
60
+
61
+ private function is_service_installed_by_radar($service){
62
+ if(iub_array_get($this->radar_api_configuration, 'status') == 'completed'){
63
+ return iub_array_get($this->radar_api_configuration, 'result.meta.'.$service.'_installed');
64
+ }
65
+ return false;
66
+ }
67
+
68
+ private function is_service_detected_by_radar($service){
69
+ if(iub_array_get($this->radar_api_configuration, 'status') == 'completed'){
70
+ return boolval(iub_array_get($this->radar_api_configuration, 'result.meta.'.'detected_'.$service));
71
+ }
72
+ return false;
73
+ }
74
+
75
+ public function check_service_status($service){
76
+ if($service == 'cs'){
77
+ return $this->is_cookie_solution_activated();
78
+ }
79
+ if($service == 'cons'){
80
+ return $this->is_cookie_solution_automatically_parse_enabled();
81
+ }
82
+ if($service == 'pp'){
83
+ return $this->is_privacy_policy_activated();
84
+ }
85
+ if($service == 'tc'){
86
+ return $this->is_terms_conditions_activated();
87
+ }
88
+
89
+ return false;
90
+ }
91
+
92
+ public function services_percentage(){
93
+ $services['pp'] = $this->is_privacy_policy_activated();
94
+ $services['cs'] = $this->is_cookie_solution_activated();
95
+ $services['cons'] = boolval($this->is_cookie_solution_activated() && $this->is_cookie_solution_automatically_parse_enabled());
96
+ $services['tc'] = $this->is_terms_conditions_activated();
97
+
98
+ return (count(array_filter($services)) / count($services)) * 100;
99
+ }
100
+
101
+ public function rating_calculation_components(){
102
+ return [
103
+ 'cs' => [
104
+ 'status' => $this->is_cookie_solution_activated(),
105
+ 'label' => __('Set up a cookie banner', 'iubenda'),
106
+ 'paragraph'=> __('This accounts for 25&#37; of your score. Your cookie banner should inform your users about your use of cookies and similar tracking technologies, and their rights in this regard. You may need a banner if either the GDPR, CCPA or ePrivacy apply to you.', 'iubenda')
107
+ ],
108
+ 'cons' => [
109
+ 'status' => boolval($this->is_cookie_solution_activated() && $this->is_cookie_solution_automatically_parse_enabled()),
110
+ 'label' => __('Only track users that give consent', 'iubenda'),
111
+ 'paragraph'=> __('This accounts for 25&#37; of your score. If you’re based in Europe or have Europe-based users, you likely need to block cookies from running until you receive user consent. To do this, select “Automatically block scripts detected by the plugin”.', 'iubenda')
112
+ ],
113
+ 'pp' => [
114
+ 'status' => $this->is_privacy_policy_activated(),
115
+ 'label' => __('Set up a privacy policy', 'iubenda'),
116
+ 'paragraph'=> __('This accounts for 25&#37; of your score. A privacy policy is a requirement under most privacy laws around the world. This document typically includes legally required disclosures about the type of personal data you process, why you need to process it, how the processing is done and the user’s rights under applicable law.', 'iubenda')
117
+ ],
118
+ 'tc' => [
119
+ 'status' => $this->is_terms_conditions_activated(),
120
+ 'label' => __('Set up terms and conditions', 'iubenda'),
121
+ 'paragraph'=> __('This accounts for 25&#37; of your score. Terms and conditions help to protect you, the website owner, from potential liabilities and more. Furthermore, if you run an e-commerce site or app, having this document may be legally required as Terms typically contain legally mandatory disclosures. Terms are legally binding documents, and therefore it’s important to ensure that they actually fit your specific scenario.', 'iubenda')
122
+ ],
123
+ ];
124
+ }
125
+
126
+ private function is_service_detected_or_installed_by_radar(string $string) {
127
+ if($this->is_service_installed_by_radar($string) == true || $this->is_service_detected_by_radar($string) == true){
128
+ return true;
129
+ }
130
+ return false;
131
+ }
132
+
133
+ }
includes/amp.php CHANGED
@@ -20,7 +20,8 @@ class iubenda_AMP {
20
  'acceptButtonDisplay' => true,
21
  'customizeButtonDisplay' => true,
22
  'rejectButtonDisplay' => true,
23
- 'backgroundOverlay' => true
 
24
  );
25
 
26
  /**
@@ -358,7 +359,17 @@ class iubenda_AMP {
358
  $has_www = strpos( $parsed_file['host'], 'www.' ) === 0;
359
 
360
  // add or remove www from url string to make iframe url pass AMP validation
361
- $tweaked_host = ! $is_localhost && ( ! $is_subdomain || $has_www ) ? ( ! $has_www ? 'www.' . $parsed_file['host'] : preg_replace( '/^www\./i', '', $parsed_file['host'] ) ) : $parsed_file['host'];
 
 
 
 
 
 
 
 
 
 
362
 
363
  // generate new url
364
  $tweaked_url = $parsed_file['scheme'] . '://' . $tweaked_host . ( isset( $parsed_file['port'] ) ? ':' . $parsed_file['port'] : '' ) . $parsed_file['path'] . ( ! empty( $parsed_file['query'] ) ? '?' . $parsed_file['query'] : '' );
20
  'acceptButtonDisplay' => true,
21
  'customizeButtonDisplay' => true,
22
  'rejectButtonDisplay' => true,
23
+ 'backgroundOverlay' => true,
24
+ 'applyStyles' => true
25
  );
26
 
27
  /**
359
  $has_www = strpos( $parsed_file['host'], 'www.' ) === 0;
360
 
361
  // add or remove www from url string to make iframe url pass AMP validation
362
+ #1 Check if not localhost and not subdomain or doesn't have www
363
+ if ( ! $is_localhost && ! $has_www ) {
364
+ #2 Append www if not exist
365
+ $tweaked_host = 'www.' . $parsed_file['host'];
366
+ } else if ( ! $is_localhost && $has_www ) {
367
+ #3 Remove www if exist
368
+ $tweaked_host = preg_replace( '/^www\./i', '', $parsed_file['host'] );
369
+ } else {
370
+ #4 else Get the current host normally
371
+ $tweaked_host = $parsed_file['host'];
372
+ }
373
 
374
  // generate new url
375
  $tweaked_url = $parsed_file['scheme'] . '://' . $tweaked_host . ( isset( $parsed_file['port'] ) ? ':' . $parsed_file['port'] : '' ) . $parsed_file['path'] . ( ! empty( $parsed_file['query'] ) ? '?' . $parsed_file['query'] : '' );
includes/block/IubendaLegalBlock.php ADDED
@@ -0,0 +1,405 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class IubendaLegalBlock
5
+ {
6
+ const IUB_LEGAL_BLOCK_NAME = 'iubenda/legal-block'; // IUB legal block Name
7
+ const IUB_LEGAL_BLOCK_SHORTCODE = 'iub-wp-block-buttons'; // IUB legal block Shortcode
8
+
9
+ /**
10
+ * IubendaLegalBlock constructor.
11
+ */
12
+ public function __construct()
13
+ {
14
+ add_action('iubenda_attach_block_in_footer', [$this, 'attach_legal_block_into_footer']);
15
+
16
+ // Change preregistered default footer content
17
+ add_action('init', [$this, 'change_pre_registered_default_footer_content'], 10, 0);
18
+
19
+ // Attach IUB legal block into WP blocks area
20
+ add_action('admin_init', [$this, 'attach_legal_block_into_block_area'], 10, 0);
21
+
22
+ // Register IUB Legal block shortcode
23
+ add_action('after_setup_theme', [$this, 'register_shortcode']);
24
+ }
25
+
26
+ /**
27
+ * Register IUB Legal block shortcode function.
28
+ *
29
+ * @return void
30
+ */
31
+ public function register_shortcode() {
32
+ add_shortcode(static::IUB_LEGAL_BLOCK_SHORTCODE, [$this, 'render_iub_legal_block']);
33
+ }
34
+
35
+ /**
36
+ * Attach iubenda legal block in footer
37
+ */
38
+ public function attach_legal_block_into_footer()
39
+ {
40
+ // if current theme doesn't supports blocks -> return
41
+ if (!$this->check_current_theme_supports_blocks()) {
42
+ return;
43
+ }
44
+
45
+ // Check if IUB short code exist in footer
46
+ if ($this->check_iub_block_shortcode_exists_in_the_footer()) {
47
+ return;
48
+ }
49
+
50
+ $this->force_append_legal_block_in_footer();
51
+ }
52
+
53
+ /**
54
+ * Detach iubenda legal block from footer
55
+ */
56
+ public function detach_legal_block_from_footer()
57
+ {
58
+ // if current theme doesn't supports blocks -> return
59
+ if (!$this->check_current_theme_supports_blocks()) {
60
+ return;
61
+ }
62
+
63
+ // Check if IUB short code exist in footer
64
+ if ($this->check_iub_block_shortcode_exists_in_the_footer()) {
65
+ $this->force_detach_legal_block_from_footer();
66
+ return;
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Attach iubenda legal block in WP blocks area
72
+ */
73
+ public function attach_legal_block_into_block_area()
74
+ {
75
+ // Register IUB js block
76
+ wp_register_script('iubenda-block-editor', IUBENDA_PLUGIN_URL . '/assets/js/legal_block.js', ['wp-blocks', 'wp-block-editor'], iubenda()->version);
77
+ register_block_type(static::IUB_LEGAL_BLOCK_NAME, ['editor_script' => 'iubenda-block-editor',]);
78
+
79
+ // Send iub vars from backend to JS file
80
+ wp_localize_script('iubenda-block-editor', 'iub_block_js_vars', [
81
+ 'block_name' => 'iubenda/legal-block',
82
+ 'iub_legal_block_shortcode' => static::IUB_LEGAL_BLOCK_SHORTCODE,
83
+ 'iub_legal_block_short_title' => __('Legal', 'iubenda'),
84
+ ]);
85
+ }
86
+
87
+ /**
88
+ * Render iubenda legal block and apply filters
89
+ * @return mixed
90
+ */
91
+ public function render_iub_legal_block()
92
+ {
93
+ $html = '';
94
+ $html = apply_filters('before_iub_legal_block_section', $html);
95
+ $html .= '<section>' . $this->iub_legal_block_html($html) . '</section>';
96
+ $html = apply_filters('after_iub_legal_block_section', $html);
97
+
98
+ return $html;
99
+ }
100
+
101
+ /**
102
+ * Check if the current theme support WP blocks or not
103
+ * @return bool
104
+ */
105
+ public function check_current_theme_supports_blocks()
106
+ {
107
+ // Condition if there is no sidebar and the activated theme is working by WP blocks
108
+ global $wp_registered_sidebars;
109
+
110
+ if (!boolval(iub_array_get($wp_registered_sidebars, 'sidebar-1'))) {
111
+ return true;
112
+ }
113
+
114
+ return false;
115
+ }
116
+
117
+ /**
118
+ * Iubenda legal block html
119
+ * @param $html
120
+ * @return mixed|string
121
+ */
122
+ private function iub_legal_block_html($html)
123
+ {
124
+ $quick_generator_service = new QuickGeneratorService();
125
+
126
+ $pp_status = iub_array_get(iubenda()->settings->services, 'pp.status') == 'true';
127
+ $pp_position = iub_array_get(iubenda()->options['pp'], 'button_position') == 'automatic';
128
+ $tc_status = iub_array_get(iubenda()->settings->services, 'tc.status') == 'true';
129
+ $tc_position = iub_array_get(iubenda()->options['tc'], 'button_position') == 'automatic';
130
+
131
+ if ($pp_status && $pp_position) {
132
+ $html .= $quick_generator_service->pp_button();
133
+ }
134
+
135
+ if (($pp_status && $pp_position) && ($tc_status && $tc_position)) {
136
+ $html .= '<br>';
137
+ }
138
+
139
+ if (($tc_status == 'true') && ($tc_position == 'automatic')) {
140
+ $html .= $quick_generator_service->tc_button();
141
+ }
142
+
143
+ return $html;
144
+ }
145
+
146
+ /**
147
+ * Get footer post from database
148
+ * @return mixed|null
149
+ */
150
+ private function get_footer_from_database()
151
+ {
152
+ // Default arguments
153
+ $args = [
154
+ 'post_type' => 'wp_template_part',
155
+ 'post_status' => 'publish',
156
+ 'tax_query' => [
157
+ [
158
+ 'taxonomy' => 'wp_theme',
159
+ 'field' => 'slug',
160
+ 'terms' => [ get_stylesheet() ],
161
+ ],
162
+ ],
163
+ 'posts_per_page' => 1,
164
+ 'no_found_rows' => true,
165
+ ];
166
+
167
+ // Search for footer in database
168
+ $args['name'] = 'footer';
169
+
170
+ // Run WP Query with new args
171
+ $footer_query = new WP_Query($args);
172
+ $footer = $footer_query->have_posts() ? $footer_query->next_post() : null;
173
+
174
+ // Footer exist in database
175
+ if ($footer) {
176
+ return $footer;
177
+ }
178
+
179
+ // Search if it is inserted as a default footer in the database
180
+ $args['name'] = 'default-footer';
181
+
182
+ // Run WP Query with new args
183
+ $footer_query = new WP_Query($args);
184
+ $footer = $footer_query->have_posts() ? $footer_query->next_post() : null;
185
+
186
+ return $footer;
187
+ }
188
+
189
+ /**
190
+ * Check if IUB short code exist in footer
191
+ * @return bool
192
+ */
193
+ private function check_iub_block_shortcode_exists_in_the_footer()
194
+ {
195
+ $footer = $this->get_footer_from_database();
196
+
197
+ if ($footer && $this->check_iub_block_shortcode_exists_in_the_footer_content($footer->post_content)) {
198
+ return true;
199
+ }
200
+
201
+ return false;
202
+ }
203
+
204
+ /**
205
+ * Force append IUB legal block in footer
206
+ */
207
+ private function force_append_legal_block_in_footer()
208
+ {
209
+ $footer = $this->get_footer_from_database();
210
+
211
+ if ($footer) {
212
+ $footer->post_content = $this->insert_iub_block_shortcode_into_footer_by_dom($footer->post_content);
213
+
214
+ $this->update_the_footer_into_database($footer);
215
+ }
216
+
217
+ // There is no footer stored in database then
218
+ // Attach legal block into WP_Block_Patterns as WP default footer and insert this footer into database
219
+ $this->change_pre_registered_default_footer_content(true);
220
+ }
221
+
222
+ /**
223
+ * Insert Legal block into WP content by php DOMDocument
224
+ *
225
+ * @param $footer_content
226
+ * @return false|string
227
+ */
228
+ private function insert_iub_block_shortcode_into_footer_by_dom($footer_content)
229
+ {
230
+ if($this->check_iub_block_shortcode_exists_in_the_footer_content($footer_content)){
231
+ return $footer_content;
232
+ }
233
+
234
+ $dom = new DOMDocument();
235
+ $previous_value = libxml_use_internal_errors(TRUE);
236
+ $dom->loadHTML((string)$footer_content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
237
+ libxml_clear_errors();
238
+ libxml_use_internal_errors($previous_value);
239
+
240
+ $target_div = $dom->getElementsByTagName('div')->item(1);
241
+
242
+ if(!$target_div){
243
+ return '';
244
+ }
245
+
246
+ // insert End of Iubenda legal block before start
247
+ $template = $dom->createDocumentFragment();
248
+ $template->appendXML(' <!-- /wp:'. static::IUB_LEGAL_BLOCK_NAME .' --> ');
249
+ $target_div->insertBefore($template, $target_div->firstChild);
250
+
251
+ // Create container div with class 'wp-block-iubenda-legal-block'
252
+ $div = $dom->createElement("div");
253
+ $div->setAttribute("class", "wp-block-iubenda-legal-block");
254
+
255
+ // Append the block title
256
+ $div->appendChild($dom->createElement('p', __('Legal', 'iubenda')));
257
+
258
+ // Append the block content
259
+ $div->appendChild($dom->createElement('p', '[iub-wp-block-buttons]'));
260
+
261
+ // Insert the block into the footer
262
+ $target_div->insertBefore($div, $target_div->firstChild);
263
+
264
+ // Append Start of Iubenda legal block
265
+ $template = $dom->createDocumentFragment();
266
+ $template->appendXML(' <!-- wp:'. static::IUB_LEGAL_BLOCK_NAME .' --> ');
267
+ $target_div->insertBefore($template, $target_div->firstChild);
268
+
269
+ return $dom->saveHTML();
270
+ }
271
+
272
+ /**
273
+ * Remove Legal block from WP content
274
+ *
275
+ * @param $footer_content
276
+ * @return false|string
277
+ */
278
+ private function remove_iub_block_shortcode_from_footer($footer_content)
279
+ {
280
+ $start_of_iub_legal_block = '<!-- wp:'. static::IUB_LEGAL_BLOCK_NAME .' -->';
281
+ $end_of_iub_legal_block = '<!-- /wp:'. static::IUB_LEGAL_BLOCK_NAME .' -->';
282
+
283
+ return $this->iub_delete_in_between($start_of_iub_legal_block, $end_of_iub_legal_block, $footer_content);
284
+ }
285
+
286
+ /**
287
+ * Update the current footer
288
+ *
289
+ * @param $footer
290
+ */
291
+ private function update_the_footer_into_database($footer)
292
+ {
293
+ return wp_update_post($footer);
294
+ }
295
+
296
+ /**
297
+ * Attach legal block into WP_Block_Patterns as WP default footer
298
+ * if $insert_into_database is true insert default footer into database
299
+ *
300
+ * @param bool $insert_into_database
301
+ * @return void
302
+ */
303
+ public function change_pre_registered_default_footer_content($insert_into_database = false)
304
+ {
305
+ $public_id = (new ProductHelper())->get_public_id_for_current_language();
306
+
307
+ // Return false if there is no public id for current language
308
+ if (!($public_id)) {
309
+ return;
310
+ }
311
+
312
+ // Check for PP & TC service status and codes
313
+ if (!(new ProductHelper())->check_pp_tc_status_and_position()) {
314
+ return;
315
+ }
316
+
317
+ $block_registry = WP_Block_Patterns_Registry::get_instance();
318
+
319
+ foreach ( $block_registry->get_all_registered() as $block) {
320
+ $block_name = iub_array_get($block, 'name') ?: null;
321
+
322
+ if (strpos($block_name, 'footer-default') !== false) {
323
+ // Unregister default footer
324
+ $block_registry->unregister(iub_array_get($block, 'name'));
325
+
326
+ // Attach Iubenda legal block in footer content
327
+ $block['content'] = $this->insert_iub_block_shortcode_into_footer_by_dom(iub_array_get($block, 'content'));
328
+
329
+ // Register footer after attached Iubenda legal block on it
330
+ $block_registry->register(iub_array_get($block, 'name'), $block);
331
+
332
+ if ($insert_into_database) {
333
+ // Insert the footer into database
334
+ $this->insert_default_footer_into_database($block);
335
+ }
336
+ }
337
+ }
338
+ }
339
+
340
+ /**
341
+ * Insert default footer into database
342
+ *
343
+ * @param $block
344
+ * @return int|WP_Error
345
+ */
346
+ private function insert_default_footer_into_database($block)
347
+ {
348
+ // taxonomies
349
+ $taxonomies = [
350
+ 'wp_template_part_area' => 'footer',
351
+ 'wp_theme' => get_stylesheet(), // Current active theme slug
352
+ ];
353
+
354
+ // New footer data
355
+ $footer = [
356
+ 'post_title' => 'Footer',
357
+ 'post_content' => $block['content'],
358
+ 'post_status' => 'publish',
359
+ 'post_author' => 1,
360
+ 'post_type' => 'wp_template_part',
361
+ 'post_category' => [ 'footer' ],
362
+ 'tax_input' => $taxonomies
363
+ ];
364
+
365
+ // Insert the new footer into the database
366
+ wp_insert_post($footer);
367
+ }
368
+
369
+ /**
370
+ * Force detach IUB legal block from footer
371
+ */
372
+ private function force_detach_legal_block_from_footer()
373
+ {
374
+ $footer = $this->get_footer_from_database();
375
+
376
+ if ($footer) {
377
+ $footer->post_content = $this->remove_iub_block_shortcode_from_footer($footer->post_content);
378
+
379
+ $this->update_the_footer_into_database($footer);
380
+ }
381
+ }
382
+
383
+ private function iub_delete_in_between($beginning, $end, $string) {
384
+ $beginning_pos = strpos($string, $beginning);
385
+ $end_pos = strpos($string, $end);
386
+ if ($beginning_pos === false || $end_pos === false) {
387
+ return $string;
388
+ }
389
+
390
+ $text_to_delete = substr($string, $beginning_pos, ($end_pos + strlen($end)) - $beginning_pos);
391
+
392
+ return $this->iub_delete_in_between($beginning, $end, str_replace($text_to_delete, '', $string)); // recursion to ensure occurrences are removed
393
+ }
394
+
395
+ /**
396
+ * Check IUB block shortcode exists in the footer content
397
+ * @param $footer_content
398
+ * @return bool
399
+ */
400
+ private function check_iub_block_shortcode_exists_in_the_footer_content($footer_content)
401
+ {
402
+ return strpos($footer_content, '[iub-wp-block-buttons]') !== false;
403
+ }
404
+
405
+ }
includes/forms-list-table.php CHANGED
@@ -19,13 +19,14 @@ class iubenda_List_Table_Forms extends WP_List_Table {
19
  */
20
  public function __construct() {
21
  global $status, $page;
 
22
 
23
  // set parent defaults
24
  parent::__construct( array(
25
  'ajax' => false
26
  ) );
27
 
28
- $this->base_url = esc_url_raw( add_query_arg( array( 'tab' => 'cons' ), iubenda()->base_url ) );
29
  }
30
 
31
 
@@ -43,13 +44,7 @@ class iubenda_List_Table_Forms extends WP_List_Table {
43
  $order = ( isset( $_GET['order'] ) ) && in_array( $_GET['order'], array( 'asc', 'desc' ) ) ? esc_attr( $_GET['order'] ) : 'desc';
44
 
45
  $per_page = 20;
46
-
47
- if ( isset( $_GET['number'] ) ) {
48
- $number = (int) $_GET['number'];
49
- } else {
50
- $number = $per_page + min( 8, $per_page ); // grab a few extra
51
- }
52
- $page = $this->get_pagenum();
53
 
54
  $args = array(
55
  'orderby' => $orderby,
@@ -63,8 +58,9 @@ class iubenda_List_Table_Forms extends WP_List_Table {
63
 
64
  // echo '<pre>'; print_r( $items ); echo '</pre>';
65
 
 
66
  if ( is_array( $items ) ) {
67
- $this->items = array_slice( $items, 0, $per_page );
68
  $this->extra_items = array_slice( $items, $per_page );
69
  }
70
 
@@ -88,7 +84,6 @@ class iubenda_List_Table_Forms extends WP_List_Table {
88
  */
89
  public function get_columns() {
90
  $columns = array(
91
- 'cb' => '<input type="checkbox"/>',
92
  'title' => __( 'Form Title', 'iubenda' ),
93
  'ID' => __( 'Form ID', 'iubenda' ),
94
  'source' => __( 'Form Source', 'iubenda' ),
@@ -153,8 +148,8 @@ class iubenda_List_Table_Forms extends WP_List_Table {
153
 
154
  $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-form_{$item->ID}" ) );
155
  $url = add_query_arg( array( 'form_id' => $item->ID ), $this->base_url );
156
- $edit_url = add_query_arg( array( 'action' => 'edit' ), $url );
157
- $delete_url = add_query_arg( array( 'action' => 'delete' ), $url ) . "&$del_nonce";
158
 
159
  // preorder it: View | Approve | Unapprove | Delete
160
  $actions = array(
@@ -162,7 +157,7 @@ class iubenda_List_Table_Forms extends WP_List_Table {
162
  'delete' => ''
163
  );
164
 
165
- $actions['view'] = "<a href='$edit_url' aria-label='" . esc_attr__( 'Edit this form', 'iubenda' ) . "'>" . __( 'Edit' ) . '</a>';
166
  $actions['delete'] = "<a href='$delete_url' aria-label='" . esc_attr__( 'Delete this form', 'iubenda' ) . "'>" . __( 'Delete', 'iubenda' ) . '</a>';
167
 
168
  $i = 0;
@@ -228,17 +223,6 @@ class iubenda_List_Table_Forms extends WP_List_Table {
228
  return $output;
229
  }
230
 
231
- /**
232
- * Display checkboxex callback.
233
- *
234
- * @return string
235
- */
236
- public function column_cb( $item ) {
237
- return sprintf(
238
- '<input type="checkbox" name="%1$s[]" value="%2$s" />', 'form', $item->ID
239
- );
240
- }
241
-
242
  /**
243
  * Generate the table navigation above or below the table
244
  *
@@ -274,7 +258,7 @@ class iubenda_List_Table_Forms extends WP_List_Table {
274
 
275
  if ( ! empty( $output ) ) {
276
  echo $output;
277
- submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
278
  }
279
  }
280
  ?>
@@ -344,7 +328,7 @@ class iubenda_List_Table_Forms extends WP_List_Table {
344
  }
345
 
346
  $views = $items_total > 0 ? array(
347
- 'all' => '<a href="' . $this->base_url . '"' . ($status === '' ? ' class="current"' : '') . '>' . esc_html__( 'All' ) . ' <span class="count">(' . $items_total . ')</span></a>'
348
  ) : '';
349
 
350
  foreach ( iubenda()->forms->statuses as $key => $view ) {
@@ -364,4 +348,89 @@ class iubenda_List_Table_Forms extends WP_List_Table {
364
  echo __( 'No forms found.', 'iubenda' );
365
  }
366
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  }
19
  */
20
  public function __construct() {
21
  global $status, $page;
22
+ $GLOBALS['hook_suffix'] = isset($GLOBALS['hook_suffix']) ? $GLOBALS['hook_suffix'] : '';
23
 
24
  // set parent defaults
25
  parent::__construct( array(
26
  'ajax' => false
27
  ) );
28
 
29
+ $this->base_url = esc_url_raw( add_query_arg( array( 'view' => 'cons-configuration' ), iubenda()->base_url ) );
30
  }
31
 
32
 
44
  $order = ( isset( $_GET['order'] ) ) && in_array( $_GET['order'], array( 'asc', 'desc' ) ) ? esc_attr( $_GET['order'] ) : 'desc';
45
 
46
  $per_page = 20;
47
+ $page = $this->get_pagenum();
 
 
 
 
 
 
48
 
49
  $args = array(
50
  'orderby' => $orderby,
58
 
59
  // echo '<pre>'; print_r( $items ); echo '</pre>';
60
 
61
+ $offset = ($page * $per_page) - $per_page;
62
  if ( is_array( $items ) ) {
63
+ $this->items = array_slice( $items, $offset, $per_page );
64
  $this->extra_items = array_slice( $items, $per_page );
65
  }
66
 
84
  */
85
  public function get_columns() {
86
  $columns = array(
 
87
  'title' => __( 'Form Title', 'iubenda' ),
88
  'ID' => __( 'Form ID', 'iubenda' ),
89
  'source' => __( 'Form Source', 'iubenda' ),
148
 
149
  $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-form_{$item->ID}" ) );
150
  $url = add_query_arg( array( 'form_id' => $item->ID ), $this->base_url );
151
+ $edit_url = add_query_arg( array( 'view' => 'cons-form-edit' ), $url );
152
+ $delete_url = add_query_arg( ['view' => 'cons-configuration', 'action' => 'delete'], $url ) . "&$del_nonce";
153
 
154
  // preorder it: View | Approve | Unapprove | Delete
155
  $actions = array(
157
  'delete' => ''
158
  );
159
 
160
+ $actions['view'] = "<a href='$edit_url' aria-label='" . esc_attr__( 'Edit this form', 'iubenda' ) . "'>" . __( 'Edit', 'iubenda' ) . '</a>';
161
  $actions['delete'] = "<a href='$delete_url' aria-label='" . esc_attr__( 'Delete this form', 'iubenda' ) . "'>" . __( 'Delete', 'iubenda' ) . '</a>';
162
 
163
  $i = 0;
223
  return $output;
224
  }
225
 
 
 
 
 
 
 
 
 
 
 
 
226
  /**
227
  * Generate the table navigation above or below the table
228
  *
258
 
259
  if ( ! empty( $output ) ) {
260
  echo $output;
261
+ submit_button( __( 'Filter', 'iubenda' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
262
  }
263
  }
264
  ?>
328
  }
329
 
330
  $views = $items_total > 0 ? array(
331
+ 'all' => '<a href="' . $this->base_url . '"' . ($status === '' ? ' class="current"' : '') . '>' . esc_html__( 'All', 'iubenda' ) . ' <span class="count">(' . $items_total . ')</span></a>'
332
  ) : '';
333
 
334
  foreach ( iubenda()->forms->statuses as $key => $view ) {
348
  echo __( 'No forms found.', 'iubenda' );
349
  }
350
 
351
+ /**
352
+ * Prints column headers, accounting for hidden and sortable columns.
353
+ *
354
+ * @since 3.1.0
355
+ *
356
+ * @param bool $with_id Whether to set the ID attribute or not
357
+ */
358
+ public function print_column_headers( $with_id = true ) {
359
+ list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
360
+
361
+ $current_url = remove_query_arg( 'paged', $this->base_url );
362
+
363
+ if ( isset( $_GET['orderby'] ) ) {
364
+ $current_orderby = $_GET['orderby'];
365
+ } else {
366
+ $current_orderby = '';
367
+ }
368
+
369
+ if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) {
370
+ $current_order = 'desc';
371
+ } else {
372
+ $current_order = 'asc';
373
+ }
374
+
375
+ if ( ! empty( $columns['cb'] ) ) {
376
+ static $cb_counter = 1;
377
+ $columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __( 'Select All', 'iubenda' ) . '</label>'
378
+ . '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" />';
379
+ $cb_counter++;
380
+ }
381
+
382
+ foreach ( $columns as $column_key => $column_display_name ) {
383
+ $class = array( 'manage-column', "column-$column_key" );
384
+
385
+ if ( in_array( $column_key, $hidden, true ) ) {
386
+ $class[] = 'hidden';
387
+ }
388
+
389
+ if ( 'cb' === $column_key ) {
390
+ $class[] = 'check-column';
391
+ } elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ), true ) ) {
392
+ $class[] = 'num';
393
+ }
394
+
395
+ if ( $column_key === $primary ) {
396
+ $class[] = 'column-primary';
397
+ }
398
+
399
+ if ( isset( $sortable[ $column_key ] ) ) {
400
+ list( $orderby, $desc_first ) = $sortable[ $column_key ];
401
+
402
+ if ( $current_orderby === $orderby ) {
403
+ $order = 'asc' === $current_order ? 'desc' : 'asc';
404
+
405
+ $class[] = 'sorted';
406
+ $class[] = $current_order;
407
+ } else {
408
+ $order = strtolower( $desc_first );
409
+
410
+ if ( ! in_array( $order, array( 'desc', 'asc' ), true ) ) {
411
+ $order = $desc_first ? 'desc' : 'asc';
412
+ }
413
+
414
+ $class[] = 'sortable';
415
+ $class[] = 'desc' === $order ? 'asc' : 'desc';
416
+ }
417
+
418
+ $column_display_name = sprintf(
419
+ '<a href="%s"><span>%s</span><span class="sorting-indicator"></span></a>',
420
+ esc_url( add_query_arg( compact( 'orderby', 'order' ), $current_url ) ),
421
+ $column_display_name
422
+ );
423
+ }
424
+
425
+ $tag = ( 'cb' === $column_key ) ? 'td' : 'th';
426
+ $scope = ( 'th' === $tag ) ? 'scope="col"' : '';
427
+ $id = $with_id ? "id='$column_key'" : '';
428
+
429
+ if ( ! empty( $class ) ) {
430
+ $class = "class='" . implode( ' ', $class ) . "'";
431
+ }
432
+
433
+ echo "<$tag $scope $id $class>$column_display_name</$tag>";
434
+ }
435
+ }
436
  }
includes/forms.php CHANGED
@@ -46,9 +46,9 @@ class iubenda_Forms {
46
  return;
47
  }
48
 
49
- $form_id = $this->array_get( $_POST, 'wpforms.id' );
50
  $form_args = array(
51
- 'post_status' => array( 'mapped', 'needs_update' ),
52
  'source' => 'wpforms',
53
  'id' => $form_id,
54
  );
@@ -115,12 +115,12 @@ class iubenda_Forms {
115
  */
116
  public function wp_enqueue_scripts() {
117
  if ( ! empty( iubenda()->options['cons']['public_api_key'] ) ) {
118
- wp_register_script( 'iubenda-forms', IUBENDA_PLUGIN_URL . '/js/frontend.js', array( 'jquery' ), iubenda()->version, true );
119
 
120
  $args = array();
121
 
122
  $form_args = array(
123
- 'post_status' => array( 'mapped', 'needs_update' )
124
  );
125
 
126
  $forms = $this->get_forms( $form_args );
@@ -468,7 +468,7 @@ class iubenda_Forms {
468
  // Is multi dimensions array
469
  // Check if the existing form fields is not equal the new form fields
470
  if ( is_array( current( $formdata['form_fields'] ) ) ) {
471
- $new_fields = md5( json_encode( $this->array_dot( $formdata['form_fields'] ) ) ) !== md5( json_encode( $this->array_dot( $exists->form_fields ) ) );
472
  }else{
473
  // check for fields changes
474
  $new_fields = array_merge( array_diff( $formdata['form_fields'], $exists->form_fields ), array_diff( $exists->form_fields, $formdata['form_fields'] ) );
@@ -512,7 +512,8 @@ class iubenda_Forms {
512
  $restricted_fields = apply_filters( "iub_{$source}_restricted_fields", array(
513
  'submit',
514
  'file',
515
- 'quiz'
 
516
  ) );
517
 
518
  // Do what you want before preparing the form
@@ -682,6 +683,10 @@ class iubenda_Forms {
682
  foreach ( $fields_raw as $field ) {
683
  // specific field types only
684
  if ( ! empty( $field['basetype'] ) && ! in_array( $field['basetype'], $restricted_fields ) ) {
 
 
 
 
685
  $formdata['form_fields'][] = $field['name'];
686
  }
687
  }
@@ -749,7 +754,7 @@ class iubenda_Forms {
749
 
750
  // Integrate with mailchimp
751
  $mc_integration = get_option( 'mc4wp_integrations' );
752
- if ( is_array( $mc_integration ) && '1' === $this->array_get( $mc_integration, 'woocommerce.enabled' ) ) {
753
  do_action( 'woocommerce_review_order_before_submit' );
754
  }
755
 
@@ -760,6 +765,14 @@ class iubenda_Forms {
760
  )
761
  );
762
 
 
 
 
 
 
 
 
 
763
  $checkout_form = ob_get_contents();
764
  ob_end_clean();
765
 
@@ -969,6 +982,8 @@ class iubenda_Forms {
969
  break;
970
  }
971
 
 
 
972
  return $forms;
973
  }
974
 
@@ -994,8 +1009,8 @@ class iubenda_Forms {
994
  )
995
  ),
996
  'post_type' => 'iubenda_form',
997
- 'post_status' => 'any',
998
- 'posts_per_page' => '1',
999
  'fields' => 'ids'
1000
  );
1001
 
@@ -1020,12 +1035,12 @@ class iubenda_Forms {
1020
  *
1021
  * @return array
1022
  */
1023
- public function array_dot( $array, $prepend = '' ) {
1024
  $results = array();
1025
 
1026
  foreach ( $array as $key => $value ) {
1027
  if ( is_array( $value ) && ! empty( $value ) ) {
1028
- $results = array_merge( $results, $this->array_dot( $value, $prepend . $key . '.' ) );
1029
  } else {
1030
  $results[ $prepend . $key ] = $value;
1031
  }
@@ -1095,35 +1110,6 @@ class iubenda_Forms {
1095
  return $args;
1096
  }
1097
 
1098
- private function array_get( $array, $key, $default = null ) {
1099
- $value = $default;
1100
- if ( ! is_array( $array ) ) {
1101
- return $value( $array );
1102
- }
1103
-
1104
- if ( is_null( $key ) ) {
1105
- return $array;
1106
- }
1107
-
1108
- if ( array_key_exists( $key, $array ) ) {
1109
- return $array[ $key ];
1110
- }
1111
-
1112
- if ( strpos( $key, '.' ) === false ) {
1113
- return $array[ $key ] ?: $default;
1114
- }
1115
-
1116
- foreach ( explode( '.', $key ) as $segment ) {
1117
- if ( ( is_array( $array ) || $array instanceof ArrayAccess ) && array_key_exists( $segment, $array ) ) {
1118
- $array = $array[ $segment ];
1119
- } else {
1120
- return $default;
1121
- }
1122
- }
1123
-
1124
- return $array;
1125
- }
1126
-
1127
  /**
1128
  * Prepare data for subject and preferences
1129
  *
@@ -1152,9 +1138,42 @@ class iubenda_Forms {
1152
  continue;
1153
  }
1154
 
1155
- $array_key = trim( $form->form_fields[ $index ]['name'], 'wpforms' );
1156
- $array_key = substr( str_replace( '][', '.', $array_key ), 1, - 1 );
1157
- $data[ $key ][ $map_key ] = $this->array_get( $entry, $array_key );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1158
  }
1159
 
1160
  return $data;
46
  return;
47
  }
48
 
49
+ $form_id = iub_array_get( $_POST, 'wpforms.id' );
50
  $form_args = array(
51
+ 'post_status' => array('mapped'),
52
  'source' => 'wpforms',
53
  'id' => $form_id,
54
  );
115
  */
116
  public function wp_enqueue_scripts() {
117
  if ( ! empty( iubenda()->options['cons']['public_api_key'] ) ) {
118
+ wp_register_script( 'iubenda-forms', IUBENDA_PLUGIN_URL . '/assets/js/frontend.js', array( 'jquery' ), iubenda()->version, true );
119
 
120
  $args = array();
121
 
122
  $form_args = array(
123
+ 'post_status' => array( 'mapped' )
124
  );
125
 
126
  $forms = $this->get_forms( $form_args );
468
  // Is multi dimensions array
469
  // Check if the existing form fields is not equal the new form fields
470
  if ( is_array( current( $formdata['form_fields'] ) ) ) {
471
+ $new_fields = md5( json_encode( $this->iub_array_dot( $formdata['form_fields'] ) ) ) !== md5( json_encode( $this->iub_array_dot( $exists->form_fields ) ) );
472
  }else{
473
  // check for fields changes
474
  $new_fields = array_merge( array_diff( $formdata['form_fields'], $exists->form_fields ), array_diff( $exists->form_fields, $formdata['form_fields'] ) );
512
  $restricted_fields = apply_filters( "iub_{$source}_restricted_fields", array(
513
  'submit',
514
  'file',
515
+ 'quiz',
516
+ 'recaptcha'
517
  ) );
518
 
519
  // Do what you want before preparing the form
683
  foreach ( $fields_raw as $field ) {
684
  // specific field types only
685
  if ( ! empty( $field['basetype'] ) && ! in_array( $field['basetype'], $restricted_fields ) ) {
686
+ // Track exclusive fields only [ex: name=field[] not supported by cons]
687
+ if ( 'checkbox' == $field['type'] && ! in_array( 'exclusive', $field['options'] ) ) {
688
+ continue;
689
+ }
690
  $formdata['form_fields'][] = $field['name'];
691
  }
692
  }
754
 
755
  // Integrate with mailchimp
756
  $mc_integration = get_option( 'mc4wp_integrations' );
757
+ if ( is_array( $mc_integration ) && '1' === iub_array_get( $mc_integration, 'woocommerce.enabled' ) ) {
758
  do_action( 'woocommerce_review_order_before_submit' );
759
  }
760
 
765
  )
766
  );
767
 
768
+ // Germanized for WooCommerce
769
+ if (class_exists('WooCommerce_Germanized')) {
770
+ woocommerce_gzd_template_render_checkout_checkboxes();
771
+ }
772
+
773
+ // Allow users integrate with other plugins
774
+ do_action("iub_render_{$source}_form");
775
+
776
  $checkout_form = ob_get_contents();
777
  ob_end_clean();
778
 
982
  break;
983
  }
984
 
985
+ $forms = apply_filters("iub_after_call_{$source}_forms", $forms);
986
+
987
  return $forms;
988
  }
989
 
1009
  )
1010
  ),
1011
  'post_type' => 'iubenda_form',
1012
+ 'post_status' => isset($args['post_status']) ? $args['post_status'] : 'any',
1013
+ 'posts_per_page' => '1',
1014
  'fields' => 'ids'
1015
  );
1016
 
1035
  *
1036
  * @return array
1037
  */
1038
+ public function iub_array_dot( $array, $prepend = '' ) {
1039
  $results = array();
1040
 
1041
  foreach ( $array as $key => $value ) {
1042
  if ( is_array( $value ) && ! empty( $value ) ) {
1043
+ $results = array_merge( $results, $this->iub_array_dot( $value, $prepend . $key . '.' ) );
1044
  } else {
1045
  $results[ $prepend . $key ] = $value;
1046
  }
1110
  return $args;
1111
  }
1112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1113
  /**
1114
  * Prepare data for subject and preferences
1115
  *
1138
  continue;
1139
  }
1140
 
1141
+ $name = trim( $form->form_fields[ $index ]['name'] ?: '', 'wpforms' );
1142
+ $array_key = substr( str_replace( '][', '.', $name ), 1, - 1 );
1143
+ // Special handling for checkboxes, By checking the name is ending with array brackets
1144
+ if ( '[]' === substr( $name, - 2 ) ) {
1145
+ $array_key .= '0';
1146
+ }
1147
+
1148
+ $data[ $key ][ $map_key ] = iub_array_get( $entry, $array_key );
1149
+
1150
+ // Special handling for preferences to cast into boolean if the field type is checkbox
1151
+ if ( 'preferences' == $key && 'checkbox' == $form->form_fields[ $index ]['type'] ) {
1152
+ $wpform_content = wpforms()->form->get( $form->object_id )->post_content;
1153
+ $wpform_content = json_decode( $wpform_content, true );
1154
+ $choices = iub_array_get( $wpform_content, substr( $array_key, 0, - 2 ) . '.choices' );
1155
+
1156
+ $index = null;
1157
+ // Check preference field is entered
1158
+ if ( ! empty( $data[ $key ][ $map_key ] ) ) {
1159
+ // Reset the array keys
1160
+ foreach ( array_values($choices) as $i => $choice ) {
1161
+ // Priority to check the choice value
1162
+ if ( $data[ $key ][ $map_key ] == $choice['value'] ) {
1163
+ $index = intval( $i );
1164
+ break;
1165
+ }
1166
+
1167
+ // Then check the choice label [WPForms the label and value are always the same]
1168
+ if ( $data[ $key ][ $map_key ] == $choice['label'] ) {
1169
+ $index = intval( $i );
1170
+ }
1171
+ }
1172
+ }
1173
+
1174
+ // If index isset and map to first choice then it's true exactly like the Frontend Cons behavior
1175
+ $data[ $key ][ $map_key ] = ($index === 0) ? true : false;
1176
+ }
1177
  }
1178
 
1179
  return $data;
includes/settings.php CHANGED
@@ -9,37 +9,69 @@ if ( ! defined( 'ABSPATH' ) )
9
  * @class Post_Views_Counter_Settings
10
  */
11
  class iubenda_Settings {
12
-
13
- public $tabs = array();
 
14
  public $action = '';
15
- public $links = array();
16
- public $notice_types = array( 'error', 'success', 'notice' );
17
- public $subject_fields = array();
 
 
 
18
 
19
  public function __construct() {
 
 
 
 
20
  // actions
21
  add_action( 'after_setup_theme', array( $this, 'load_defaults' ) );
22
- add_action( 'admin_init', array( $this, 'register_options' ) );
23
  add_action( 'admin_init', array( $this, 'update_plugin' ), 9 );
24
- add_action( 'admin_init', array( $this, 'admin_page_redirect' ), 20 );
25
- add_action( 'admin_init', array( $this, 'process_actions' ), 20 );
26
- add_action( 'admin_init', array( $this, 'maybe_show_notice' ) );
27
  add_action( 'admin_menu', array( $this, 'admin_menu_options' ) );
28
- add_action( 'admin_notices', array( $this, 'settings_errors' ) );
29
- add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
30
- add_action( 'admin_print_styles', array( $this, 'admin_print_styles' ) );
31
- // add_action( 'admin_footer-options-discussion.php', array( $this, 'admin_footer' ) );
32
- add_action( 'wp_ajax_iubenda_dismiss_notice', array( $this, 'dismiss_notice' ) );
33
-
34
- // filters
35
- add_filter( 'submenu_file', array( $this, 'submenu_file' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
 
38
  /**
39
  * Load default settings.
40
  */
41
  public function load_defaults() {
42
- $this->subject_fields = array(
 
 
43
  'id' => __( 'string', 'iubenda' ),
44
  'email' => __( 'string', 'iubenda' ),
45
  'first_name' => __( 'string', 'iubenda' ),
@@ -77,93 +109,236 @@ class iubenda_Settings {
77
  4 => __( 'Analytics', 'iubenda' ),
78
  5 => __( 'Targeting & Advertising', 'iubenda' )
79
  );
 
 
 
80
 
81
  $links = array(
82
  'en' => array(
83
  'iab' => 'https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework',
84
- 'guide' => 'https://www.iubenda.com/en/cookie-solution',
 
85
  'plugin_page' => 'https://www.iubenda.com/en/help/posts/1215',
86
- 'generating_code' => 'https://www.iubenda.com/en/help/1177-cookie-solution-getting-started',
87
  'support_forum' => 'https://support.iubenda.com/support/home',
88
- 'documentation' => 'https://www.iubenda.com/en/help/posts/1215'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  ),
90
- 'it' => array(
91
- 'iab' => 'https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework',
92
- 'guide' => 'https://www.iubenda.com/it/cookie-solution',
93
- 'plugin_page' => 'https://www.iubenda.com/it/help/posts/810',
94
- 'generating_code' => 'https://www.iubenda.com/it/help/680-introduzione-cookie-solution',
95
- 'support_forum' => 'https://support.iubenda.com/support/home',
96
- 'documentation' => 'https://www.iubenda.com/it/help/posts/810',
97
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  );
99
 
100
- $locale = explode( '_', get_locale() );
101
- $locale_code = $locale[0];
 
 
 
 
102
 
103
  // assign links
104
- $this->links = in_array( $locale_code, array_keys( $links ) ) ? $links[$locale_code] : $links['en'];
105
 
106
  // handle actions
107
  if ( ! empty( $_POST['save'] ) ) {
108
  // update item action
109
  $this->action = 'save';
110
  } else {
111
- $this->action = isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ? esc_attr( $_REQUEST['action'] ) : '';
112
- $this->action = isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ? esc_attr( $_REQUEST['action2'] ) : $this->action;
113
  }
114
  }
115
 
116
- /**
117
- * Register plugin options.
118
- *
119
- * @return void
120
- */
121
- public function register_options() {
122
- register_setting( 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution', array( $this, 'save_cookie_law_options' ) );
123
-
124
- add_settings_section( 'iubenda_cookie_law_solution', '', '', 'iubenda_cookie_law_solution' );
125
- add_settings_field( 'iub_code', __( 'Code', 'iubenda' ), array( $this, 'iub_code' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
126
- add_settings_field( 'iub_amp_support', __( 'Google AMP', 'iubenda' ), array( $this, 'iub_amp_support' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
127
- add_settings_field( 'iub_parse', __( 'Script blocking', 'iubenda' ), array( $this, 'iub_parse' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
128
- add_settings_field( 'iub_custom_scripts', __( 'Custom scripts', 'iubenda' ), array( $this, 'iub_custom_scripts' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
129
- add_settings_field( 'iub_ctype', __( 'Content type', 'iubenda' ), array( $this, 'iub_ctype' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
130
- add_settings_field( 'iub_output_feed', __( 'RSS feed', 'iubenda' ), array( $this, 'iub_output_feed' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
131
- add_settings_field( 'iub_output_post', __( 'POST requests', 'iubenda' ), array( $this, 'iub_output_post' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
132
- add_settings_field( 'iub_menu_position', __( 'Menu position', 'iubenda' ), array( $this, 'iub_menu_position' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
133
- add_settings_field( 'iub_deactivation', __( 'Deactivation', 'iubenda' ), array( $this, 'iub_deactivation' ), 'iubenda_cookie_law_solution', 'iubenda_cookie_law_solution' );
134
-
135
- // forms list
136
- if ( ! in_array( $this->action, array( 'save', 'edit' ) ) ) {
137
- register_setting( 'iubenda_consent_solution', 'iubenda_consent_solution', array( $this, 'save_consent_options' ) );
138
- add_settings_section( 'iubenda_consent_solution', __( 'Forms', 'iubenda' ), '', 'iubenda_consent_solution' );
139
- add_settings_field( 'iub_public_api_key', __( 'Public Api Key', 'iubenda' ), array( $this, 'iub_public_api_key' ), 'iubenda_consent_solution', 'iubenda_consent_solution' );
140
- // only if api key is given
141
- if ( ! empty( iubenda()->options['cons']['public_api_key'] ) )
142
- add_settings_section( 'iubenda_consent_forms', __( 'Field Mapping', 'iubenda' ), array( $this, 'iubenda_consent_forms' ), 'iubenda_consent_solution' );
143
- // single form
144
- } else {
145
- register_setting( 'iubenda_consent_solution', 'iubenda_consent_forms' );
146
- add_settings_section( 'iubenda_consent_form', __( 'Field Mapping', 'iubenda' ), array( $this, 'iubenda_consent_form' ), 'iubenda_consent_solution' );
147
- }
148
- }
149
-
150
- /**
151
- * Display errors and notices.
152
- *
153
- * @global string $pagenow
154
- */
155
- public function settings_errors() {
156
- global $pagenow;
157
-
158
- // force display notices in top menu settings page
159
- if ( $pagenow == 'options-general.php' )
160
- return;
161
-
162
- $tab_key = ! empty( $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : 'cs';
163
-
164
- settings_errors( "{$tab_key}_settings_errors" );
165
- }
166
-
167
  /**
168
  * Add submenu.
169
  *
@@ -180,297 +355,133 @@ class iubenda_Settings {
180
  add_menu_page(
181
  'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda', array( $this, 'options_page' ), 'none'
182
  );
183
- add_submenu_page( 'iubenda', __( 'Cookie Solution', 'iubenda' ), __( 'Cookie Solution', 'iubenda' ), apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda', array( $this, 'options_page' ) );
184
- add_submenu_page( 'iubenda', __( 'Consent Solution', 'iubenda' ), __( 'Consent Solution', 'iubenda' ), apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda&tab=cons', array( $this, 'options_page' ) );
185
- }
186
- }
187
-
188
- /**
189
- * Load admin scripts and styles.
190
- *
191
- * @param string $page
192
- * @return void
193
- */
194
- public function admin_enqueue_scripts( $page ) {
195
- wp_enqueue_style( 'iubenda-admin', IUBENDA_PLUGIN_URL . '/css/admin.css' );
196
-
197
- if ( ! in_array( $page, array( 'toplevel_page_iubenda', 'settings_page_iubenda' ) ) )
198
- return;
199
-
200
- wp_enqueue_script(
201
- 'iubenda-admin', IUBENDA_PLUGIN_URL . '/js/admin.js', array( 'jquery' )
202
- );
203
-
204
- $args = array(
205
- 'formId' => 0,
206
- 'deleteForm' => __( 'Are you sure you want to delete this form?', 'iubenda' )
207
- );
208
-
209
- // get form data on edit screen
210
- if ( in_array( $this->action, array( 'edit' ) ) ) {
211
- $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
212
- $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : array();
213
-
214
- $args['formId'] = $form_id;
215
- }
216
-
217
- wp_localize_script(
218
- 'iubenda-admin',
219
- 'iubAdminArgs',
220
- $args
221
- );
222
- }
223
-
224
- /**
225
- * Load admin style inline, for menu icon only.
226
- *
227
- * @return mixed
228
- */
229
- public function admin_print_styles() {
230
- echo '
231
- <style>
232
- a.toplevel_page_iubenda .wp-menu-image {
233
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAyMzIgNTAzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS40MTQyMTsiPiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDEzNi4yNDcsMjY4LjgzMSkiPiAgICAgICAgPHBhdGggZD0iTTAsLTM1LjgxTC0zNi4zLDAuNDg5TC0zNi4zLDE0MC45NzhMMCwxNDAuOTc4TDAsLTM1LjgxWk0tMjAuOTM4LC0xMjkuODAyQy02LjI4NywtMTI5LjgwMiA1LjU4NywtMTQxLjU2NSA1LjU4NywtMTU2LjA2QzUuNTg3LC0xNzAuNTU2IC02LjI4NywtMTgyLjMwOCAtMjAuOTM4LC0xODIuMzA4Qy0zNS42LC0xODIuMzA4IC00Ny40NzQsLTE3MC41NTYgLTQ3LjQ3NCwtMTU2LjA2Qy00Ny40NzQsLTE0MS41NjUgLTM1LjYsLTEyOS44MDIgLTIwLjkzOCwtMTI5LjgwMk04OS4zNiwtMTU0LjQxNkM4OS4zNiwtMTI3LjgyNSA3OS41NzUsLTEwMy40OTkgNjMuMjY5LC04NC42NzJMODYuNjk0LDIyNi42MjhMLTEyMi43MjgsMjI2LjYyOEwtMTAwLjAyNCwtNzkuMjI5Qy0xMTkuMzUxLC05OC42NjggLTEzMS4yNDcsLTEyNS4xNTkgLTEzMS4yNDcsLTE1NC40MTZDLTEzMS4yNDcsLTIxNC4wODYgLTgxLjg3NCwtMjYyLjQzOCAtMjAuOTM4LC0yNjIuNDM4QzM5Ljk5OSwtMjYyLjQzOCA4OS4zNiwtMjE0LjA4NiA4OS4zNiwtMTU0LjQxNiIgc3R5bGU9ImZpbGw6d2hpdGU7ZmlsbC1ydWxlOm5vbnplcm87Ii8+ICAgIDwvZz48L3N2Zz4=);
234
- background-position: center center;
235
- background-repeat: no-repeat;
236
- background-size: 7px auto;
237
- }
238
- </style>
239
- ';
240
- }
241
-
242
- /**
243
- * Highlight comments cookies opt-in checkbox option.
244
- *
245
- * @return mixed
246
- */
247
- public function admin_footer() {
248
- if ( ! empty( $_GET['iub-highlight'] ) ) {
249
- echo '
250
- <style>
251
- label[for=show_comments_cookies_opt_in] {
252
- border: 1px dashed red;
253
- }
254
- </style>
255
- ';
256
  }
257
  }
258
 
259
- /**
260
- * Redirect to the correct urle after switching menu position.
261
- *
262
- * @global string $pagenow
263
- * @return void
264
- */
265
- public function admin_page_redirect() {
266
- if ( ! empty( $_GET['settings-updated'] ) && ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'iubenda' ) ) ) {
267
- global $pagenow;
268
-
269
- // no redirect by default
270
- $redirect_to = false;
271
-
272
- if ( iubenda()->options['cs']['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
273
- // sub menu
274
- $redirect_to = admin_url( 'options-general.php?page=iubenda' );
275
- } elseif ( iubenda()->options['cs']['menu_position'] === 'topmenu' && $pagenow === 'options-general.php' ) {
276
- // top menu
277
- $redirect_to = admin_url( 'admin.php?page=iubenda' );
278
- }
279
-
280
- if ( $redirect_to ) {
281
- // make sure it's current host location
282
- wp_safe_redirect( add_query_arg( 'settings-updated', true, $redirect_to ) );
283
- exit;
284
- }
285
- }
286
- }
287
-
288
- /**
289
- * Perform show notice on plugin installation/upgrade.
290
- *
291
- * @return void
292
- */
293
- public function maybe_show_notice() {
294
- if ( ! current_user_can( 'install_plugins' ) )
295
- return;
296
-
297
- $current_update = 1;
298
- $activation = (array) get_option( 'iubenda_activation_data', iubenda()->activation );
299
-
300
- // delete_option( 'iubenda_activation_data' );
301
- // echo '<pre>'; print_r( $activation ); echo '</pre>'; exit;
302
-
303
- // get current time
304
- $current_time = time();
305
-
306
- if ( $activation['update_version'] < $current_update ) {
307
- // check version, if update ver is lower than plugin ver, set update notice to true
308
- $activation = array_merge( $activation, array( 'update_version' => $current_update, 'update_notice' => true ) );
309
-
310
- // set activation date if not set
311
- if ( $activation['update_date'] == false )
312
- $activation = array_merge( $activation, array( 'update_date' => $current_time ) );
313
-
314
- update_option( 'iubenda_activation_data', $activation );
315
- }
316
-
317
- // display current version notice
318
- if ( $activation['update_notice'] === true ) {
319
- // include notice js, only if needed
320
- add_action( 'admin_print_scripts', array( $this, 'admin_inline_js' ), 999 );
321
-
322
- // get activation date
323
- $activation_date = $activation['update_date'];
324
-
325
- // set delay in seconds
326
- $delay = WEEK_IN_SECONDS * 2;
327
-
328
- if ( (int) $activation['update_delay_date'] === 0 ) {
329
- if ( $activation_date + $delay > $current_time )
330
- $activation['update_delay_date'] = $activation_date + $delay;
331
- else
332
- $activation['update_delay_date'] = $current_time;
333
-
334
- update_option( 'iubenda_activation_data', $activation );
335
- }
336
-
337
- if ( ( ! empty( $activation['update_delay_date'] ) ? (int) $activation['update_delay_date'] : $current_time ) <= $current_time ) {
338
- // add notice
339
- add_action( 'admin_notices', array( $this, 'show_notice' ) );
340
- }
341
- }
342
- }
343
-
344
- /**
345
- * Display admin notices at iubenda settings.
346
- */
347
- public function show_notice() {
348
- global $pagenow;
349
-
350
- $display = true;
351
- /*
352
- $page = isset( $_GET['page'] ) ? esc_attr( $_GET['page'] ) : '';
353
-
354
- if ( iubenda()->options['cs']['menu_position'] === 'submenu' && $page === 'iubenda' ) {
355
- $display = true;
356
- } elseif ( iubenda()->options['cs']['menu_position'] === 'topmenu' && $page === 'iubenda' ) {
357
- $display = true;
358
- }
359
- */
360
- ?>
361
- <?php if ( $display ) { ?>
362
- <div class="iubenda-notice notice is-dismissible">
363
- <div>
364
- <p class="step-1">
365
- <span class="notice-question"><?php _e( 'Enjoying the iubenda Cookie & Consent Solution Plugin?', 'iubenda' ); ?></span>
366
- <span class="notice-reply">
367
- <a href="#" class="reply-yes"><?php _e( 'Yes', 'iubenda' ); ?></a>
368
- <a href="#" class="reply-no"><?php _e( 'No', 'iubenda' ); ?></a>
369
- </span>
370
- </p>
371
- <p class="step-2 step-yes">
372
- <span class="notice-question"><?php _e( "Whew, what a relief!? We've worked countless hours to make this plugin as useful as possible - so we're pretty happy that you're enjoying it. While you here, would you mind leaving us a 5 star rating? It would really help us out.", 'iubenda' ); ?></span>
373
- <span class="notice-reply">
374
- <a href="https://wordpress.org/support/plugin/iubenda-cookie-law-solution/reviews/?filter=5" target="_blank" class="reply-yes"><?php _e( 'Sure!', 'iubenda' ); ?></a>
375
- <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
376
- </span>
377
- </p>
378
- <p class="step-2 step-no">
379
- <span class="notice-question"><?php _e( "We're sorry to hear that. Would you mind giving us some feedback?", 'iubenda' ); ?></span>
380
- <span class="notice-reply">
381
- <a href="https://iubenda.typeform.com/to/BXuSMZ" target="_blank" class="reply-yes"><?php _e( 'Ok sure!', 'iubenda' ); ?></a>
382
- <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
383
- </span>
384
- </p>
385
- </div>
386
- </div>
387
- <?php } ?>
388
- <?php
389
- }
390
-
391
- /**
392
- * Print admin scripts.
393
- *
394
- * @return void
395
- */
396
- public function admin_inline_js() {
397
- if ( ! current_user_can( 'install_plugins' ) )
398
- return;
399
-
400
- $delay = MONTH_IN_SECONDS * 6;
401
- ?>
402
- <script type="text/javascript">
403
- ( function ( $ ) {
404
- $( document ).ready( function () {
405
- // step 1
406
- $( '.iubenda-notice .step-1 a' ).on( 'click', function ( e ) {
407
- e.preventDefault();
408
-
409
- $( '.iubenda-notice .step-1' ).slideUp( 'fast' );
410
-
411
- if ( $( e.target ).hasClass( 'reply-yes' ) ) {
412
- $( '.iubenda-notice .step-2.step-yes' ).slideDown( 'fast' );
413
- } else {
414
- $( '.iubenda-notice .step-2.step-no' ).slideDown( 'fast' );
415
- };
416
- } );
417
- // step 2
418
- $( '.iubenda-notice.is-dismissible' ).on( 'click', '.notice-dismiss, .step-2 a', function ( e ) {
419
- // console.log( $( e ) );
420
-
421
- var delay = <?php echo $delay; ?>;
422
-
423
- if ( $( e.target ).hasClass( 'reply-yes' ) ) {
424
- delay = 0;
425
- }
426
-
427
- $.post( ajaxurl, {
428
- action: 'iubenda_dismiss_notice',
429
- delay: delay,
430
- url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
431
- iubenda_nonce: '<?php echo wp_create_nonce( 'iubenda_dismiss_notice' ); ?>'
432
- } );
433
-
434
- $( e.delegateTarget ).slideUp( 'fast' );
435
- } );
436
- } );
437
- } )( jQuery );
438
- </script>
439
- <?php
440
- }
441
-
442
- /**
443
- * Dismiss notice.
444
- *
445
- * @return void
446
- */
447
- public function dismiss_notice() {
448
- $result = false;
449
-
450
- if ( ! current_user_can( 'install_plugins' ) )
451
- return $result;
452
-
453
- $nonce = wp_verify_nonce( $_REQUEST['iubenda_nonce'], 'iubenda_dismiss_notice' );
454
-
455
- if ( $nonce ) {
456
- $delay = ! empty( $_REQUEST['delay'] ) ? absint( $_REQUEST['delay'] ) : 0;
457
- $activation = (array) get_option( 'iubenda_activation_data', iubenda()->activation );
458
-
459
- // delay notice
460
- if ( $delay > 0 ) {
461
- $activation = array_merge( $activation, array( 'update_delay_date' => time() + $delay ) );
462
- // hide notice permanently
463
- } else {
464
- $activation = array_merge( $activation, array( 'update_delay_date' => 0, 'update_notice' => false ) );
465
- }
466
-
467
- // update activation options
468
- $result = update_option( 'iubenda_activation_data', $activation );
469
- }
470
-
471
- echo json_encode( $result );
472
- exit;
473
- }
474
 
475
  /**
476
  * Plugin options migration for versions < 1.14.0
@@ -486,13 +497,12 @@ class iubenda_Settings {
486
 
487
  if ( $db_version != false ) {
488
  if ( version_compare( $db_version, '1.14.0', '<' ) ) {
489
- $options = array();
490
 
491
  $old_new = array(
492
  'iubenda_parse' => 'parse',
493
  'skip_parsing' => 'skip_parsing',
494
  'iubenda_ctype' => 'ctype',
495
- 'iubenda_parse' => 'parse',
496
  'parser_engine' => 'parser_engine',
497
  'iubenda_output_feed' => 'output_feed',
498
  'iubenda-code-default' => 'code_default',
@@ -525,1299 +535,943 @@ class iubenda_Settings {
525
 
526
  add_option( 'iubenda_cookie_law_solution', $options, '', 'no' );
527
  add_option( 'iubenda_cookie_law_version', iubenda()->version, '', 'no' );
528
- }
529
- }
530
- }
531
-
532
- /**
533
- * Load admin options page.
534
- *
535
- * @return void
536
- */
537
- public function options_page() {
538
- global $pagenow;
539
-
540
- if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) ) {
541
- wp_die( __( "You don't have permission to access this page.", 'iubenda' ) );
542
- }
543
-
544
- $tab_key = ! empty( $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : 'cs';
545
-
546
- // get redirect url
547
- if ( iubenda()->options['cs']['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
548
- // sub menu
549
- $redirect_to = admin_url( 'options-general.php?page=iubenda&tab=' . $tab_key );
550
- } else {
551
- // top menu
552
- $redirect_to = admin_url( 'admin.php?page=iubenda&tab=' . $tab_key );
553
- }
554
- ?>
555
- <div class="wrap">
556
-
557
- <div id="iubenda-header">
558
- <?php
559
- echo '
560
- <a class="iubenda-link" href="http://iubenda.com" title="iubenda" title="_blank">
561
- <img id="iubenda-logo" alt="iubenda logo" width="300" height="90" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjM3LjggMjgzLjUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYzNy44IDI4My41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzFDQzY5MTt9LnN0MXtmaWxsOiM1MTUyNTQ7fTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE3OC45LDk5LjljMCw4LjItMywxNS42LTgsMjEuNGw3LjIsOTUuNGgtNjQuMmw3LTkzLjhjLTUuOS02LTkuNi0xNC4xLTkuNi0yMy4xYzAtMTguMywxNS4xLTMzLjEsMzMuOC0zMy4xUzE3OC45LDgxLjYsMTc4LjksOTkuOSBNMTQ1LjEsMTA3LjRjNC41LDAsOC4xLTMuNiw4LjEtOC4xcy0zLjYtOC04LjEtOGMtNC41LDAtOC4xLDMuNi04LjEsOFMxNDAuNiwxMDcuNCwxNDUuMSwxMDcuNCBNMTUxLjUsMTM2LjJsLTExLjEsMTEuMXY0My4xaDExLjFWMTM2LjJ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTI2NS40LDE3OC42Yy0yLjMsMS4yLTQuNywxLjgtNy4yLDEuOGMtMi44LDAtNS4zLTAuOC03LjQtMi40Yy0yLjEtMS42LTMuNS0zLjctNC4zLTYuMmMtMC44LTIuNS0xLjItNi4xLTEuMi0xMC44di0xOC4yYzAsMCwwLTAuOSwwLTIuOGMwLTAuNSwwLTIuOC0xLjUtMy41Yy0wLjItMC4xLTAuNi0wLjItMS4yLTAuM2MtMC40LDAtMC44LTAuNC0wLjgtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC44LTAuOWg5LjNjMS4zLDAsMi40LDEuMSwyLjQsMi40VjE0N2wwLDE1LjVjMCw0LjYsMC44LDcuNywyLjUsOS4xYzEuNiwxLjUsMy42LDIuMiw1LjksMi4yYzEuNiwwLDMuNC0wLjUsNS40LTEuNWMyLTEsNS4zLTIuOCw4LjEtNS42bDAtMi40bDAtMjIuMlYxNDBjMC0wLjUsMC0yLjgtMS40LTMuNWMtMC4yLTAuMS0wLjYtMC4yLTEuMS0wLjNjLTAuNC0wLjEtMC44LTAuNC0wLjgtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC45LTAuOWg5LjJjMS4zLDAsMi40LDEuMSwyLjQsMi40djhjMCwwLjEsMCwwLjEsMCwwLjJ2MTYuNmMwLDMuOCwwLDcuNCwwLDEwLjZjMCwwLjcsMCwxLjIsMCwxLjJjMCwwLjUtMC4xLDMuMSwxLjQsMy44YzAuMiwwLjEsMC42LDAuMiwxLjIsMC4zYzAuNCwwLDAuOCwwLjQsMC44LDAuOGwwLDIuNGMwLDAuNS0wLjQsMC44LTAuOSwwLjloLTkuMmMtMS4zLDAtMi40LTEuMS0yLjQtMi40bDAtNC41bDAtMi41QzI3MS45LDE3NC41LDI2Ny43LDE3Ny40LDI2NS40LDE3OC42Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTMwOS4yLDE3NmMxLjksMC45LDMuOSwxLjMsNiwxLjNjMy4yLDAsNi4zLTEuNyw5LTUuMmMyLjgtMy41LDQuMi04LjUsNC4yLTE1LjJjMC02LjEtMS40LTEwLjgtNC4yLTE0LjFjLTIuOC0zLjMtNi00LjktOS41LTQuOWMtMS45LDAtMy44LDAuNS01LjcsMS40Yy0xLjIsMC42LTIuOCwxLjgtNC43LDMuNGMtMC41LDAuNS0wLjgsMS4xLTAuOCwxLjhWMTcxYzAsMC43LDAuMywxLjQsMC44LDEuOEMzMDYsMTc0LjIsMzA3LjYsMTc1LjMsMzA5LjIsMTc2IE0yOTQuOCwxMThjMC0wLjUsMC0yLjctMS40LTMuNGMtMC4yLTAuMS0wLjMtMC4xLTAuNi0wLjJjLTAuNC0wLjEtMC42LTAuNC0wLjYtMC44bDAtMi4zYzAtMC41LDAuNC0wLjgsMC45LTAuOWgxLjhoNi41YzEuMywwLDIuMywxLDIuMywyLjNsMCwxMnYxNS40YzQuNy02LjQsOS44LTkuNiwxNS4zLTkuNmM1LDAsOS40LDIuMSwxMy4xLDYuM2MzLjcsNC4yLDUuNiw5LjksNS42LDE3LjJjMCw4LjUtMi45LDE1LjMtOC42LDIwLjVjLTQuOSw0LjQtMTAuNSw2LjctMTYuNSw2LjdjLTIuOCwwLTUuNy0wLjUtOC43LTEuNWMtMi41LTAuOS01LjEtMi4xLTcuNy0zLjdjLTAuOC0wLjUtMS4zLTEuNC0xLjMtMi40di00NmMwLTAuOSwwLTIsMC0zLjNMMjk0LjgsMTE4eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zODkuMywxNzkuMWMtMC41LDAtMC45LTAuNC0wLjktMC45bDAtMi4zYzAtMC40LDAuMy0wLjgsMC43LTAuOGMwLjUtMC4xLDAuOC0wLjEsMS0wLjJjMS40LTAuNywxLjQtMi45LDEuNC0zLjR2LTIuN2MwLDAsMC01LjgsMC0xNy41YzAtMS45LDAtMy44LDAuMS01LjVsMC00LjZjMC0wLjUsMC0xLDAtMS41YzAtMC42LDAtMi44LTEuNC0zLjVjLTAuMS0wLjEtMC4zLTAuMS0wLjUtMC4yYy0wLjQtMC4xLTAuNi0wLjQtMC42LTAuOGwwLTIuM2MwLTAuNSwwLjQtMC44LDAuOS0wLjloOC4xYzEuMywwLDIuMywxLDIuMywyLjN2My40YzAsMCwwLDAuNiwwLDEuOGMwLDAuMywwLjIsMC42LDAuNiwwLjZjMC4yLDAsMC4zLTAuMSwwLjQtMC4yYzUuNC01LjksMTIuMy04LjgsMTcuMi04LjhjMi43LDAsNSwwLjYsNi45LDEuOWMxLjksMS4zLDMuNCwzLjQsNC42LDYuM2MwLjgsMi4xLDEuMiw1LjIsMS4yLDkuNHYxNi41bDAsNi4zYzAsMC41LDAsMi43LDEuNCwzLjRjMC4yLDAuMSwwLjQsMC4yLDAuOCwwLjJjMC40LDAuMSwwLjcsMC40LDAuNywwLjhsMCwyLjNjMCwwLjUtMC40LDAuOC0wLjgsMC45Yy0wLjgsMC0xLjUsMC0yLDBoLTYuNWMtMC4xLDAtMC4zLDAtMC40LDBoLTMuMWMtMS4xLDAtMi0wLjktMi0yYzAtMSwwLjctMS45LDEuNi0yLjJjMC4xLDAsMC4xLDAsMC4yLTAuMWMxLTAuNSwxLjMtMS44LDEuNC0yLjd2LTcuNGwwLTE1LjJjMC00LjMtMC42LTcuNC0xLjctOS4zYy0xLjItMS45LTMuMS0yLjktNS44LTIuOWMtNC4yLDAtMTAuMywyLjItMTQuNCw2Ljd2MjAuOHYwLjNsMCw2LjRjMCwwLjUsMCwyLjgsMS40LDMuNWMwLjEsMCwwLjEsMCwwLjIsMC4xYzEsMC4zLDEuNiwxLjIsMS42LDIuMmMwLDEuMS0wLjksMi0yLDJIMzk0QzM5NCwxNzkuMSwzOTIuNCwxNzkuMSwzODkuMywxNzkuMSIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MTUsMTUzLjRjLTYuNiwxLjMtMTAuNCwyLjItMTEuNCwyLjVjLTMuNywxLjItNi42LDIuNi02LjgsOC43Yy0wLjEsMi41LDAuOCw0LjcsMi4zLDYuM2MxLjUsMS43LDMuMywyLjUsNS4zLDIuNWMyLjUsMCw1LjctMS44LDkuNi00LjhjMC43LTAuNSwxLjEtMS4zLDEuMS0yLjJWMTUzLjR6IE01MjMuOCwxNzAuOGMwLDAuMSwwLDAuMiwwLDAuMmMwLDAuMiwwLDAuMywwLDAuNGMwLjEsMS40LDAuNiwyLjQsMS40LDIuOGMwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmMwLjQsMC4xLDAuNywwLjQsMC43LDAuOGwwLDIuNGMwLDAuNS0wLjQsMC44LTAuOSwwLjloLTguM2MtMS4zLDAtMi4zLTEtMi4zLTIuM3YtNC41Yy01LDMuOS04LjIsNi4xLTkuNSw2LjdjLTEuOSwwLjktNCwxLjMtNi4xLDEuM2MtMy40LDAtNi4yLTEuMi04LjQtMy40Yy0yLjItMi4zLTMuMy01LjMtMy4zLTkuMWMwLTIuNCwwLjUtNC40LDEuNi02LjJjMS41LTIuNCwzLjctNS4yLDcuNi02LjhjNC0xLjYsNy4zLTIsMTgtNC40YzAtMC4zLDAtNCwwLTQuM2MwLTQuNS0wLjgtOS4yLTguNC04LjdjLTUuMywwLjMtMTAuMiwyLTE0LjcsNWMtMC40LDAuMy0wLjksMC4yLTEuMi0wLjJjLTAuMS0wLjEtMC4xLTAuMy0wLjEtMC41di0yLjhjMC0xLjUsMC4zLTIuNCwwLjktMi45YzMuMS0yLjUsMTAuOS01LjUsMTguNS01YzguNCwwLjYsMTEuNCw0LDEyLjksOS4zYzAuNSwxLjYsMSwyLjgsMSw3LjV2MTQuNWMwLDIsMCw0LDAsNS44VjE3MC44eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00NjUuNCwxMzcuOGMtMS43LTEtMy40LTEuNS01LTEuNWMtMywwLTUuOCwxLjMtOC4zLDMuOGMtMi43LDIuOC00LjYsNi41LTQuNiwxMy41YzAsNywxLjUsMTIuNCw0LjYsMTYuMmMzLDMuNyw2LjQsNS42LDEwLjIsNS42YzIuNywwLDUuMy0xLjEsNy44LTMuNGMwLjktMC44LDEuNC0xLjksMS40LTN2LTIwLjhDNDcxLjQsMTQzLjksNDY5LjEsMTQwLDQ2NS40LDEzNy44IE00ODEuMywxNzQuNmMwLjEsMC4xLDAuMywwLjEsMC41LDAuMmMwLjQsMC4xLDAuNiwwLjQsMC42LDAuOGwwLDIuM2MwLDAuNS0wLjQsMC44LTAuOSwwLjloLThjLTEuMiwwLTIuMy0xLTIuMy0yLjJ2LTIuMmMtMi4zLDIuNC00LjYsNC4yLTYuOCw1LjNjLTIuMiwxLjEtNC42LDEuNi03LjEsMS42Yy01LjIsMC05LjctMi4yLTEzLjYtNi42Yy0zLjktNC40LTUuOC0xMC01LjgtMTYuOXMyLjEtMTMuMSw2LjQtMTguOGM0LjMtNS43LDkuOC04LjUsMTYuNS04LjVjNC4yLDAsNy42LDEuMywxMC40LDR2LTE2LjdjMC0wLjUsMC0yLjctMS40LTMuNGMtMC4xLTAuMS0wLjMtMC4xLTAuNS0wLjJjLTAuNC0wLjEtMC42LTAuNC0wLjYtMC44bDAtMi40YzAtMC41LDAuNC0wLjksMC45LTAuOWg3LjljMS4yLDAsMi4zLDEsMi4zLDIuMnY1OC45QzQ3OS45LDE3MS44LDQ3OS45LDE3My45LDQ4MS4zLDE3NC42Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTM1MCwxNTAuMmMwLDAuMSwwLDAuMywwLjEsMC4zYzAuMSwwLjEsMC4yLDAuMSwwLjQsMC4xaDIzLjljMC4zLDAsMC41LTAuMiwwLjUtMC40YzAuMy0yLjUsMC40LTctMy4zLTEwLjhjLTEuOC0xLjktNC4xLTIuOC04LjMtMi44QzM1NS43LDEzNi42LDM1MC44LDE0My45LDM1MCwxNTAuMiBNMzQ3LjUsMTc0LjljLTMuOS00LjMtNS45LTExLjMtNS45LTE4LjJjMC03LjMsMi4zLTEzLjksNi40LTE4LjdjNC4zLTUsMTAuMi03LjcsMTcuMS03LjdjNS44LDAsMTAuMiwyLDEzLjIsNS44YzIuNywzLjYsNC4xLDguOCw0LjEsMTUuNGMwLDAuOCwwLDEuOS0wLjEsMy4zYy0wLjEsMC45LTAuOCwxLjYtMS43LDEuNmgtMjkuOGMtMC4xLDAtMC4zLDAuMS0wLjQsMC4xYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuNGMwLjEsNS40LDEuOCwxMCw1LDEzLjJjMy4xLDMuMiw3LjQsNC45LDEyLjQsNC45YzMuNywwLDguNi0xLDEyLjQtMi4xYzAuNS0wLjIsMS4xLDAuMSwxLjMsMC43YzAuMSwwLjIsMC4xLDAuNCwwLDAuNWwtMC41LDEuOWMtMC4yLDAuNy0wLjcsMS4zLTEuMywxLjZjLTMuNywxLjgtOS4zLDMuNS0xNSwzLjVDMzU3LjYsMTgxLjIsMzUxLjYsMTc5LjUsMzQ3LjUsMTc0LjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjMxLjEsMTM1Ljl2MzYuOWMwLDEsMC42LDEuOSwxLjQsMi4zYzAuOSwwLjQsMS40LDEuMywxLjQsMi4zdjAuN2MwLDAuOC0wLjYsMS40LTEuNCwxLjRIMjIwYy0wLjgsMC0xLjQtMC42LTEuNC0xLjR2LTAuN2MwLTEsMC42LTEuOSwxLjQtMi4zYzAuOS0wLjQsMS40LTEuMywxLjQtMi4zdi0zNS43YzAtMC41LTAuNC0wLjktMC45LTAuOXMtMC45LTAuNC0wLjktMC45di0xLjJjMC0xLjIsMC45LTIuMSwyLjEtMi4xaDUuNkMyMjkuNCwxMzIsMjMxLjEsMTMzLjcsMjMxLjEsMTM1LjkiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjI2LjMsMTEwLjhjMy4zLDAsNiwyLjcsNiw1LjljMCwzLjMtMi43LDUuOS02LDUuOXMtNi0yLjctNi01LjlDMjIwLjMsMTEzLjUsMjIzLDExMC44LDIyNi4zLDExMC44Ii8+PC9zdmc+"/>
562
- </a>';
563
-
564
- if ( $tab_key === 'cs' ) {
565
- echo '
566
- <p class="iubenda-text">
567
- ' . __( "This plugin is the easiest and most comprehensive way to adapt your WordPress site to the ePrivacy (EU Cookie Law). Upon your users' first visit, the plugin will take care of collecting their consent, blocking the most popular cookie-scripts and subsequently reactivating these scripts as soon as consent is provided. The basic settings include obtaining consent by a simple scroll action (the most effective method) and script reactivation without refreshing the page (asynchronous script reactivation).", 'iubenda' ) . '
568
- </p>
569
- <p class="iubenda-text">
570
- <span class="iubenda-title">' . __( "Does the Cookie Solution support IAB's Transparency and Consent Framework?", 'iubenda' ) . '</span><br />
571
- ' . sprintf( __( "Yes it does. You can read more about it <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">here.</a>", 'iubenda' ), $this->links['iab'] ) . '
572
- </p>
573
- <p class="iubenda-text">
574
- <span class="iubenda-title">' . __( "Would you like to know more about the cookie law?", 'iubenda' ) . '</span><br />
575
- ' . sprintf( __( "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete guide to the cookie law.</a>", 'iubenda' ), $this->links['guide'] ) . '
576
- </p>
577
- <p class="iubenda-text">
578
- <span class="iubenda-title">' . __( "What is the full functionality of the plugin?", 'iubenda' ) . '</span><br />
579
- ' . sprintf( __( "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin page.</a>", 'iubenda' ), $this->links['plugin_page'] ) . '
580
- </p>
581
- <p class="iubenda-text">
582
- <span class="iubenda-title">' . __( "Enter the iubenda code for the Cookie Solution below.", 'iubenda' ) . '</span><br />
583
- ' . sprintf( __( "In order to run the plugin, you need to enter the iubenda code that activates the cookie law banner and the cookie policy in the form below. This code can be generated on www.iubenda.com, following <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">this guide.</a>", 'iubenda' ), $this->links['generating_code'] ) . '
584
- </p>';
585
- } else {
586
- echo '
587
- <p class="iubenda-text">
588
- ' . __( 'Maintaining comprehensive records of consent is a vital part of privacy compliance in general but is specifically required under the GDPR. These records should include a way of identifying the user, store proof of consent, record of the consenting action, and the legal documents available to the user at the time of consent, among other things. You can read about the <a href="https://www.iubenda.com/en/help/5428-gdpr-guide#records-of-consent" target="_blank">full requirements here</a>.', 'iubenda' ) . '
589
- </p>';
590
- }
591
- ?>
592
- </div>
593
-
594
- <?php
595
- if ( $tab_key === 'cs' ) {
596
- // add per-purpose notice
597
- if ( iubenda()->options['cs']['skip_parsing'] ) {
598
- $iubenda_code = '';
599
-
600
- if ( iubenda()->multilang === true && defined( 'ICL_LANGUAGE_CODE' ) && isset( iubenda()->options['cs']['code_' . ICL_LANGUAGE_CODE] ) ) {
601
- $iubenda_code = iubenda()->options['cs']['code_' . ICL_LANGUAGE_CODE];
602
-
603
- // no code for current language, use default
604
- if ( ! $iubenda_code )
605
- $iubenda_code = iubenda()->options['cs']['code_default'];
606
- } else
607
- $iubenda_code = iubenda()->options['cs']['code_default'];
608
-
609
- $per_purpose_enabled = preg_match( '/(?:"|\')perPurposeConsent(?:"|\')\: *(?:"|\'*)true(?:"|\'*)/', $iubenda_code );
610
- $reject_enabled = preg_match( '/(?:"|\')rejectButtonDisplay(?:"|\')\: *(?:"|\'*)true(?:"|\'*)/', $iubenda_code );
611
-
612
- if ( $per_purpose_enabled || $reject_enabled )
613
- $this->add_notice( 'iub_per_purpose_enabled', sprintf( __( 'If you are using per-purpose script blocking or Reject option please disable the "Leave scripts untouched on the page if the user has already given consent" option. <a href="%s" target="_self">Disable now</a>', 'iubenda' ), esc_url( add_query_arg( 'action', 'disable_skip_parsing', $redirect_to ) ) ), 'notice' );
614
- }
615
-
616
- // add AMP notice
617
- if ( iubenda()->options['cs']['amp_support'] && iubenda()->options['cs']['amp_template_done'] ) {
618
- $ssl_support = true;
619
-
620
- // multilang support
621
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
622
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
623
- $url = iubenda()->options['cs']['amp_source'] === 'remote' ? iubenda()->options['cs']['amp_template'][$lang_id] : iubenda()->AMP->get_amp_template_url( $lang_id );
624
- $bits = explode( '/', $url );
625
-
626
- if ( $bits[0] === 'http:' )
627
- $ssl_support = false;
628
- }
629
- } else {
630
- $url = iubenda()->options['cs']['amp_source'] === 'remote' ? iubenda()->options['cs']['amp_template'] : iubenda()->AMP->get_amp_template_url();
631
- $bits = explode( '/', $url );
632
-
633
- if ( $bits[0] === 'http:' )
634
- $ssl_support = false;
635
- }
636
-
637
- if ( ! $ssl_support )
638
- $this->add_notice( 'iub_amp_ssl_required', __( 'AMP configuration file requires HTTPS. Make sure your SSL Certificate is configured correctly.', 'iubenda' ), 'error' );
639
- }
640
-
641
- }
642
-
643
- // render custom notices
644
- $this->print_notices();
645
- ?>
646
-
647
- <h2 style="display: none;"></h2>
648
- <h2 class="nav-tab-wrapper iubenda-tab-wrapper">
649
- <a class="nav-tab<?php echo $tab_key == 'cs' ? ' nav-tab-active' : ''; ?>" href="<?php echo esc_url( iubenda()->base_url ); ?>"><?php _e( 'Cookie Solution', 'iubenda' ); ?></a>
650
- <a class="nav-tab<?php echo $tab_key == 'cons' ? ' nav-tab-active' : ''; ?>" href="<?php echo esc_url( add_query_arg( array( 'tab' => 'cons' ), iubenda()->base_url ) ); ?>"><?php _e( 'Consent Solution', 'iubenda' ); ?></a>
651
- </h2>
652
-
653
- <div id="iubenda-settings">
654
-
655
- <form id="iubenda-tabs" action="options.php" method="post">
656
-
657
-
658
- <?php
659
- if ( $tab_key === 'cs' ) {
660
- echo '<p>' . sprintf( __( 'This plugin drastically reduces the need for direct interventions in the code of the site by integrating with iubenda\'s Cookie Solution. It provides a fully customizable cookie banner, dynamically generates a cookie policy <a href="%s" target="_blank">to match the services in use on your site</a>, and, fully manages cookie-related consent - including the blocking of the most common widgets and third-party cookies before consent is received - in order to comply with the GDPR and ePrivacy.', 'iubenda' ), 'https://www.iubenda.com/en/help/19004-how-to-use-the-site-scanner-from-within-the-generator' ) . '</p>';
661
- } else {
662
- echo '<p>' . __( 'Maintaining valid records of consent is a vital part of privacy compliance in general, and it is specifically required under the GDPR. These records should include a userid, timestamp, consent proof, record of the consenting action, and the legal documents available to the user at the time of consent, among other things. This plugin is THE most complete solution for recording, sorting and maintaining GDPR records of consent*. The plugin also boasts built-in compatibility with WordPress comment form, Contact Form 7 and WP Forms plugins for your convenience, but can be manually integrated with any type of web-form and can even store consent proofs for consents collected offline (e.g in-store sign-ups) via WP media upload.' ) . '</p>';
663
- }
664
- ?>
665
-
666
- <?php
667
- settings_fields( $this->tabs[$tab_key]['key'] );
668
- do_settings_sections( $this->tabs[$tab_key]['key'] );
669
-
670
- if ( ! in_array( $this->action, array( 'save', 'edit' ) ) ) {
671
- echo ' <p class="submit submit-' . $tab_key . '">';
672
-
673
- // consent solution tab only
674
- if ( $tab_key != 'cs' && ! empty( iubenda()->options['cons']['public_api_key'] ) ) {
675
- echo '<a href="' . esc_url( add_query_arg( array( 'tab' => 'cons', 'action' => 'autodetect' ), iubenda()->base_url ) ) . '" class="button button-primary button-large iub-autodetect-forms">' . esc_html__( 'Autodetect Forms', 'iubenda' ) . '</a>';
676
- echo '<br />';
677
- }
678
- submit_button( '', 'primary', $this->tabs[$tab_key]['submit'], false );
679
- echo ' ';
680
- submit_button( __( 'Reset to defaults', 'iubenda' ), 'secondary', $this->tabs[$tab_key]['reset'], false );
681
- echo ' </p>';
682
- }
683
- ?>
684
-
685
- </form>
686
-
687
- </div>
688
-
689
- <div id="iubenda-footer">
690
- <?php echo '
691
- <p class="iubenda-text">
692
- <span class="iubenda-title">' . __( 'Need support for this plugin?', 'iubenda' ) . '</span><br />
693
- ' . sprintf( __( "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">support forum.</a>", 'iubenda' ), $this->links['support_forum'] ) . '
694
- </p>';
695
- ?>
696
- </div>
697
-
698
- <div class="clear"></div>
699
- </div>
700
- <?php
701
- }
702
-
703
- /**
704
- * Code option.
705
- *
706
- * @return mixed
707
- */
708
- public function iub_code() {
709
- // multilang support
710
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
711
- echo '
712
- <div id="contextual-help-wrap" class="contextual-help-wrap hidden" tabindex="-1" style="display: block;">
713
- <div id="contextual-help-back" class="contextual-help-back"></div>
714
- <div id="contextual-help-columns" class="contextual-help-columns">
715
- <div class="contextual-help-tabs">
716
- <ul>';
717
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
718
- echo '
719
- <li class="' . ( iubenda()->lang_default == $lang_id ? 'active' : '' ) . '">
720
- <a href="#tab-panel-' . $lang_id . '" aria-controls="tab-panel-' . $lang_id . '">' . $lang_name . '</a>
721
- </li>';
722
- }
723
- echo '
724
- </ul>
725
- </div>
726
-
727
- <div id="contextual-help-tabs-wrap" class="contextual-help-tabs-wrap">';
728
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
729
- // get code for the language
730
- $code = ! empty( iubenda()->options['cs']['code_' . $lang_id] ) ? html_entity_decode( iubenda()->parse_code( iubenda()->options['cs']['code_' . $lang_id] ) ) : '';
731
- // handle default, if empty
732
- $code = empty( $code ) && $lang_id == iubenda()->lang_default ? html_entity_decode( iubenda()->parse_code( iubenda()->options['cs']['code_default'] ) ) : $code;
733
-
734
- echo '
735
- <div id="tab-panel-' . $lang_id . '" class="help-tab-content' . ( iubenda()->lang_default == $lang_id ? ' active' : '' ) . '">
736
- <textarea name="iubenda_cookie_law_solution[code_' . $lang_id . ']" class="large-text" cols="50" rows="10">' . $code . '</textarea>
737
- <p class="description">' . sprintf( __( 'Enter the iubenda code for %s.', 'iubenda' ), $lang_name ) . '</p>
738
- </div>';
739
- }
740
- echo '
741
- </div>
742
- </div>
743
- </div>';
744
- } else {
745
- echo '
746
- <div id="iub_code_default">
747
- <textarea name="iubenda_cookie_law_solution[code_default]" class="large-text" cols="50" rows="10">' . html_entity_decode( iubenda()->parse_code( iubenda()->options['cs']['code_default'] ) ) . '</textarea>
748
- <p class="description">' . __( 'Enter the iubenda code.', 'iubenda' ) . '</p>
749
- </div>';
750
  }
751
- }
752
-
753
- /**
754
- * Custom scripts option.
755
- *
756
- * @return void
757
- */
758
- public function iub_custom_scripts() {
759
- echo '
760
- <div id="contextual-help-wrap-2" class="contextual-help-wrap hidden" tabindex="-1" style="display: block;">
761
- <div id="contextual-help-back-2" class="contextual-help-back"></div>
762
- <div id="contextual-help-columns-2" class="contextual-help-columns">
763
- <div class="contextual-help-tabs">
764
- <ul>
765
- <li class="active">
766
- <a href="#tab-panel-scripts" aria-controls="tab-panel-scripts">' . esc_html__( 'Scripts', 'iubenda' ) . '</a>
767
- </li>
768
- <li>
769
- <a href="#tab-panel-iframes" aria-controls="tab-panel-iframes">' . esc_html__( 'Iframes', 'iubenda' ) . '</a>
770
- </li>
771
- </ul>
772
- </div>
773
- <div id="contextual-help-tabs-wrap-2" class="contextual-help-tabs-wrap">
774
- <div id="tab-panel-scripts" class="help-tab-content active">
775
- <p class="description">' . __( 'Provide a list of custom scripts you\'d like to block and assign their purpose.', 'iubenda' ) . '</p>
776
- <div id="custom-script-field-template" class="template-field" style="display: none;">
777
- <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="' . __( 'Enter custom script', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'script', 0 ) . ' <a href="#" class="remove-custom-script-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
778
- </div>';
779
-
780
- if ( ! empty( iubenda()->options['cs']['custom_scripts'] ) ) {
781
- foreach ( iubenda()->options['cs']['custom_scripts'] as $script => $type ) {
782
- echo '
783
- <div class="custom-script-field">
784
- <input type="text" class="regular-text" value="' . esc_attr( $script ) . '" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="' . __( 'Enter custom script', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'script', $type ) . ' <a href="#" class="remove-custom-script-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
785
- </div>';
786
- }
787
- }
788
-
789
- echo '
790
- <a href="#" class="add-custom-script-field button-secondary">Add New Script</a>
791
- </div>
792
- <div id="tab-panel-iframes" class="help-tab-content">
793
- <p class="description">' . __( 'Provide a list of custom iframes you\'d like to block and assign their purpose. ', 'iubenda' ) . '</p>
794
- <div id="custom-iframe-field-template" class="template-field" style="display: none;">
795
- <input type="text" class="regular-text" value="" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="' . __( 'Enter custom iframe', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'iframe', 0 ) . ' <a href="#" class="remove-custom-iframe-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
796
- </div>';
797
-
798
- if ( ! empty( iubenda()->options['cs']['custom_iframes'] ) ) {
799
- foreach ( iubenda()->options['cs']['custom_iframes'] as $iframe => $type ) {
800
- echo '
801
- <div class="custom-iframe-field">
802
- <input type="text" class="regular-text" value="' . esc_attr( $iframe ) . '" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="' . __( 'Enter custom iframe', 'iubenda' ) . '" /> ' . $this->render_tag_types( 'iframe', $type ) . ' <a href="#" class="remove-custom-iframe-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
803
- </div>';
804
- }
805
- }
806
-
807
- echo '
808
- <a href="#" class="add-custom-iframe-field button-secondary">Add New Iframe</a>
809
- </div>
810
- </div>
811
- </div>
812
- </div>';
813
- }
814
-
815
- /**
816
- * Prepare tag types select.
817
- *
818
- * @param string $type
819
- * @param int $selected
820
- * @return string
821
- */
822
- function render_tag_types( $type, $selected ) {
823
- $html = '<select name="iubenda_cookie_law_solution[custom_' . $type . 's][type][]">';
824
-
825
- foreach ( $this->tag_types as $tag_id => $tag_name ) {
826
- $html .= '<option value="' . esc_attr( $tag_id ) . '" ' . selected( $selected, $tag_id, false ) . '>' . esc_html( $tag_name ) . '</option>';
827
- }
828
-
829
- return $html . '</select>';
830
- }
831
-
832
- /**
833
- * Parsing option.
834
- *
835
- * @return mixed
836
- */
837
- public function iub_parse() {
838
- echo '
839
- <div id="iub_parse_container">
840
- <label><input id="iub_parse" type="checkbox" name="iubenda_cookie_law_solution[parse]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['parse'], false ) . '/>' . __( 'Automatically block scripts detected by the plugin', 'iubenda' ) . '</label>
841
- <p class="description">' . '(' . sprintf( __( "see <a href=\"%s\" target=\"_blank\">our documentation</a> for the list of detected scripts.", 'iubenda' ), $this->links['documentation'] ) . ')' . '</p>
842
- <div id="iub_parser_engine_container"' . ( iubenda()->options['cs']['parse'] === false ? ' style="display: none;"' : '' ) . '>
843
- <div>
844
- <label><input id="iub_parser_engine-new" type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="new" ' . checked( 'new', iubenda()->options['cs']['parser_engine'], false ) . ' />' . __( 'Primary', 'iubenda' ) . '</label>
845
- <label><input id="iub_parser_engine-default" type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="default" ' . checked( 'default', iubenda()->options['cs']['parser_engine'], false ) . ' />' . __( 'Secondary', 'iubenda' ) . '</label>
846
- <p class="description">' . __( 'Select parsing engine.', 'iubenda' ) . '</p>
847
- </div>
848
- <div>
849
- <label><input id="iub_skip_parsing" type="checkbox" name="iubenda_cookie_law_solution[skip_parsing]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['skip_parsing'], false ) . '/>' . __( 'Leave scripts untouched on the page if the user has already given consent', 'iubenda' ) . '</label>
850
- <p class="description">(' . __( "improves performance, highly recommended, to be deactivated only if your site uses a caching system or if you're collecting per-category consent.", 'iubenda' ) . ')</p>
851
- </div>
852
- </div>
853
- </div>';
854
- }
855
-
856
- /**
857
- * Ctype option.
858
- *
859
- * @return mixed
860
- */
861
- public function iub_ctype() {
862
- echo '
863
- <div id="iub_ctype_container">
864
- <label><input id="iub_ctype" type="checkbox" name="iubenda_cookie_law_solution[ctype]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['ctype'], false ) . '/>' . __( 'Restrict the plugin to run only for requests that have "Content-type: text / html" (recommended)', 'iubenda' ) . '</label>
865
- </div>';
866
- }
867
-
868
- /**
869
- * RSS feed option.
870
- *
871
- * @return mixed
872
- */
873
- public function iub_output_feed() {
874
- echo '
875
- <div id="iub_output_feed_container">
876
- <label><input id="iub_output_feed" type="checkbox" name="iubenda_cookie_law_solution[output_feed]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['output_feed'], false ) . '/>' . __( 'Do not run the plugin inside the RSS feed (recommended)', 'iubenda' ) . '</label>
877
- </div>';
878
- }
879
-
880
- /**
881
- * POST request option.
882
- *
883
- * @return mixed
884
- */
885
- public function iub_output_post() {
886
- echo '
887
- <div id="iub_output_post_container">
888
- <label><input id="iub_output_post" type="checkbox" name="iubenda_cookie_law_solution[output_post]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['output_post'], false ) . '/>' . __( 'Do not run the plugin on POST requests (recommended)', 'iubenda' ) . '</label>
889
- </div>';
890
- }
891
-
892
- /**
893
- * Menu option.
894
- *
895
- * @return mixed
896
- */
897
- public function iub_menu_position() {
898
- echo '
899
- <div id="iub_menu_position_container">
900
- <label><input id="iub_menu_position-topmenu" type="radio" name="iubenda_cookie_law_solution[menu_position]" value="topmenu" ' . checked( 'topmenu', iubenda()->options['cs']['menu_position'], false ) . ' />' . __( 'Top menu', 'iubenda' ) . '</label>
901
- <label><input id="iub_menu_position-submenu" type="radio" name="iubenda_cookie_law_solution[menu_position]" value="submenu" ' . checked( 'submenu', iubenda()->options['cs']['menu_position'], false ) . ' />' . __( 'Submenu', 'iubenda' ) . '</label>
902
- <p class="description">' . __( 'Select whether to display iubenda in a top admin menu or the Settings submenu.', 'iubenda' ) . '</p>
903
- </div>';
904
- }
905
-
906
- /**
907
- * Google AMP support option.
908
- *
909
- * @return mixed
910
- */
911
- public function iub_amp_support() {
912
- echo '
913
- <div id="iub_amp_support_container">
914
- <label><input id="iub_amp_support" type="checkbox" name="iubenda_cookie_law_solution[amp_support]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['amp_support'], false ) . '/>' . __( 'Enable Google AMP support.', 'iubenda' ) . '</label>
915
- <p class="description">' . sprintf( __( 'This feature enables iubenda on AMP pages via the <a href="%s" target="_blank">AMP</a> and <a href="%s" target="_blank">AMP for WP</a> plugins. AMP requires specific configuration parameters and a page hosted on your domain where the configuration is loaded from. <a href="%s" target="_blank">Learn more on iubenda and AMP</a>.', 'iubenda' ), 'https://wordpress.org/plugins/amp/', 'https://wordpress.org/plugins/accelerated-mobile-pages/', 'https://www.iubenda.com/en/help/22135-cookie-solution-amp#wordpress' ) . '</p>
916
- <div id="iub_amp_options_container"' . ( iubenda()->options['cs']['amp_support'] === false ? ' style="display: none;"' : '' ) . '>
917
- <div>
918
- <label><input id="iub_amp_source-local" class="iub_amp_source" type="radio" name="iubenda_cookie_law_solution[amp_source]" value="local" ' . checked( 'local', iubenda()->options['cs']['amp_source'], false ) . ' />' . __( 'Auto-generated configuration file', 'iubenda' ) . '</label>
919
- <label><input id="iub_amp_source-remote" class="iub_amp_source" type="radio" name="iubenda_cookie_law_solution[amp_source]" value="remote" ' . checked( 'remote', iubenda()->options['cs']['amp_source'], false ) . ' />' . __( 'Custom configuration file', 'iubenda' ) . '</label>
920
- <p class="description">' . __( 'Select the iubenda AMP configuration file location.', 'iubenda' ) . '</p>
921
- </div>
922
- <div id="iub_amp_template-local"' . ( iubenda()->options['cs']['amp_source'] === 'remote' ? ' style="display: none;"' : '' ) . '>';
923
- if ( empty( iubenda()->options['cs']['amp_template_done'] ) ) {
924
- echo '
925
- <p class="description">' . __( 'No file available. Save changes to generate iubenda AMP configuration file.', 'iubenda' ) . '</p>';
926
- } else {
927
- // multilang support
928
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
929
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
930
- echo $lang_name . ':
931
- <a href="' . iubenda()->AMP->get_amp_template_url( $lang_id ) . '" target="_blank">' . iubenda()->AMP->get_amp_template_url( $lang_id ) . '</a><br />';
932
- }
933
- } else {
934
- echo '
935
- <a href="' . iubenda()->AMP->get_amp_template_url() . '" target="_blank">' . iubenda()->AMP->get_amp_template_url() . '</a>';
936
- }
937
- }
938
- echo '
939
- </div>
940
- <div id="iub_amp_template-remote"' . ( iubenda()->options['cs']['amp_source'] === 'local' ? ' style="display: none;"' : '' ) . '>';
941
-
942
- // multilang support
943
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
944
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
945
- echo $lang_name . ':
946
- <label><input id="iub_amp_template-' . $lang_id . '" type="text" class="regular-text" name="iubenda_cookie_law_solution[amp_template][' . $lang_id . ']" value="' . ( isset( iubenda()->options['cs']['amp_template'][$lang_id] ) ? esc_url( iubenda()->options['cs']['amp_template'][$lang_id] ) : '' ) . '" /></label><br />';
947
- }
948
- } else {
949
- echo '
950
- <label><input id="iub_amp_template" type="text" class="regular-text" name="iubenda_cookie_law_solution[amp_template]" value="' . ( isset( iubenda()->options['cs']['amp_template'] ) ? esc_url( iubenda()->options['cs']['amp_template'] ) : '' ) . '" /></label>';
951
- }
952
- echo '
953
- <p class="description">' . __( 'If you\'re experiencing issues with AMP setup download the generated iubenda AMP configuration file, upload it to any SSL server and paste the file link to the field above.', 'iubenda' ) . '</p>
954
- </div>
955
- <p class="description">' . sprintf( __( 'Seeing the AMP cookie notice when testing from Google but not when visiting your AMP pages directly? <a href="%s" target="_blank">Learn how to fix it</a>.', 'iubenda' ), 'https://www.iubenda.com/en/help/22135-cookie-solution-amp-wordpress#amp-domain' ) . '</p>
956
- </div>
957
- </div>';
958
- }
959
-
960
- /**
961
- * Deactivation option.
962
- *
963
- * @return mixed
964
- */
965
- public function iub_deactivation() {
966
- echo '
967
- <div id="iub_deactivation_container">
968
- <label><input id="iub_deactivation" type="checkbox" name="iubenda_cookie_law_solution[deactivation]" value="1" ' . checked( true, (bool) iubenda()->options['cs']['deactivation'], false ) . '/>' . __( 'Delete all plugin data upon deactivation', 'iubenda' ) . '</label>
969
- </div>';
970
- }
971
-
972
- /**
973
- * Public API Key option.
974
- *
975
- * @return mixed
976
- */
977
- public function iub_public_api_key() {
978
- echo '
979
- <div id="iub_public_api_key_container">
980
- <label><input id="iub_public_api_key" type="text" class="regular-text" name="iubenda_consent_solution[public_api_key]" value="' . iubenda()->options['cons']['public_api_key'] . '" /></label>
981
- <p class="description">' . __( 'Enter your iubenda Javascript library public API key.', 'iubenda' ) . '</p>
982
- </div>';
983
- }
984
-
985
- /**
986
- * Forms list.
987
- *
988
- * @return mixed
989
- */
990
- public function iubenda_consent_forms() {
991
- $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
992
- $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : false;
993
-
994
- $supported_forms = iubenda()->forms->sources;
995
-
996
- echo '
997
- <p class="description">' . __( 'This section lists the forms available for field mapping. The plugin currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce Checkout and WP Forms.', 'iubenda' ) . '</p>';
998
-
999
- // list screen
1000
- if ( ! class_exists( 'WP_List_Table' ) )
1001
- include_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
1002
-
1003
- include_once( IUBENDA_PLUGIN_PATH . '/includes/forms-list-table.php' );
1004
-
1005
- $list_table = new iubenda_List_Table_Forms();
1006
-
1007
- echo '
1008
- <div id="iubenda-consent-forms">';
1009
- $list_table->views();
1010
- $list_table->prepare_items();
1011
- $list_table->display();
1012
-
1013
- echo '
1014
- </div>';
1015
- }
1016
-
1017
- /**
1018
- * Single form.
1019
- *
1020
- * @return mixed
1021
- */
1022
- public function iubenda_consent_form() {
1023
- $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
1024
- $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : false;
1025
-
1026
- if ( ! $form )
1027
- return;
1028
-
1029
- $status = isset( $form->post_status ) && in_array( $form->post_status, array_keys( iubenda()->forms->statuses ) ) ? esc_attr( $form->post_status ) : 'publish';
1030
- $subject = isset( $form->form_subject ) && is_array( $form->form_subject ) ? array_map( 'esc_attr', $form->form_subject ) : array();
1031
- $preferences = isset( $form->form_preferences ) && is_array( $form->form_preferences ) ? array_map( 'esc_attr', $form->form_preferences ) : array();
1032
- $exclude = isset( $form->form_exclude ) && is_array( $form->form_exclude ) ? array_map( 'esc_attr', $form->form_exclude ) : array();
1033
- $legal_notices = isset( $form->form_legal_notices ) && is_array( $form->form_legal_notices ) ? array_map( 'esc_attr', $form->form_legal_notices ) : array();
1034
-
1035
- $available_fields = array();
1036
-
1037
- if ( ! empty( $form->form_fields ) && is_array( $form->form_fields ) ) {
1038
- foreach ( $form->form_fields as $index => $form_field ) {
1039
- if ( is_array( $form_field ) ) {
1040
- // print_r( $form_field );
1041
- $available_fields[] = $form_field['label'] . ' (' . $form_field['type'] . ')';
1042
- } else {
1043
- $available_fields[] = $form_field;
1044
- }
1045
- }
1046
- }
1047
-
1048
- // print_r( $form );
1049
-
1050
- echo '
1051
- <div id="poststuff">
1052
- <div id="post-body" class="metabox-holder columns-2">
1053
- <div id="post-body-content">
1054
- <div id="titlediv">
1055
- <div id="titlewrap">
1056
- <h1>' . $form->post_title . '</h1>
1057
- </div>
1058
- <p class="description">' . sprintf( __( '%s form title.', 'iubenda' ), ( array_key_exists( $form->form_source, iubenda()->forms->sources ) ? iubenda()->forms->sources[$form->form_source] : __( 'Unknown', 'iubenda' ) ) ) . '</p>
1059
-
1060
- <div style="margin-top: 18px"><strong>' . __( 'Available form fields:', 'iubenda' ) . '</strong><br /><p class="description">' . implode( ', ', $available_fields ) . '</p></div>
1061
- </div>
1062
- </div>
1063
- <div id="postbox-container-1" class="postbox-container">
1064
- <div id="side-sortables" class="">
1065
- <div id="submitdiv" class="postbox ">
1066
- <h3 class="hndle"><span>' . __( 'Publish' ) . '</span></h3>
1067
- <div class="inside">
1068
- <div id="submitpost" class="submitbox">
1069
- <div id="minor-publishing">
1070
- <div class="misc-pub-section misc-pub-post-status">
1071
- <label for="status">' . __( 'Status' ) . ':</label>
1072
- <div id="status-select" class="" style="margin: 3px 0 0;">
1073
- <select id="status" name="status">';
1074
- foreach ( iubenda()->forms->statuses as $name => $label ) {
1075
- echo '
1076
- <option value="' . $name . '"' . selected( $form->post_status, $name, true ) . '>' . $label . '</option>';
1077
- }
1078
- echo '
1079
- </select>
1080
- </div>
1081
- </div>
1082
- <div id="major-publishing-actions">
1083
- <div id="delete-action">
1084
- <a class="submitdelete deletion" href="' . esc_url( add_query_arg( array( 'tab' => 'cons' ), iubenda()->base_url ) ) . '">' . __( 'Cancel' ) . '</a>
1085
- </div>
1086
- <div id="publishing-action">
1087
- <span class="spinner"></span>
1088
- <input type="hidden" value="' . $form->ID . '" name="form_id">
1089
- <input id="publish" class="button button-primary button-large" type="submit" value="' . __( 'Save' ) . '" name="save">
1090
- </div>
1091
- <div class="clear"></div>
1092
- </div>
1093
- </div>
1094
- </div>
1095
- </div>
1096
- </div>
1097
- </div>
1098
- </div>
1099
- <div id="postbox-container-2" class="postbox-container">
1100
- <div id="normal-sortables" class="meta-box-sortables">
1101
- <div id="map-fields" class="postbox">
1102
- <h3 class="hndle ui-sortable-handle"><span>' . __( 'Map fields', 'iubenda' ) . '</span></h3>
1103
- <div class="inside">
1104
- <table class="widefat">
1105
- <tbody>
1106
- <tr>
1107
- <td class="label table-label">
1108
- <h4>' . __( 'Subject fields', 'iubenda' ) . ' <span class="required">(required)</span></h4>
1109
- <p class="description">' . __( 'Subject fields allow you to store a series of identifying values about your individual subjects/users. Please map the subject field with the corresponding form fields where applicable.', 'iubenda' ) . '</p>
1110
- </td>
1111
- <td>
1112
- <table class="widefat subject-table">
1113
- <thead>
1114
- <td class="label">' . __( 'Subject field', 'iubenda' ) . '</td>
1115
- <td class="label">' . __( 'Form field', 'iubenda' ) . '</td>
1116
- </thead>
1117
- <tbody>';
1118
-
1119
- foreach ( $this->subject_fields as $field_name => $field_label ) {
1120
- $selected = isset( $subject[$field_name] ) ? $subject[$field_name] : '';
1121
- $none = $field_name == 'id' ? __( 'Autogenerated', 'iubenda' ) : __( 'None', 'iubenda' );
1122
-
1123
- echo '
1124
- <tr class="subject-field options-field">
1125
- <td>' . $field_name . ' (' . $field_label . ')' . '</td>
1126
- <td>
1127
- <select class="subject-fields-select select-' . $field_name . '" name="subject[' . $field_name . ']">
1128
- <option value="" ' . selected( $selected, '', false ) . '>' . $none . '</option>';
1129
- if ( ! empty( $form->form_fields ) ) {
1130
- foreach ( $form->form_fields as $index => $form_field ) {
1131
- // get field data
1132
- $form_field_value = is_array( $form_field ) ? $index : $form_field;
1133
- $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
1134
- $form_field_selected = is_array( $form_field ) ? $index : $form_field;
1135
-
1136
- echo '<option value="' . $form_field_value . '" ' . selected( $selected, $form_field_selected, false ) . '>' . $form_field_label . '</option>';
1137
- }
1138
- }
1139
- echo '
1140
- </select>
1141
- </td>
1142
- </tr>
1143
- ';
1144
- }
1145
- echo '
1146
- </tbody>
1147
- </table>
1148
- </td>
1149
- </tr>
1150
- <tr>
1151
- <td class="label table-label">
1152
- <h4>' . __( 'Preferences fields', 'iubenda' ) . ' <span class="required">(required)</span></h4>
1153
- <p class="description">' . __( 'Preferences fields allow you to store a record of the various opt-ins points at which the user has agreed or given consent, such as fields for agreeing to terms and conditions, newsletter, profiling, etc. *Please create at least one preference field.', 'iubenda' ) . '</p>
1154
- </td>
1155
- <td>
1156
- <table class="widefat preferences-table">
1157
- <thead>
1158
- <td class="label">' . __( 'Preferences field', 'iubenda' ) . '</td>
1159
- <td class="label">' . __( 'Form field', 'iubenda' ) . '</td>
1160
- </thead>
1161
- <tbody>';
1162
- echo '
1163
- <tr id="preferences-field-template" class="template-field" style="display: none;">
1164
- <td><input type="text" class="regular-text" value="" name="preferences[__PREFERENCE_ID__][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" /></td>
1165
- <td>
1166
- <select class="preferences-fields-select select-' . $field_name . '" name="preferences[__PREFERENCE_ID__][value]">';
1167
- if ( ! empty( $form->form_fields ) ) {
1168
- foreach ( $form->form_fields as $index => $form_field ) {
1169
- // get field data
1170
- $form_field_value = is_array( $form_field ) ? $index : $form_field;
1171
- $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
1172
-
1173
- echo '<option value="' . $form_field_value . '">' . $form_field_label . '</option>';
1174
- }
1175
- }
1176
- echo '
1177
- </select>
1178
- <a href="javascript:void(0)" class="remove-preferences-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
1179
- </td>
1180
- </tr>';
1181
-
1182
- if ( $preferences ) {
1183
- $index = 0;
1184
-
1185
- foreach ( $preferences as $field_name => $field_value ) {
1186
- $selected = isset( $preferences[$field_name] ) ? $preferences[$field_name] : '';
1187
-
1188
- echo '
1189
- <tr class="preferences-field options-field">
1190
- <td><input type="text" class="regular-text" value="' . $field_name . '" name="preferences[' . $index . '][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" /></td>
1191
- <td>
1192
- <select class="preferences-fields-select select-' . $field_name . '" name="preferences[' . $index . '][value]">';
1193
- if ( ! empty( $form->form_fields ) ) {
1194
- foreach ( $form->form_fields as $index => $form_field ) {
1195
- // get field data
1196
- $form_field_value = is_array( $form_field ) ? $index : $form_field;
1197
- $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
1198
- $form_field_selected = is_array( $form_field ) ? $index : $form_field;
1199
-
1200
- echo '<option value="' . $form_field_value . '" ' . selected( $selected, $form_field_selected, false ) . '>' . $form_field_label . '</option>';
1201
- }
1202
- }
1203
- echo '
1204
- </select>
1205
- <a href="javascript:void(0)" class="remove-preferences-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
1206
- </td>
1207
- </tr>';
1208
-
1209
- $index++;
1210
- }
1211
- }
1212
-
1213
- echo '
1214
- <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-preferences-field button-secondary">' . __( 'Add New Preference', 'iubenda' ) . '</a></td></tr>
1215
- </tbody>
1216
- </table>
1217
- </td>
1218
- </tr>
1219
- <tr>
1220
- <td class="label table-label">
1221
- <h4>' . __( 'Exclude fields', 'iubenda' ) . '</h4>
1222
- <p class="description">' . __( 'Exclude fields allow you to create a list of fields that you would like to exclude from your Consent Solution recorded proofs (for e.g. password or other fields not related to the consent).', 'iubenda' ) . '</p>
1223
- </td>
1224
- <td>
1225
- <table class="widefat exclude-table">
1226
- <thead>
1227
- <td class="label">' . __( 'Exclude field', 'iubenda' ) . '</td>
1228
- <td class="label"></td>
1229
- </thead>
1230
- <tbody>';
1231
- echo '
1232
- <tr id="exclude-field-template" class="template-field" style="display: none;">
1233
- <td>
1234
- <select class="exclude-fields-select select-' . $field_name . '" name="exclude[__EXCLUDE_ID__][field]">';
1235
- if ( ! empty( $form->form_fields ) ) {
1236
- foreach ( $form->form_fields as $index => $form_field ) {
1237
- // get field data
1238
- $form_field_value = is_array( $form_field ) ? $index : $form_field;
1239
- $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
1240
-
1241
- echo '<option value="' . $form_field_value . '">' . $form_field_label . '</option>';
1242
- }
1243
- }
1244
- echo '
1245
- </select>
1246
- <a href="javascript:void(0)" class="remove-exclude-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
1247
- </td>
1248
- <td></td>
1249
-
1250
- </tr>';
1251
-
1252
- if ( $exclude ) {
1253
- $index = 0;
1254
-
1255
- foreach ( $exclude as $index => $field_name ) {
1256
- $selected = isset( $exclude[$index] ) ? $exclude[$index] : '';
1257
-
1258
- echo '
1259
- <tr class="exclude-field options-field">
1260
- <td>
1261
- <select class="exclude-fields-select select-' . $field_name . '" name="exclude[' . $index . '][field]">';
1262
- if ( ! empty( $form->form_fields ) ) {
1263
- foreach ( $form->form_fields as $index => $form_field ) {
1264
- // get field data
1265
- $form_field_value = is_array( $form_field ) ? $index : $form_field;
1266
- $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
1267
- $form_field_selected = is_array( $form_field ) ? $index : $form_field;
1268
-
1269
- echo '<option value="' . $form_field_value . '" ' . selected( $selected, $form_field_selected, false ) . '>' . $form_field_label . '</option>';
1270
- }
1271
- }
1272
- echo '
1273
- </select>
1274
- <a href="javascript:void(0)" class="remove-exclude-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
1275
- </td>
1276
- <td></td>
1277
- </tr>';
1278
-
1279
- $index++;
1280
- }
1281
- }
1282
-
1283
- echo '
1284
- <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-exclude-field button-secondary">' . __( 'Add New Exclude', 'iubenda' ) . '</a></td></tr>
1285
- </tbody>
1286
- </table>
1287
- </td>
1288
- </tr>
1289
- </tbody>
1290
- </table>
1291
- </div>
1292
- </div>
1293
- <div id="legal-notices" class="postbox">
1294
- <h3 class="hndle ui-sortable-handle"><span>' . __( 'Legal Notices', 'iubenda' ) . '</span></h3>
1295
- <div class="inside">
1296
- <table class="widefat">
1297
- <tbody>
1298
- <tr>
1299
- <td class="label table-label">
1300
- <h4>' . __( 'Legal documents', 'iubenda' ) . '</h4>
1301
- <p class="description">' . __( 'In general, it\'s important that you declare which legal documents are being agreed upon when each consent is collected. However, if you use iubenda for your legal documents, it is *required* that you identify the documents by selecting them here.', 'iubenda' ) . '</p>
1302
- </td>
1303
- <td>
1304
- <table class="widefat legal_notices-table">
1305
- <thead>
1306
- <td class="label">' . __( 'Identifier', 'iubenda' ) . '</td>
1307
- <td class="label"></td>
1308
- </thead>
1309
- <tbody>';
1310
-
1311
- // default identifiers
1312
- foreach ( $this->legal_notices as $index => $field_name ) {
1313
- echo '
1314
- <tr class="legal_notices-field default-field">
1315
- <td>' . ( $index === 0 ? '<p class="description">' . __( 'Please select each legal document available on your site.', 'iubenda' ) . '</p>' : '' ) . '<label for="legal_notices-default-field=' . $index . '"><input id="legal_notices-default-field=' . $index . '" type="checkbox" value="' . $field_name . '" name="legal_notices[' . $index . '][field]"' . checked( in_array( $field_name, $legal_notices, true ), true, false ) . 'placeholder="' . __( 'Enter field name', 'iubenda' ) . '" />' . $field_name . '</label></td>
1316
- <td></td>
1317
- </tr>';
1318
- }
1319
-
1320
- $index++;
1321
-
1322
- // custom identifiers
1323
- echo '
1324
- <tr id="legal_notices-field-template" class="template-field" style="display: none;">
1325
- <td><input type="text" class="regular-text" value="" name="legal_notices[__LEGAL_NOTICE_ID__][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" /> <a href="javascript:void(0)" class="remove-legal_notices-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a></td>
1326
- <td></td>
1327
- </tr>';
1328
-
1329
- echo '
1330
- <tr>
1331
- <td colspan="2"><p class="description" style="margin-bottom: 0;">' . __( 'Alternatively, you may add your own custom document identifiers.', 'iubenda' ) . '</p></td>
1332
- </tr>';
1333
-
1334
- if ( $legal_notices ) {
1335
- foreach ( $legal_notices as $field_name ) {
1336
- if ( in_array( $field_name, $this->legal_notices, true ) )
1337
- continue;
1338
-
1339
- echo '
1340
- <tr class="legal_notices-field options-field">
1341
- <td><input type="text" class="regular-text" value="' . $field_name . '" name="legal_notices[' . $index . '][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" /> <a href="javascript:void(0)" class="remove-legal_notices-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a></td>
1342
- <td></td>
1343
- </tr>';
1344
-
1345
- $index++;
1346
- }
1347
- }
1348
-
1349
- echo '
1350
- <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-legal_notices-field button-secondary">' . __( 'Add New Document', 'iubenda' ) . '</a></td></tr>';
1351
- echo '
1352
- </tbody>
1353
- </table>
1354
- </td>
1355
- </tr>
1356
- </tbody>
1357
- </table>
1358
- </div>
1359
- </div>
1360
- </div>
1361
- </div>
1362
- </div>
1363
- </div>
1364
- <div class="clear"></div>';
1365
-
1366
- // echo '<pre>'; print_r( $form ); echo '</pre>';
1367
- }
1368
-
1369
- /**
1370
- * Save cookie solution options.
1371
- *
1372
- * @return void
1373
- */
1374
- public function save_cookie_law_options( $input ) {
1375
- if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) )
1376
- return $input;
1377
-
1378
- // save options
1379
- if ( isset( $_POST['save_iubenda_options'] ) ) {
1380
- $input['parse'] = (bool) isset( $input['parse'] );
1381
- $input['parser_engine'] = isset( $input['parser_engine'] ) && in_array( $input['parser_engine'], array( 'default', 'new' ) ) ? $input['parser_engine'] : iubenda()->defaults['cs']['parser_engine'];
1382
- $input['skip_parsing'] = (bool) isset( $input['skip_parsing'] );
1383
- $input['ctype'] = (bool) isset( $input['ctype'] );
1384
- $input['output_feed'] = (bool) isset( $input['output_feed'] );
1385
- $input['output_post'] = (bool) isset( $input['output_post'] );
1386
- $input['menu_position'] = isset( $input['menu_position'] ) && in_array( $input['menu_position'], array( 'topmenu', 'submenu' ) ) ? $input['menu_position'] : iubenda()->defaults['cs']['menu_position'];
1387
- $input['amp_support'] = (bool) isset( $input['amp_support'] );
1388
- $input['deactivation'] = (bool) isset( $input['deactivation'] );
1389
-
1390
- // multilang support
1391
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
1392
- $iubenda_code = array();
1393
-
1394
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
1395
- $input['code_' . $lang_id] = $iubenda_code[$lang_id] = ! empty( $input['code_' . $lang_id] ) ? iubenda()->parse_code( $input['code_' . $lang_id] ) : '';
1396
-
1397
- // handle default lang too
1398
- if ( $lang_id == iubenda()->lang_default ) {
1399
- $input['code_default'] = ! empty( $input['code_' . $lang_id] ) ? iubenda()->parse_code( $input['code_' . $lang_id] ) : iubenda()->options['cs']['code_default'];
1400
- }
1401
- }
1402
- } else {
1403
- $iubenda_code = '';
1404
-
1405
- $input['code_default'] = $iubenda_code = ! empty( $input['code_default'] ) ? iubenda()->parse_code( $input['code_default'] ) : '';
1406
- }
1407
-
1408
- // generate amp template file
1409
- if ( isset( $input['amp_support'] ) ) {
1410
- $template_done = false;
1411
-
1412
- if ( ! empty( $iubenda_code ) ) {
1413
- if ( is_array( $iubenda_code ) ) {
1414
- $template_done = array();
1415
-
1416
- foreach ( $iubenda_code as $lang => $code ) {
1417
- $template_done[$lang] = (bool) iubenda()->AMP->generate_amp_template( $code, $lang );
1418
- }
1419
- } else {
1420
- $template_done = (bool) iubenda()->AMP->generate_amp_template( $iubenda_code );
1421
- }
1422
- }
1423
-
1424
- // Check if AMP is checked and the auto generated option is selected
1425
- if ("1" == $input['amp_support'] && 'local' == $input['amp_source']) {
1426
- if (is_bool($template_done) && false === $template_done) {
1427
- $message = "Currently, you do not have write permission for <i>%s</i>. For instructions on how to fix this, please read <a target=\"_blank\" href=\"%s\">our guide</a>.";
1428
- $our_guide_URL = 'https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide#amp-permissions';
1429
- $file_path = IUBENDA_PLUGIN_PATH . 'templates' . DIRECTORY_SEPARATOR;
1430
- add_settings_error('cs_settings_errors', 'iub_cs_settings_updated', __(sprintf($message, $file_path, $our_guide_URL), 'iubenda'), 'error');
1431
  }
1432
  }
1433
 
1434
- $input['amp_template_done'] = $template_done;
1435
-
1436
- if ( is_array( $input['amp_template'] ) ) {
1437
- foreach ( $input['amp_template'] as $lang => $template ) {
1438
- $input['amp_template'][$lang] = esc_url( $template );
1439
- }
1440
- } else {
1441
- $input['amp_template'] = esc_url( $input['amp_template'] );
1442
- }
1443
- }
1444
-
1445
- // scripts
1446
- if ( ! empty( $input['custom_scripts'] ) && ! empty( $input['custom_scripts']['script'] ) && ! empty( $input['custom_scripts']['type'] ) ) {
1447
- $scripts = array();
1448
-
1449
- // first field is template
1450
- if ( count( $input['custom_scripts']['script'] ) > 1 ) {
1451
- foreach ( $input['custom_scripts']['script'] as $number => $script ) {
1452
- $trimmed = trim( $script );
1453
-
1454
- if ( $trimmed !== '' )
1455
- $scripts[$trimmed] = (int) $input['custom_scripts']['type'][$number];
1456
- }
1457
- }
1458
-
1459
- $input['custom_scripts'] = $scripts;
1460
- } else
1461
- $input['custom_scripts'] = array();
1462
-
1463
- // iframes
1464
- if ( ! empty( $input['custom_iframes'] ) && ! empty( $input['custom_iframes']['iframe'] ) && ! empty( $input['custom_iframes']['type'] ) ) {
1465
- $iframes = array();
1466
-
1467
- // first field is template
1468
- if ( count( $input['custom_iframes']['iframe'] ) > 1 ) {
1469
- foreach ( $input['custom_iframes']['iframe'] as $number => $iframe ) {
1470
- $trimmed = trim( $iframe );
1471
-
1472
- if ( $trimmed !== '' )
1473
- $iframes[$trimmed] = (int) $input['custom_iframes']['type'][$number];
1474
- }
1475
- }
1476
-
1477
- $input['custom_iframes'] = $iframes;
1478
- } else
1479
- $input['custom_iframes'] = array();
1480
-
1481
- add_settings_error( 'cs_settings_errors', 'iub_cs_settings_updated', __( 'Settings saved.', 'iubenda' ), 'updated' );
1482
- // reset options
1483
- } elseif ( isset( $_POST['reset_iubenda_options'] ) ) {
1484
- $input = iubenda()->defaults['cs'];
1485
-
1486
- // multilang support
1487
- if ( iubenda()->multilang && ! empty( iubenda()->languages ) ) {
1488
- foreach ( iubenda()->languages as $lang_id => $lang_name ) {
1489
- $input['code_' . $lang_id] = '';
1490
- }
1491
- }
1492
-
1493
- add_settings_error( 'cs_settings_errors', 'iub_cs_settings_restored', __( 'Settings restored to defaults.', 'iubenda' ), 'updated' );
1494
- }
1495
-
1496
- return $input;
1497
- }
1498
-
1499
- /**
1500
- * Save consent solution options.
1501
- *
1502
- * @return void
1503
- */
1504
- public function save_consent_options( $input ) {
1505
-
1506
- if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) )
1507
- return $input;
1508
-
1509
- // save options
1510
- if ( isset( $_POST['save_consent_options'] ) ) {
1511
- $input['public_api_key'] = isset( $input['public_api_key'] ) ? esc_attr( $input['public_api_key'] ) : '';
1512
-
1513
- add_settings_error( 'cons_settings_errors', 'iub_cons_settings_updated', __( 'Settings saved.', 'iubenda' ), 'updated' );
1514
- // reset options
1515
- } elseif ( isset( $_POST['reset_consent_options'] ) ) {
1516
- $input = iubenda()->defaults['cons'];
1517
 
1518
- add_settings_error( 'cons_settings_errors', 'iub_cons_settings_restored', __( 'Settings restored to defaults.', 'iubenda' ), 'updated' );
1519
- }
 
 
 
 
 
1520
 
1521
- return $input;
1522
- }
 
 
1523
 
1524
- /**
1525
- * Process the bulk actions
1526
- *
1527
- * @return void
1528
- */
1529
- public function process_actions() {
1530
- global $pagenow;
1531
-
1532
- $page = ! empty( $_POST['option_page'] ) ? esc_attr( $_POST['option_page'] ) : ( ! empty( $_GET['page'] ) ? esc_attr( $_GET['page'] ) : '' );
1533
- $id = isset( $_REQUEST['form_id'] ) ? ( is_array( $_REQUEST['form_id'] ) ? array_map( 'ansint', $_REQUEST['form_id'] ) : absint( $_REQUEST['form_id'] ) ) : false;
1534
- $tab_key = ! empty( $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : 'cs';
1535
-
1536
- if ( ! $page )
1537
- return;
1538
-
1539
- // get redirect url
1540
- if ( iubenda()->options['cs']['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
1541
- // sub menu
1542
- $redirect_to = admin_url( 'options-general.php?page=iubenda&tab=' . $tab_key );
1543
- } else {
1544
- // top menu
1545
- $redirect_to = admin_url( 'admin.php?page=iubenda&tab=' . $tab_key );
1546
- }
1547
 
1548
- // add comments cookie option notice
1549
- if ( $tab_key != 'cs' && ! empty( iubenda()->options['cons']['public_api_key'] ) ) {
1550
- $cookies_enabled = get_option( 'show_comments_cookies_opt_in' );
 
 
1551
 
1552
- if ( ! $cookies_enabled ) {
1553
- $this->add_notice( 'iub_comment_cookies_disabled', sprintf( __( 'Please enable comments cookies opt-in checkbox in the <a href="%s" target="_blank">Discussion settings</a>.', 'iubenda' ), esc_url( admin_url( 'options-discussion.php' ) ) ), 'notice' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1554
  }
1555
- }
1556
-
1557
- $result = null;
1558
-
1559
- switch ( $this->action ) {
1560
- case 'autodetect' :
1561
- $result = iubenda()->forms->autodetect_forms();
1562
-
1563
- // new forms notice
1564
- if ( ! empty( $result['new'] ) )
1565
- $this->add_notice( 'iub_autodetect_success', sprintf( _n( '%d form detected successfully.', '%d forms detected successfully.', count( $result['new'] ), 'iubenda' ), count( $result['new'] ) ), 'success' );
1566
-
1567
- // forms changed notice
1568
- if ( ! empty( $result['updated'] ) )
1569
- $this->add_notice( 'iub_autodetect_success', sprintf( _n( '%d form change detected.', '%d form changes detected.', count( $result['updated'] ), 'iubenda' ), count( $result['updated'] ) ), 'success' );
1570
-
1571
- // no changes notice
1572
- if ( empty( $result['new'] ) && empty( $result['updated'] ) )
1573
- $this->add_notice( 'iub_autodetect_success', __( 'No forms or form changes detected.', 'iubenda' ), 'error' );
1574
-
1575
- // make sure it's current host location
1576
- wp_safe_redirect( $redirect_to );
1577
- exit;
1578
-
1579
- break;
1580
-
1581
- case 'save' :
1582
- if ( ! $id )
1583
- return;
1584
-
1585
- $form = iubenda()->forms->get_form( $id );
1586
-
1587
- if ( $form->ID != $id )
1588
- return;
1589
-
1590
- $status = isset( $_POST['status'] ) && in_array( $_POST['status'], array_keys( iubenda()->forms->statuses ) ) ? esc_attr( $_POST['status'] ) : 'publish';
1591
- $subject = isset( $_POST['subject'] ) && is_array( $_POST['subject'] ) ? array_map( 'esc_attr', $_POST['subject'] ) : array();
1592
- $preferences = array();
1593
- $exclude = array();
1594
- $legal_notices = array();
1595
-
1596
- $preferences_raw = isset( $_POST['preferences'] ) && is_array( $_POST['preferences'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['preferences'] ) : array();
1597
- $exclude_raw = isset( $_POST['exclude'] ) && is_array( $_POST['exclude'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['exclude'] ) : array();
1598
- $legal_notices_raw = isset( $_POST['legal_notices'] ) && is_array( $_POST['legal_notices'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['legal_notices'] ) : array();
1599
-
1600
- // format preferences data
1601
- if ( ! empty( $preferences_raw ) && is_array( $preferences_raw ) ) {
1602
- foreach ( $preferences_raw as $index => $data ) {
1603
- if ( ! empty( $data['field'] ) && ( ! is_null( $data['value'] ) || ! "" == $data['value'] ) ) {
1604
- $preferences[ sanitize_key( $data['field'] ) ] = $data['value'];
1605
- }
1606
- }
1607
- }
1608
-
1609
- // format exclude data
1610
- if ( ! empty( $exclude_raw ) && is_array( $exclude_raw ) ) {
1611
- foreach ( $exclude_raw as $index => $data ) {
1612
- if ( ! empty( $data['field'] ) )
1613
- $exclude[] = $data['field'];
1614
- }
1615
- }
1616
-
1617
- // format legal notices data
1618
- if ( ! empty( $legal_notices_raw ) && is_array( $legal_notices_raw ) ) {
1619
- foreach ( $legal_notices_raw as $index => $data ) {
1620
- if ( ! empty( $data['field'] ) )
1621
- $legal_notices[] = $data['field'];
1622
- }
1623
- }
1624
-
1625
- // form first save, update status to mapped automatically
1626
- if ( empty( $form->form_subject ) && empty( $form->form_preferences ) ) {
1627
- $status = 'mapped';
1628
- }
1629
-
1630
- // echo '<pre>'; print_r( $_POST ); echo '</pre>'; exit;
1631
-
1632
- // bail if empty fields
1633
- if ( empty( $subject ) || empty( $preferences ) ) {
1634
- $this->add_notice( 'iub_form_fields_missing', __( 'Form saving failed. Please fill the Subject and Preferences fields.', 'iubenda' ), 'error' );
1635
- return;
1636
- }
1637
-
1638
- $args = array(
1639
- 'ID' => $form->ID,
1640
- 'status' => $status,
1641
- 'object_type' => $form->object_type,
1642
- 'object_id' => $form->object_id,
1643
- 'form_source' => $form->form_source,
1644
- 'form_title' => $form->post_title,
1645
- 'form_date' => $form->post_modified,
1646
- 'form_fields' => $form->form_fields,
1647
- 'form_subject' => $subject,
1648
- 'form_preferences' => $preferences,
1649
- 'form_exclude' => $exclude,
1650
- 'form_legal_notices' => $legal_notices
1651
- );
1652
-
1653
- $result = iubenda()->forms->save_form( $args );
1654
-
1655
- if ( $result ) {
1656
- // form save, inform about form status update
1657
- if ( empty( $form->form_subject ) && empty( $form->form_preferences ) ) {
1658
- $this->add_notice( 'iub_form_saved', __( 'Form saved successfully - form status changed to Mapped.', 'iubenda' ), 'success' );
1659
- // form update
1660
- } else {
1661
- $this->add_notice( 'iub_form_updated', __( 'Form updated successfully.', 'iubenda' ), 'success' );
1662
- }
1663
- } else {
1664
- $this->add_notice( 'iub_form_failed', __( 'Form saving failed.', 'iubenda' ), 'error' );
1665
- }
1666
-
1667
- break;
1668
-
1669
- case 'delete' :
1670
- if ( ! $id )
1671
- return;
1672
-
1673
- $form = iubenda()->forms->get_form( $id );
1674
-
1675
- if ( empty( $form ) )
1676
- return;
1677
-
1678
- $result = iubenda()->forms->delete_form( $id );
1679
-
1680
- if ( $result )
1681
- $this->add_notice( 'iub_form_deleted', __( 'Form deleted successfully.', 'iubenda' ), 'success' );
1682
- else
1683
- $this->add_notice( 'iub_form_delete_failed', __( 'Form delete failed.', 'iubenda' ), 'error' );
1684
-
1685
- // make sure it's current host location
1686
- wp_safe_redirect( $redirect_to );
1687
- exit;
1688
-
1689
- break;
1690
-
1691
- case 'disable_skip_parsing' :
1692
-
1693
- // disable skip parsing option
1694
- $options = iubenda()->options['cs'];
1695
- $options['skip_parsing'] = false;
1696
-
1697
- update_option( 'iubenda_cookie_law_solution', $options );
1698
-
1699
- $this->add_notice( 'iub_settings_updated', __( 'Settings saved.', 'iubenda' ), 'success' );
1700
-
1701
- // make sure it's current host location
1702
- wp_safe_redirect( $redirect_to );
1703
- exit;
1704
-
1705
- break;
1706
-
1707
- default :
1708
- return;
1709
- }
1710
-
1711
- if ( ! empty ( $result ) ) {
1712
- //
1713
- } else {
1714
- //
1715
- }
1716
- }
1717
-
1718
- /**
1719
- * Add admin notice.
1720
- *
1721
- * @param mixed $message
1722
- * @param string $notice_type
1723
- */
1724
- public function add_notice( $key, $message, $notice_type = 'notice' ) {
1725
- $key = ! empty( $key ) ? sanitize_key( $key ) : '';
1726
- $message = ! empty( $message ) ? wp_kses_post( $message ) : '';
1727
- $notice_type = ! empty( $notice_type ) && in_array( $notice_type, $this->notice_types ) ? $notice_type : 'notice';
1728
-
1729
- if ( ! $key || ! $message )
1730
- return;
1731
-
1732
- $notices = get_transient( 'iubenda_dashboard_notices' );
1733
- $delay = MINUTE_IN_SECONDS * 2;
1734
-
1735
- // Check notice type is exist before checking the key
1736
- if ( empty( $notices ) || ( isset( $notices[ $notice_type ] ) && ! array_key_exists( $key, $notices[ $notice_type ] ) ) ) {
1737
- $notices[$notice_type][$key] = $message;
1738
-
1739
- set_transient( 'iubenda_dashboard_notices', $notices, $delay );
1740
- }
1741
- }
1742
-
1743
- /**
1744
- * Display admin notices.
1745
- *
1746
- * @return mixed
1747
- */
1748
- public function print_notices() {
1749
- $notices = get_transient( 'iubenda_dashboard_notices' );
1750
- $notices_array = array();
1751
-
1752
- foreach ( $this->notice_types as $notice_type ) {
1753
- if ( $this->notice_count( $notices, $notice_type ) > 0 ) {
1754
- echo '<div class="notice notice-' . ( $notice_type === 'notice' ? 'info' : $notice_type ) . ' below-h2 is-dismissible">';
1755
-
1756
- foreach ( $notices[$notice_type] as $key => $notice ) {
1757
- echo '<p><strong>' . wp_kses_post( $notice ) . '</strong></p>';
1758
- }
1759
-
1760
- echo '<button type="button" class="notice-dismiss"><span class="screen-reader-text">' . __( 'Dismiss this notice.' ) . '</span></button>';
1761
 
1762
- echo '</div>';
1763
- }
1764
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1765
 
1766
- delete_transient( 'iubenda_dashboard_notices' );
1767
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1768
 
1769
- /**
1770
- * Count notices function.
1771
- *
1772
- * @param string $notice_type
1773
- * @return int
1774
- */
1775
- public function notice_count( $all_notices = array(), $notice_type = '' ) {
1776
- $notice_count = 0;
1777
-
1778
- if ( isset( $all_notices[$notice_type] ) ) {
1779
- $notice_count = absint( sizeof( $all_notices[$notice_type] ) );
1780
- } elseif ( empty( $notice_type ) ) {
1781
- foreach ( $all_notices as $notices ) {
1782
- $notice_count += absint( sizeof( $all_notices ) );
1783
- }
1784
- }
1785
 
1786
- return $notice_count;
1787
- }
 
 
1788
 
1789
- /**
1790
- * Adjust highlighted menu.
1791
- *
1792
- * @param type $file
1793
- * @return type
1794
- */
1795
- public function submenu_file( $submenu_file, $parent_file ) {
1796
- global $menu, $submenu;
1797
 
1798
- if ( $parent_file == 'iubenda' ) {
1799
- $tab_key = ! empty( $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : 'cs';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1800
 
1801
- if ( $tab_key == 'cons' ) {
1802
- $submenu_file = 'admin.php?page=iubenda&tab=cons';
1803
- $submenu['iubenda'][1][2] = 'admin.php?page=iubenda&tab=cons';
1804
- }
1805
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1806
 
1807
- return $submenu_file;
1808
- }
1809
 
1810
- /**
1811
- * Sanitize array helper function.
1812
- *
1813
- * @param array $array
1814
- * @return array
1815
- */
1816
- public function array_map_callback( $array ) {
1817
- if ( ! is_array( $array ) )
1818
- return array();
1819
 
1820
- return array_map( 'esc_attr', $array );
1821
- }
 
 
1822
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1823
  }
9
  * @class Post_Views_Counter_Settings
10
  */
11
  class iubenda_Settings {
12
+ const IUB_QG_Response = 'iubenda_quick_generator_response';
13
+ const IUB_NOTIFICATIONS = 'iubenda_notifications';
14
+ public $tabs = [];
15
  public $action = '';
16
+ public $links = [];
17
+ public $notice_types = ['error', 'success', 'notice'];
18
+ public $subject_fields = [];
19
+ public $quick_generator = [];
20
+ public $services = [];
21
+
22
 
23
  public function __construct() {
24
+ if(iub_array_get($_GET, 'page') == 'iubenda'){
25
+ add_action('admin_head', array( $this, 'iubdena_hide_notices_wp' ));
26
+ }
27
+
28
  // actions
29
  add_action( 'after_setup_theme', array( $this, 'load_defaults' ) );
 
30
  add_action( 'admin_init', array( $this, 'update_plugin' ), 9 );
 
 
 
31
  add_action( 'admin_menu', array( $this, 'admin_menu_options' ) );
32
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
33
+ add_action( 'admin_print_styles', array( $this, 'admin_print_styles' ) );
34
+ add_action( 'admin_init', array( $this, 'process_actions' ), 20 );
35
+ add_action( 'admin_init', array( $this, 'maybe_show_notice' ) );
36
+ add_action( 'wp_ajax_iubenda_dismiss_notice', array( $this, 'dismiss_notice' ) );
37
+ add_action( 'wp_ajax_iubenda_dismiss_notification_alert', array( $this,
38
+ 'dismiss_notification_alert'
39
+ ) );
40
+
41
+ add_action( 'wp_ajax_update_options', array($this, 'update_options'));
42
+
43
+ add_action( 'wp_ajax_quick_generator_api', array(new QuickGeneratorService(), 'quick_generator_api'));
44
+ add_action( 'wp_ajax_integrate_setup', array(new QuickGeneratorService(), 'integrate_setup'));
45
+ add_action( 'wp_ajax_cs_configuration', array(new QuickGeneratorService(), 'cs_configuration')); //todo - not in the right place
46
+ add_action( 'wp_ajax_pp_configuration', array(new QuickGeneratorService(), 'pp_configuration')); //todo - not in the right place
47
+ add_action( 'wp_ajax_tc_configuration', array(new QuickGeneratorService(), 'tc_configuration')); //todo - not in the right place
48
+ add_action( 'wp_ajax_cons_configuration', array(new QuickGeneratorService(), 'cons_configuration')); //todo - not in the right place
49
+ add_action( 'wp_ajax_toggle_services', array($this, 'toggle_services'));
50
+ add_action( 'wp_ajax_save_public_api_key', array(new QuickGeneratorService(), 'save_public_api_key')); //todo - not in the right place
51
+ add_action( 'wp_ajax_auto_detect_forms', array(new QuickGeneratorService(), 'auto_detect_forms')); //todo - not in the right place
52
+
53
+ add_action( 'wp_ajax_ajax_save_options', array(new QuickGeneratorService(), 'ajax_save_options'));
54
+
55
+ add_action('wp_ajax_radar_percentage_reload', array(new RadarService(), 'ask_radar_to_send_request')); //todo - not in the right place
56
+
57
+ // Getting main div in frontpage with updated data
58
+ add_action( 'wp_ajax_frontpage_main_box', [$this, 'get_frontpage_main_box']);
59
+
60
+ register_setting( 'iubenda_consent_solution_forms', 'status' );
61
+
62
+ register_setting( 'iubenda_consent_solution', 'iubenda_consent_forms' );
63
+ add_shortcode( 'iub-tc-button', array( new QuickGeneratorService(), 'tc_button_shortcode' ) );
64
+ add_shortcode( 'iub-pp-button', array( new QuickGeneratorService(), 'pp_button_shortcode' ) );
65
+
66
  }
67
 
68
  /**
69
  * Load default settings.
70
  */
71
  public function load_defaults() {
72
+ $this->services = $this->services_option();
73
+
74
+ $this->subject_fields = array(
75
  'id' => __( 'string', 'iubenda' ),
76
  'email' => __( 'string', 'iubenda' ),
77
  'first_name' => __( 'string', 'iubenda' ),
109
  4 => __( 'Analytics', 'iubenda' ),
110
  5 => __( 'Targeting & Advertising', 'iubenda' )
111
  );
112
+ $siteId = iub_array_get(iubenda()->options['global_options'], 'site_id');
113
+
114
+ $QG_Response = (new QuickGeneratorService())->QG_Response;
115
 
116
  $links = array(
117
  'en' => array(
118
  'iab' => 'https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework',
119
+ 'enable_iab' => 'https://www.iubenda.com/en/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
120
+ 'guide' => 'https://www.iubenda.com/en/cookie-solution',
121
  'plugin_page' => 'https://www.iubenda.com/en/help/posts/1215',
 
122
  'support_forum' => 'https://support.iubenda.com/support/home',
123
+ 'documentation' => 'https://www.iubenda.com/en/help/posts/1215',
124
+ 'how_generate_tc' => 'https://www.iubenda.com/en/help/19461',
125
+ 'how_generate_cs' => 'https://www.iubenda.com/en/help/1177',
126
+ 'how_generate_pp' => 'https://www.iubenda.com/en/help/463-generate-privacy-policy',
127
+ 'how_generate_cons' => 'https://www.iubenda.com/en/help/6473-consent-solution-js-documentation#generate-embed',
128
+ 'about_pp' => 'https://www.iubenda.com/en/privacy-and-cookie-policy-generator',
129
+ 'about_cs' => 'https://www.iubenda.com/en/cookie-solution',
130
+ 'about_tc' => 'https://www.iubenda.com/en/terms-and-conditions-generator',
131
+ 'flow_page' => "https://www.iubenda.com/en/flow/{$siteId}",
132
+ 'about_cons' => 'https://www.iubenda.com/en/consent-solution',
133
+ 'amp_support' => 'https://www.iubenda.com/en/help/22135-cookie-solution-amp-wordpress#amp-domain',
134
+ 'enable_amp_support' => 'https://www.iubenda.com/en/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
135
+ 'wordpress_support' => 'https://www.iubenda.com/en/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
136
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.en.edit_url', '') ?? '',
137
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.en.setup_url', '') ?? '',
138
+ 'automatic_block_scripts' => 'https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
139
+ 'how_cs_rate' => 'https://www.iubenda.com/en/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
140
+ 'how_cons_rate' => 'https://www.iubenda.com/en/help/3081-prior-blocking-of-cookie-scripts#wordpress',
141
+ 'how_pp_rate' => 'https://www.iubenda.com/en/help/6187-what-should-be-in-a-privacy-policy',
142
+ 'how_tc_rate' => 'https://www.iubenda.com/en/help/19482-what-should-basic-terms-and-conditions-include',
143
+ 'user_account' => 'https://www.iubenda.com/en/account',
144
+ 'amp_permission_support' => 'https://www.iubenda.com/en/help/1215#amp-permissions'
145
  ),
146
+ 'it' => array(
147
+ 'iab' => 'https://www.iubenda.com/it/help/7440-enable-preference-management-iab-framework',
148
+ 'enable_iab' => 'https://www.iubenda.com/it/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
149
+ 'guide' => 'https://www.iubenda.com/it/cookie-solution',
150
+ 'plugin_page' => 'https://www.iubenda.com/it/help/posts/810',
151
+ 'support_forum' => 'https://support.iubenda.com/support/home',
152
+ 'documentation' => 'https://www.iubenda.com/it/help/posts/810',
153
+ 'how_generate_tc' => 'https://www.iubenda.com/it/help/19394',
154
+ 'how_generate_cs' => 'https://www.iubenda.com/it/help/680',
155
+ 'how_generate_pp' => 'https://www.iubenda.com/it/help/463-generate-privacy-policy',
156
+ 'how_generate_cons' => 'https://www.iubenda.com/it/help/6473-consent-solution-js-documentation#generate-embed',
157
+ 'about_pp' => 'https://www.iubenda.com/it/privacy-and-cookie-policy-generator',
158
+ 'about_cs' => 'https://www.iubenda.com/it/cookie-solution',
159
+ 'about_tc' => 'https://www.iubenda.com/it/terms-and-conditions-generator',
160
+ 'flow_page' => "https://www.iubenda.com/it/flow/{$siteId}",
161
+ 'about_cons' => 'https://www.iubenda.com/it/consent-solution',
162
+ 'amp_support' => 'https://www.iubenda.com/it/help/22135-cookie-solution-amp-wordpress#amp-domain',
163
+ 'enable_amp_support' => 'https://www.iubenda.com/it/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
164
+ 'wordpress_support' => 'https://www.iubenda.com/it/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
165
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.it.edit_url', '') ?? '',
166
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.it.setup_url', '') ?? '',
167
+ 'automatic_block_scripts' => 'https://www.iubenda.com/it/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
168
+ 'how_cs_rate' => 'https://www.iubenda.com/it/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
169
+ 'how_cons_rate' => 'https://www.iubenda.com/it/help/3081-prior-blocking-of-cookie-scripts#wordpress',
170
+ 'how_pp_rate' => 'https://www.iubenda.com/it/help/6187-what-should-be-in-a-privacy-policy',
171
+ 'how_tc_rate' => 'https://www.iubenda.com/it/help/19482-what-should-basic-terms-and-conditions-include',
172
+ 'user_account' => 'https://www.iubenda.com/it/account',
173
+ 'amp_permission_support' => 'https://www.iubenda.com/it/help/1215#amp-permissions'
174
+ ),
175
+ 'de' => array(
176
+ 'iab' => 'https://www.iubenda.com/de/help/7440-enable-preference-management-iab-framework',
177
+ 'enable_iab' => 'https://www.iubenda.com/de/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
178
+ 'guide' => 'https://www.iubenda.com/de/cookie-solution',
179
+ 'plugin_page' => 'https://www.iubenda.com/de/help/posts/810',
180
+ 'support_forum' => 'https://support.iubenda.com/support/home',
181
+ 'documentation' => 'https://www.iubenda.com/de/help/posts/810',
182
+ 'how_generate_tc' => 'https://www.iubenda.com/de/help/19394',
183
+ 'how_generate_cs' => 'https://www.iubenda.com/de/help/680',
184
+ 'how_generate_pp' => 'https://www.iubenda.com/de/help/463-generate-privacy-policy',
185
+ 'how_generate_cons' => 'https://www.iubenda.com/de/help/6473-consent-solution-js-documentation#generate-embed',
186
+ 'about_pp' => 'https://www.iubenda.com/de/privacy-and-cookie-policy-generator',
187
+ 'about_cs' => 'https://www.iubenda.com/de/cookie-solution',
188
+ 'about_tc' => 'https://www.iubenda.com/de/terms-and-conditions-generator',
189
+ 'flow_page' => "https://www.iubenda.com/de/flow/{$siteId}",
190
+ 'about_cons' => 'https://www.iubenda.com/de/consent-solution',
191
+ 'amp_support' => 'https://www.iubenda.com/de/help/22135-cookie-solution-amp-wordpress#amp-domain',
192
+ 'enable_amp_support' => 'https://www.iubenda.com/de/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
193
+ 'wordpress_support' => 'https://www.iubenda.com/de/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
194
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.de.edit_url', '') ?? '',
195
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.de.setup_url', '') ?? '',
196
+ 'automatic_block_scripts' => 'https://www.iubenda.com/de/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
197
+ 'how_cs_rate' => 'https://www.iubenda.com/de/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
198
+ 'how_cons_rate' => 'https://www.iubenda.com/de/help/3081-prior-blocking-of-cookie-scripts#wordpress',
199
+ 'how_pp_rate' => 'https://www.iubenda.com/de/help/6187-what-should-be-in-a-privacy-policy',
200
+ 'how_tc_rate' => 'https://www.iubenda.com/de/help/19482-what-should-basic-terms-and-conditions-include',
201
+ 'user_account' => 'https://www.iubenda.com/de/account',
202
+ 'amp_permission_support' => 'https://www.iubenda.com/de/help/1215#amp-permissions'
203
+ ),
204
+ 'es' => array(
205
+ 'iab' => 'https://www.iubenda.com/es/help/7440-enable-preference-management-iab-framework',
206
+ 'enable_iab' => 'https://www.iubenda.com/es/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
207
+ 'guide' => 'https://www.iubenda.com/es/cookie-solution',
208
+ 'plugin_page' => 'https://www.iubenda.com/es/help/posts/810',
209
+ 'support_forum' => 'https://support.iubenda.com/support/home',
210
+ 'documentation' => 'https://www.iubenda.com/es/help/posts/810',
211
+ 'how_generate_tc' => 'https://www.iubenda.com/es/help/19394',
212
+ 'how_generate_cs' => 'https://www.iubenda.com/es/help/680',
213
+ 'how_generate_pp' => 'https://www.iubenda.com/es/help/463-generate-privacy-policy',
214
+ 'how_generate_cons' => 'https://www.iubenda.com/es/help/6473-consent-solution-js-documentation#generate-embed',
215
+ 'about_pp' => 'https://www.iubenda.com/es/privacy-and-cookie-policy-generator',
216
+ 'about_cs' => 'https://www.iubenda.com/es/cookie-solution',
217
+ 'about_tc' => 'https://www.iubenda.com/es/terms-and-conditions-generator',
218
+ 'flow_page' => "https://www.iubenda.com/es/flow/{$siteId}",
219
+ 'about_cons' => 'https://www.iubenda.com/es/consent-solution',
220
+ 'amp_support' => 'https://www.iubenda.com/es/help/22135-cookie-solution-amp-wordpress#amp-domain',
221
+ 'enable_amp_support' => 'https://www.iubenda.com/es/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
222
+ 'wordpress_support' => 'https://www.iubenda.com/es/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
223
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.es.edit_url', '') ?? '',
224
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.es.setup_url', '') ?? '',
225
+ 'automatic_block_scripts' => 'https://www.iubenda.com/es/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
226
+ 'how_cs_rate' => 'https://www.iubenda.com/es/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
227
+ 'how_cons_rate' => 'https://www.iubenda.com/es/help/3081-prior-blocking-of-cookie-scripts#wordpress',
228
+ 'how_pp_rate' => 'https://www.iubenda.com/es/help/6187-what-should-be-in-a-privacy-policy',
229
+ 'how_tc_rate' => 'https://www.iubenda.com/es/help/19482-what-should-basic-terms-and-conditions-include',
230
+ 'user_account' => 'https://www.iubenda.com/es/account',
231
+ 'amp_permission_support' => 'https://www.iubenda.com/es/help/1215#amp-permissions'
232
+ ),
233
+ 'fr' => array(
234
+ 'iab' => 'https://www.iubenda.com/fr/help/7440-enable-preference-management-iab-framework',
235
+ 'enable_iab' => 'https://www.iubenda.com/fr/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
236
+ 'guide' => 'https://www.iubenda.com/fr/cookie-solution',
237
+ 'plugin_page' => 'https://www.iubenda.com/fr/help/posts/810',
238
+ 'support_forum' => 'https://support.iubenda.com/support/home',
239
+ 'documentation' => 'https://www.iubenda.com/fr/help/posts/810',
240
+ 'how_generate_tc' => 'https://www.iubenda.com/fr/help/19394',
241
+ 'how_generate_cs' => 'https://www.iubenda.com/fr/help/680',
242
+ 'how_generate_pp' => 'https://www.iubenda.com/fr/help/463-generate-privacy-policy',
243
+ 'how_generate_cons' => 'https://www.iubenda.com/fr/help/6473-consent-solution-js-documentation#generate-embed',
244
+ 'about_pp' => 'https://www.iubenda.com/fr/privacy-and-cookie-policy-generator',
245
+ 'about_cs' => 'https://www.iubenda.com/fr/cookie-solution',
246
+ 'about_tc' => 'https://www.iubenda.com/fr/terms-and-conditions-generator',
247
+ 'flow_page' => "https://www.iubenda.com/fr/flow/{$siteId}",
248
+ 'about_cons' => 'https://www.iubenda.com/fr/consent-solution',
249
+ 'amp_support' => 'https://www.iubenda.com/fr/help/22135-cookie-solution-amp-wordpress#amp-domain',
250
+ 'enable_amp_support' => 'https://www.iubenda.com/fr/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
251
+ 'wordpress_support' => 'https://www.iubenda.com/fr/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
252
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.fr.edit_url', '') ?? '',
253
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.fr.setup_url', '') ?? '',
254
+ 'automatic_block_scripts' => 'https://www.iubenda.com/fr/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
255
+ 'how_cs_rate' => 'https://www.iubenda.com/fr/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
256
+ 'how_cons_rate' => 'https://www.iubenda.com/fr/help/3081-prior-blocking-of-cookie-scripts#wordpress',
257
+ 'how_pp_rate' => 'https://www.iubenda.com/fr/help/6187-what-should-be-in-a-privacy-policy',
258
+ 'how_tc_rate' => 'https://www.iubenda.com/fr/help/19482-what-should-basic-terms-and-conditions-include',
259
+ 'user_account' => 'https://www.iubenda.com/fr/account',
260
+ 'amp_permission_support' => 'https://www.iubenda.com/fr/help/1215#amp-permissions'
261
+ ),
262
+ 'pt-br' => array(
263
+ 'iab' => 'https://www.iubenda.com/pt-br/help/7440-enable-preference-management-iab-framework',
264
+ 'enable_iab' => 'https://www.iubenda.com/pt-br/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
265
+ 'guide' => 'https://www.iubenda.com/pt-br/cookie-solution',
266
+ 'plugin_page' => 'https://www.iubenda.com/pt-br/help/45342-cookie-solution-manual-de-instalacao-do-plugin-do-wordpress',
267
+ 'support_forum' => 'https://support.iubenda.com/support/home',
268
+ 'documentation' => 'https://www.iubenda.com/pt-br/help/45342-cookie-solution-manual-de-instalacao-do-plugin-do-wordpress',
269
+ 'how_generate_tc' => 'https://www.iubenda.com/pt-br/help/19394',
270
+ 'how_generate_cs' => 'https://www.iubenda.com/pt-br/help/680',
271
+ 'how_generate_pp' => 'https://www.iubenda.com/pt-br/help/463-generate-privacy-policy',
272
+ 'how_generate_cons' => 'https://www.iubenda.com/pt-br/help/6473-consent-solution-js-documentation#generate-embed',
273
+ 'about_pp' => 'https://www.iubenda.com/pt-br/privacy-and-cookie-policy-generator',
274
+ 'about_cs' => 'https://www.iubenda.com/pt-br/cookie-solution',
275
+ 'about_tc' => 'https://www.iubenda.com/pt-br/terms-and-conditions-generator',
276
+ 'flow_page' => "https://www.iubenda.com/pt-br/flow/{$siteId}",
277
+ 'about_cons' => 'https://www.iubenda.com/pt-br/consent-solution',
278
+ 'amp_support' => 'https://www.iubenda.com/pt-br/help/22135-cookie-solution-amp-wordpress#amp-domain',
279
+ 'enable_amp_support' => 'https://www.iubenda.com/pt-br/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
280
+ 'wordpress_support' => 'https://www.iubenda.com/pt-br/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
281
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.pt-br.edit_url', '') ?? '',
282
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.pt-br.setup_url', '') ?? '',
283
+ 'automatic_block_scripts' => 'https://www.iubenda.com/pt-br/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
284
+ 'how_cs_rate' => 'https://www.iubenda.com/pt-br/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
285
+ 'how_cons_rate' => 'https://www.iubenda.com/pt-br/help/3081-prior-blocking-of-cookie-scripts#wordpress',
286
+ 'how_pp_rate' => 'https://www.iubenda.com/pt-br/help/6187-what-should-be-in-a-privacy-policy',
287
+ 'how_tc_rate' => 'https://www.iubenda.com/pt-br/help/19482-what-should-basic-terms-and-conditions-include',
288
+ 'user_account' => 'https://www.iubenda.com/pt-br/account',
289
+ 'amp_permission_support' => 'https://www.iubenda.com/pt-br/help/1215#amp-permissions'
290
+ ),
291
+ 'nl' => array(
292
+ 'iab' => 'https://www.iubenda.com/nl/help/7440-enable-preference-management-iab-framework',
293
+ 'enable_iab' => 'https://www.iubenda.com/nl/help/7440-iab-framework-cmp#why-publishers-should-enable-the-transparency-and-consent-framework',
294
+ 'guide' => 'https://www.iubenda.com/nl/cookie-solution',
295
+ 'plugin_page' => 'https://www.iubenda.com/nl/help/posts/810',
296
+ 'support_forum' => 'https://support.iubenda.com/support/home',
297
+ 'documentation' => 'https://www.iubenda.com/nl/help/posts/810',
298
+ 'how_generate_tc' => 'https://www.iubenda.com/nl/help/19394',
299
+ 'how_generate_cs' => 'https://www.iubenda.com/nl/help/680',
300
+ 'how_generate_pp' => 'https://www.iubenda.com/nl/help/463-generate-privacy-policy',
301
+ 'how_generate_cons' => 'https://www.iubenda.com/nl/help/6473-consent-solution-js-documentation#generate-embed',
302
+ 'about_pp' => 'https://www.iubenda.com/nl/privacy-and-cookie-policy-generator',
303
+ 'about_cs' => 'https://www.iubenda.com/nl/cookie-solution',
304
+ 'about_tc' => 'https://www.iubenda.com/nl/terms-and-conditions-generator',
305
+ 'flow_page' => "https://www.iubenda.com/nl/flow/{$siteId}",
306
+ 'about_cons' => 'https://www.iubenda.com/nl/consent-solution',
307
+ 'amp_support' => 'https://www.iubenda.com/nl/help/22135-cookie-solution-amp-wordpress#amp-domain',
308
+ 'enable_amp_support' => 'https://www.iubenda.com/nl/help/22135-cookie-solution-amp-wordpress#step-2-enable-the-google-amp-support',
309
+ 'wordpress_support' => 'https://www.iubenda.com/nl/help/370-how-to-use-iubenda-privacy-and-cookie-policy-on-a-wordpress-website',
310
+ 'privacy_policy_generator_edit' => iub_array_get($QG_Response, 'privacy_policies.nl.edit_url', '') ?? '',
311
+ 'privacy_policy_generator_setup' => iub_array_get($QG_Response, 'privacy_policies.nl.setup_url', '') ?? '',
312
+ 'automatic_block_scripts' => 'https://www.iubenda.com/nl/help/1215-cookie-solution-wordpress-plugin-installation-guide#functionality',
313
+ 'how_cs_rate' => 'https://www.iubenda.com/nl/help/21985-cookie-banner-do-you-really-need-one-and-how-can-you-get-a-cookie-notice-for-your-website',
314
+ 'how_cons_rate' => 'https://www.iubenda.com/nl/help/3081-prior-blocking-of-cookie-scripts#wordpress',
315
+ 'how_pp_rate' => 'https://www.iubenda.com/nl/help/6187-what-should-be-in-a-privacy-policy',
316
+ 'how_tc_rate' => 'https://www.iubenda.com/nl/help/19482-what-should-basic-terms-and-conditions-include',
317
+ 'user_account' => 'https://www.iubenda.com/nl/account',
318
+ 'amp_permission_support' => 'https://www.iubenda.com/nl/help/1215#amp-permissions'
319
+ )
320
  );
321
 
322
+ foreach ($this->services as $name => $service) {
323
+ $this->services[$name]['status'] = iub_array_get(iubenda()->options, "activated_products.{$service['key']}", 'false');
324
+ }
325
+ $this->quick_generator = get_option(static::IUB_QG_Response) ?: [];
326
+
327
+ $user_profile_language = (new LanguageHelper())->get_user_profile_language_code(true);
328
 
329
  // assign links
330
+ $this->links = in_array( $user_profile_language, array_keys( $links ) ) ? $links[$user_profile_language] : $links['en'];
331
 
332
  // handle actions
333
  if ( ! empty( $_POST['save'] ) ) {
334
  // update item action
335
  $this->action = 'save';
336
  } else {
337
+ $this->action = isset( $_GET['action'] ) && -1 != $_GET['action'] ? esc_attr( $_GET['action'] ) : '';
338
+ $this->action = isset( $_GET['action2'] ) && -1 != $_GET['action2'] ? esc_attr( $_GET['action2'] ) : $this->action;
339
  }
340
  }
341
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  /**
343
  * Add submenu.
344
  *
355
  add_menu_page(
356
  'iubenda', 'iubenda', apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ), 'iubenda', array( $this, 'options_page' ), 'none'
357
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
  }
359
  }
360
 
361
+ private function check_site_is_already_made_setup() {
362
+ $result = array_filter(array_column($this->services, 'status'), function ($service) { return (stripos($service, 'false') === false); });
363
+
364
+ if ($result) {
365
+ return true;
366
+ }
367
+
368
+ // Check if the services are configured
369
+ $result = array_filter(array_column(iubenda()->options, 'configured'), function ($service) { return (stripos($service, 'false') === false); });
370
+
371
+ if ($result) {
372
+ return true;
373
+ }
374
+
375
+ return false;
376
+ }
377
+
378
+ /**
379
+ * Load admin options page.
380
+ *
381
+ * @return void
382
+ */
383
+ public function options_page() {
384
+ global $pagenow;
385
+
386
+ $show_products_page = $this->check_site_is_already_made_setup();
387
+
388
+ if ( ! current_user_can( apply_filters( 'iubenda_cookie_law_cap', 'manage_options' ) ) ) {
389
+ wp_die( __( "You don't have permission to access this page.", 'iubenda' ) );
390
+ }
391
+ $default = 'frontpage';
392
+
393
+ if($show_products_page){
394
+ $default = 'products-page';
395
+ }elseif(!empty((new QuickGeneratorService())->QG_Response)){
396
+ $default = 'integrate-setup';
397
+ }
398
+ $view = iub_array_get($_GET, 'view', $default);
399
+
400
+ switch ($view) {
401
+ case "plugin-settings":
402
+ $pageLabels = [['title' => __('Plugin settings', 'iubenda')]];
403
+ require_once IUBENDA_PLUGIN_PATH . 'views/plugin-settings.php';
404
+ break;
405
+ case "integrate-setup":
406
+ require_once IUBENDA_PLUGIN_PATH . 'views/integrate-setup.php';
407
+ break;
408
+ case 'products-page':
409
+ require_once IUBENDA_PLUGIN_PATH . 'views/products-page.php';
410
+ break;
411
+ case "tc-configuration":
412
+ $pageLabels = [['title' => __('Terms and condition', 'iubenda')]];
413
+ $key = 'tc';
414
+ $service = iub_array_get(iubenda()->settings->services, $key);
415
+ require_once IUBENDA_PLUGIN_PATH . 'views/tc-configuration.php';
416
+ break;
417
+ case "pp-configuration":
418
+ $pageLabels = [['title' => __('Privacy and Cookie Policy', 'iubenda')]];
419
+ $key = 'pp';
420
+ $service = iub_array_get(iubenda()->settings->services, $key);
421
+ require_once IUBENDA_PLUGIN_PATH . 'views/pp-configuration.php';
422
+ break;
423
+ case "cs-configuration":
424
+ $pageLabels = [['title' => __('Cookie Solution', 'iubenda')]];
425
+ $key = 'cs';
426
+ $service = iub_array_get(iubenda()->settings->services, $key);
427
+ require_once IUBENDA_PLUGIN_PATH . 'views/cs-configuration.php';
428
+ break;
429
+ case "cons-configuration":
430
+ $pageLabels = [['title' => __('Consent Solution', 'iubenda')]];
431
+ require_once IUBENDA_PLUGIN_PATH . 'views/cons-configuration.php';
432
+ break;
433
+ case "cons-form-edit":
434
+ $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
435
+ $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : false;
436
+
437
+ if ( ! $form ){
438
+ return;
439
+ }
440
+ $pageLabels = [
441
+ ['title' => __('Consent Solution', 'iubenda'), 'href' => add_query_arg( array( 'view' => 'cons-configuration' ), iubenda()->base_url )],
442
+ ['title' => $form->post_title]
443
+ ];
444
+ require_once IUBENDA_PLUGIN_PATH . 'views/cons-single-form.php';
445
+ break;
446
+ default:
447
+ if ($show_products_page) {
448
+ require_once IUBENDA_PLUGIN_PATH . 'views/products-page.php';
449
+ }
450
+ else {
451
+ require_once IUBENDA_PLUGIN_PATH . 'views/frontpage.php';
452
+ }
453
+ }
454
+ }
455
+
456
+ public function admin_enqueue_scripts($page) {
457
+ if ( ! in_array( $page, array( 'toplevel_page_iubenda', 'settings_page_iubenda' ) ) ){
458
+ wp_enqueue_style( 'iubenda-admin', IUBENDA_PLUGIN_URL . '/assets/css/admin.css' );
459
+ return;
460
+ }
461
+ wp_enqueue_style('iubenda-admin', IUBENDA_PLUGIN_URL . '/assets/css/style.css');
462
+ wp_enqueue_script('iubenda-admin', IUBENDA_PLUGIN_URL . '/assets/js/admin.js','','',true);
463
+
464
+ // Add analytics script to the plugin
465
+ wp_enqueue_script('iubenda-admin-matomo', IUBENDA_PLUGIN_URL . '/assets/js/matomo.js','','',true);
466
+
467
+ // Get radar api status
468
+ $iubendaRadarApiConfiguration = get_option('iubenda_radar_api_configuration', []) ?: [];
469
+
470
+ // Localize the script with new data
471
+ $iub_js_vars = [
472
+ 'site_url' => get_site_url(),
473
+ 'plugin_url' => IUBENDA_PLUGIN_URL,
474
+ 'site_language' => iubenda()->lang_current,
475
+ 'site_locale' => get_locale(),
476
+ 'radar_status' => iub_array_get($iubendaRadarApiConfiguration, 'status'),
477
+ 'form_id' => iub_array_get($_GET,'form_id', 0),
478
+ 'iub_dismiss_notification_alert_nonce' => wp_create_nonce( 'iub_dismiss_notification_alert_nonce' ),
479
+ ];
480
+
481
+ wp_localize_script( 'iubenda-admin', 'iub_js_vars', $iub_js_vars );
482
+ wp_register_script('iubenda-admin-tabs', IUBENDA_PLUGIN_URL . '/assets/js/tabs.js');
483
+ wp_enqueue_script('iubenda-admin-tabs', IUBENDA_PLUGIN_URL . '/assets/js/tabs.js', array(''), false, true);
484
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
485
 
486
  /**
487
  * Plugin options migration for versions < 1.14.0
497
 
498
  if ( $db_version != false ) {
499
  if ( version_compare( $db_version, '1.14.0', '<' ) ) {
500
+ $options = [];
501
 
502
  $old_new = array(
503
  'iubenda_parse' => 'parse',
504
  'skip_parsing' => 'skip_parsing',
505
  'iubenda_ctype' => 'ctype',
 
506
  'parser_engine' => 'parser_engine',
507
  'iubenda_output_feed' => 'output_feed',
508
  'iubenda-code-default' => 'code_default',
535
 
536
  add_option( 'iubenda_cookie_law_solution', $options, '', 'no' );
537
  add_option( 'iubenda_cookie_law_version', iubenda()->version, '', 'no' );
538
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
539
  }
540
+ }
541
+
542
+ public function update_options($data = []){
543
+ $data = $data ?: $_POST;
544
+
545
+ $products = [
546
+ 'iubenda_privacy_policy_solution' => 'pp',
547
+ 'iubenda_cookie_law_solution' => 'cs',
548
+ 'iubenda_terms_conditions_solution' => 'tc',
549
+ 'iubenda_consent_solution' => 'cons',
550
+ ];
551
+
552
+ $result = $this->init_prepare_product_options($products, $data);
553
+
554
+ // Validate whether the product (CS) is active or not
555
+ $iubenda_cookie_law_solution_status = iub_array_get($result, 'iubenda_activated_products.iubenda_cookie_law_solution', 'false') ?: 'false';
556
+ if($iubenda_cookie_law_solution_status != 'true'){
557
+ echo json_encode(['status' => 'error', 'responseText' => "( CS ) must be activated."]);
558
+ wp_die();
559
+ }
560
+
561
+ // validating Embed Codes of product contains at least one valid code if the product is activated
562
+ foreach (iub_array_get($result, 'iubenda_activated_products', []) ?: [] as $product_name => $product_status) {
563
+ if($product_status == 'false' || $product_name == 'iubenda_consent_solution'){
564
+ continue;
565
+ }
566
+
567
+ // Count valid codes per $product_name and return error if doesn't have at least 1 valid code
568
+ if(count(array_filter(iub_array_get($result, "codes_statues.{$product_name}_codes", []) ?: [])) == 0){
569
+ echo json_encode(['status' => 'error', 'responseText' => "( {$product_name} ) At least one code must be valid."]);
570
+ wp_die();
571
+ }
572
+ }
573
+
574
+ $this->save_init_prepared_product_options($products, $result);
575
+
576
+ $data = [
577
+ 'status' => 'done',
578
+ ];
579
+ echo json_encode($data);
580
+ wp_die();
581
+ }
582
+
583
+ public function toggle_services(){
584
+ $name = iub_array_get($_POST, 'name');
585
+ $status = iub_array_get($_POST, 'status');
586
+
587
+ if($status != 'true'){
588
+ $status = 'false';
589
+ }
590
+
591
+ $iubenda_activated_products = get_option( 'iubenda_activated_products');
592
+ $iubenda_activated_products[$name] = $status;
593
+
594
+ update_option( 'iubenda_activated_products', $iubenda_activated_products );
595
+
596
+ // Reload Options and activated products
597
+ iubenda()->options['activated_products'] = get_option( 'iubenda_activated_products', [] );
598
+ $this->load_defaults();
599
+
600
+ $data = ['status' => 'done', 'rating_percentage' => iubenda()->serviceRating->services_percentage()];
601
+ echo json_encode($data);
602
+ wp_die();
603
+ }
604
+
605
+ /**
606
+ * Process the bulk actions
607
+ *
608
+ * @return void
609
+ */
610
+ public function process_actions() {
611
+ global $pagenow;
612
+
613
+ $page = ! empty( $_POST['option_page'] ) ? esc_attr( $_POST['option_page'] ) : ( ! empty( $_GET['page'] ) ? esc_attr( $_GET['page'] ) : '' );
614
+ $id = isset( $_REQUEST['form_id'] ) ? ( is_array( $_REQUEST['form_id'] ) ? array_map( 'ansint', $_REQUEST['form_id'] ) : absint( $_REQUEST['form_id'] ) ) : false;
615
+ $view_key = ! empty( $_GET['view'] ) ? esc_attr( $_GET['view'] ) : null;
616
+
617
+ if ( ! $page )
618
+ return;
619
+
620
+ // get redirect url
621
+ if ( iubenda()->options['cs']['menu_position'] === 'submenu' && $pagenow === 'admin.php' ) {
622
+ // sub menu
623
+ $redirect_to = admin_url( 'options-general.php?page=iubenda&view=' . $view_key );
624
+ } else {
625
+ // top menu
626
+ $redirect_to = admin_url( 'admin.php?page=iubenda&view=' . $view_key );
627
+ }
628
+
629
+ // add comments cookie option notice
630
+ if ( $view_key == 'cons-configuration' && ! empty( iubenda()->options['cons']['public_api_key'] ) ) {
631
+ $cookies_enabled = get_option( 'show_comments_cookies_opt_in' );
632
+ if ( ! $cookies_enabled ) {
633
+ $this->add_notice( 'iub_comment_cookies_disabled', sprintf( __( 'Please enable comments cookies opt-in checkbox in the <a href="%s" target="_blank">Discussion settings</a>.', 'iubenda' ), esc_url( admin_url( 'options-discussion.php' ) ) ), 'notice' );
634
+ }
635
+ }
636
+
637
+ $result = null;
638
+
639
+ switch ( $this->action ) {
640
+ case 'autodetect' :
641
+ $result = iubenda()->forms->autodetect_forms();
642
+
643
+ // make sure it's current host location
644
+ wp_safe_redirect( $redirect_to );
645
+ exit;
646
+
647
+ break;
648
+
649
+ case 'save' :
650
+ if ( ! $id )
651
+ return;
652
+
653
+ $form = iubenda()->forms->get_form( $id );
654
+
655
+ if ( $form->ID != $id )
656
+ return;
657
+
658
+ $status = isset( $_POST['status'] ) && in_array( $_POST['status'], array_keys( iubenda()->forms->statuses ) ) ? esc_attr( $_POST['status'] ) : 'publish';
659
+ $subject = isset( $_POST['subject'] ) && is_array( $_POST['subject'] ) ? array_map( 'esc_attr', $_POST['subject'] ) : array();
660
+ $preferences = array();
661
+ $exclude = array();
662
+ $legal_notices = array();
663
+
664
+ $preferences_raw = isset( $_POST['preferences'] ) && is_array( $_POST['preferences'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['preferences'] ) : array();
665
+ $exclude_raw = isset( $_POST['exclude'] ) && is_array( $_POST['exclude'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['exclude'] ) : array();
666
+ $legal_notices_raw = isset( $_POST['legal_notices'] ) && is_array( $_POST['legal_notices'] ) ? array_map( array( $this, 'array_map_callback' ), $_POST['legal_notices'] ) : array();
667
+
668
+ // format preferences data
669
+ if ( ! empty( $preferences_raw ) && is_array( $preferences_raw ) ) {
670
+ foreach ( $preferences_raw as $index => $data ) {
671
+ if ( ! empty( $data['field'] ) && ( ! is_null( $data['value'] ) || ! "" == $data['value'] ) ) {
672
+ $preferences[ sanitize_key( $data['field'] ) ] = $data['value'];
673
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
674
  }
675
  }
676
 
677
+ // format exclude data
678
+ if ( ! empty( $exclude_raw ) && is_array( $exclude_raw ) ) {
679
+ foreach ( $exclude_raw as $index => $data ) {
680
+ if ( ! empty( $data['field'] ) )
681
+ $exclude[] = $data['field'];
682
+ }
683
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
684
 
685
+ // format legal notices data
686
+ if ( ! empty( $legal_notices_raw ) && is_array( $legal_notices_raw ) ) {
687
+ foreach ( $legal_notices_raw as $index => $data ) {
688
+ if ( ! empty( $data['field'] ) )
689
+ $legal_notices[] = $data['field'];
690
+ }
691
+ }
692
 
693
+ // form first save, update status to mapped automatically
694
+ if ( empty( $form->form_subject ) && empty( $form->form_preferences ) ) {
695
+ $status = 'mapped';
696
+ }
697
 
698
+ // echo '<pre>'; print_r( $_POST ); echo '</pre>'; exit;
699
+ $filtered_subjects = array_filter($subject, array(
700
+ $this,
701
+ 'is_not_empty'
702
+ ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
703
 
704
+ // bail if empty fields
705
+ if ( ! count( $filtered_subjects ) ) {
706
+ $this->add_notice( 'iub_form_fields_missing', __( 'Form saving failed. Please fill the Subject fields.', 'iubenda' ), 'error' );
707
+ return;
708
+ }
709
 
710
+ $args = array(
711
+ 'ID' => $form->ID,
712
+ 'status' => $status,
713
+ 'object_type' => $form->object_type,
714
+ 'object_id' => $form->object_id,
715
+ 'form_source' => $form->form_source,
716
+ 'form_title' => $form->post_title,
717
+ 'form_date' => $form->post_modified,
718
+ 'form_fields' => $form->form_fields,
719
+ 'form_subject' => $subject,
720
+ 'form_preferences' => $preferences,
721
+ 'form_exclude' => $exclude,
722
+ 'form_legal_notices' => $legal_notices
723
+ );
724
+
725
+ $result = iubenda()->forms->save_form( $args );
726
+
727
+ break;
728
+
729
+ case 'delete' :
730
+ if ( ! $id )
731
+ return;
732
+
733
+ $form = iubenda()->forms->get_form( $id );
734
+
735
+ if ( empty( $form ) )
736
+ return;
737
+
738
+ $result = iubenda()->forms->delete_form( $id );
739
+
740
+ // make sure it's current host location
741
+ wp_safe_redirect( $redirect_to );
742
+ exit;
743
+
744
+ break;
745
+
746
+ case 'disable_skip_parsing' :
747
+
748
+ // disable skip parsing option
749
+ $options = iubenda()->options['cs'];
750
+ $options['skip_parsing'] = false;
751
+
752
+ update_option( 'iubenda_cookie_law_solution', $options );
753
+
754
+ $this->add_notice( 'iub_settings_updated', __( 'Settings saved.', 'iubenda' ), 'success' );
755
+
756
+ // make sure it's current host location
757
+ wp_safe_redirect( $redirect_to );
758
+ exit;
759
+
760
+ break;
761
+
762
+ default :
763
+ return;
764
+ }
765
+
766
+ if ( ! empty ( $result ) ) {
767
+ //
768
+ } else {
769
+ //
770
+ }
771
+ }
772
+
773
+ /**
774
+ * Add admin notice.
775
+ *
776
+ * @param mixed $message
777
+ * @param string $notice_type
778
+ */
779
+ public function add_notice( $key, $message, $notice_type = 'notice' ) {
780
+ $key = ! empty( $key ) ? sanitize_key( $key ) : '';
781
+ $message = ! empty( $message ) ? wp_kses_post( $message ) : '';
782
+ $notice_type = ! empty( $notice_type ) && in_array( $notice_type, $this->notice_types ) ? $notice_type : 'notice';
783
+
784
+ if ( ! $key || ! $message )
785
+ return;
786
+
787
+ $notices = get_transient( 'iubenda_dashboard_notices' ) ?: [];
788
+ $delay = MINUTE_IN_SECONDS * 2;
789
+
790
+ // Check notice type is exist before checking the key
791
+ if ( empty( $notices ) || ( isset( $notices[ $notice_type ] ) && ! array_key_exists( $key, $notices[ $notice_type ] ) ) ) {
792
+ $notices[$notice_type][$key] = $message;
793
+
794
+ set_transient( 'iubenda_dashboard_notices', $notices, $delay );
795
+ }
796
+ }
797
+
798
+ /**
799
+ * Display admin notices.
800
+ *
801
+ * @return mixed
802
+ */
803
+ public function print_notices() {
804
+ $notices = get_transient( 'iubenda_dashboard_notices' );
805
+ foreach ( $this->notice_types as $notice_type ) {
806
+ if ( $this->notice_count( $notices, $notice_type ) > 0 ) {
807
+ require IUBENDA_PLUGIN_PATH . '/views/partials/alert.php';
808
+ }
809
+ }
810
+ delete_transient( 'iubenda_dashboard_notices' );
811
+ }
812
+
813
+ public function has_notices() {
814
+ $notices = get_transient( 'iubenda_dashboard_notices' );
815
+ foreach ( $this->notice_types as $notice_type ) {
816
+ if ( $this->notice_count( $notices, $notice_type ) > 0 ) {
817
+ return true;
818
+ }
819
+ }
820
+
821
+ return false;
822
+ }
823
+
824
+ /**
825
+ * Count notices function.
826
+ *
827
+ * @param string $notice_type
828
+ * @return int
829
+ */
830
+ public function notice_count( $all_notices = array(), $notice_type = '' ) {
831
+ $notice_count = 0;
832
+
833
+ if ( isset( $all_notices[$notice_type] ) ) {
834
+ $notice_count = absint( sizeof( $all_notices[$notice_type] ) );
835
+ } elseif ( empty( $notice_type ) ) {
836
+ foreach ( $all_notices as $notices ) {
837
+ $notice_count += absint( sizeof( $all_notices ) );
838
+ }
839
+ }
840
+
841
+ return $notice_count;
842
+ }
843
+
844
+ /**
845
+ * Perform show notice on plugin installation/upgrade.
846
+ *
847
+ * @return void
848
+ */
849
+ public function maybe_show_notice() {
850
+ if ( ! current_user_can( 'install_plugins' ) )
851
+ return;
852
+
853
+ $current_update = 10;
854
+ $activation = (array) get_option( 'iubenda_activation_data', iubenda()->activation );
855
+
856
+ // delete_option( 'iubenda_activation_data' );
857
+ // echo '<pre>'; print_r( $activation ); echo '</pre>'; exit;
858
+
859
+ // get current time
860
+ $current_time = time();
861
+
862
+ if ( $activation['update_version'] < $current_update ) {
863
+ // check version, if update ver is lower than plugin ver, set update notice to true
864
+ $activation = array_merge( $activation, array( 'update_version' => $current_update, 'update_notice' => true ) );
865
+
866
+ // set activation date if not set
867
+ if ( $activation['update_date'] == false )
868
+ $activation = array_merge( $activation, array( 'update_date' => $current_time ) );
869
+
870
+ update_option( 'iubenda_activation_data', $activation );
871
+ }
872
+
873
+ // display current version notice
874
+ if ( $activation['update_notice'] === true ) {
875
+ // include notice js, only if needed
876
+ add_action( 'admin_print_scripts', array( $this, 'admin_inline_js' ), 999 );
877
+
878
+ // get activation date
879
+ $activation_date = $activation['update_date'];
880
+
881
+ // set delay in seconds
882
+ $delay = WEEK_IN_SECONDS;
883
+
884
+ if ( (int) $activation['update_delay_date'] === 0 ) {
885
+ if ( $activation_date + $delay > $current_time )
886
+ $activation['update_delay_date'] = $activation_date + $delay;
887
+ else
888
+ $activation['update_delay_date'] = $current_time;
889
+
890
+ update_option( 'iubenda_activation_data', $activation );
891
+ }
892
+
893
+ if ( ( ! empty( $activation['update_delay_date'] ) ? (int) $activation['update_delay_date'] : $current_time ) <= $current_time ) {
894
+ // add notice
895
+ add_action( 'admin_notices', array( $this, 'show_notice' ) );
896
+ }
897
+ }
898
+
899
+ // Display notification to encourage user to verify his account
900
+ $notifications = get_option(iubenda_Settings::IUB_NOTIFICATIONS, []) ?: [];
901
+ if ( iub_array_get($notifications, 'iub_user_needs_to_verify_his_account') ) {
902
+ $url = 'javascript:void(0)';
903
+
904
+ if (!empty(iubenda()->settings->links['privacy_policy_generator_edit'])) {
905
+ $url = iubenda()->settings->links['privacy_policy_generator_edit'];
906
+ }elseif(iub_array_get(iubenda()->options['global_options'], 'site_id')){
907
+ $url = iubenda()->settings->links['user_account'];
908
+ }
909
+
910
+ iubenda()->settings->add_notice('iub_user_needs_to_verify_his_account', sprintf( __( 'To ensure regular scans and full support, <span class="text-bold">verify your account</span>. Check your mailbox now and validate your email address, or check <a href="%s" target="_blank" class="link-underline">your account</a> on iubenda.com. If you already did that, you can safely <a href="javascript:void(0)" class="notice-dismiss-by-text dismiss-notification-alert link-underline" data-dismiss-key="iub_user_needs_to_verify_his_account">dismiss this reminder</a>.', 'iubenda' ), $url ), 'error');
911
+ }
912
+ }
913
+
914
+ /**
915
+ * Display admin notices at iubenda settings.
916
+ */
917
+ public function show_notice() {
918
+ ?>
919
+ <div id="iubenda-rate" class="iubenda-notice notice is-dismissible">
920
+ <div>
921
+ <p class="step-1">
922
+ <span class="notice-question"><?php _e( 'Enjoying the iubenda Cookie & Consent Solution Plugin?', 'iubenda' ); ?></span>
923
+ <span class="notice-reply">
924
+ <a href="#" class="reply-yes"><?php _e( 'Yes', 'iubenda' ); ?></a>
925
+ <a href="#" class="reply-no"><?php _e( 'No', 'iubenda' ); ?></a>
926
+ </span>
927
+ </p>
928
+ <p class="step-2 step-yes">
929
+ <span class="notice-question"><?php _e( "Whew, what a relief!? We've worked countless hours to make this plugin as useful as possible - so we're pretty happy that you're enjoying it. While you here, would you mind leaving us a 5 star rating? It would really help us out.", 'iubenda' ); ?></span>
930
+ <span class="notice-reply">
931
+ <a href="https://wordpress.org/support/plugin/iubenda-cookie-law-solution/reviews/?filter=5" target="_blank" class="reply-yes"><?php _e( 'Sure!', 'iubenda' ); ?></a>
932
+ <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
933
+ </span>
934
+ </p>
935
+ <p class="step-2 step-no">
936
+ <span class="notice-question"><?php _e( "We're sorry to hear that. Would you mind giving us some feedback?", 'iubenda' ); ?></span>
937
+ <span class="notice-reply">
938
+ <a href="https://iubenda.typeform.com/to/BXuSMZ" target="_blank" class="reply-yes"><?php _e( 'Ok sure!', 'iubenda' ); ?></a>
939
+ <a href="javascript:void(0)" class="reply-no"><?php _e( 'No thanks', 'iubenda' ); ?></a>
940
+ </span>
941
+ </p>
942
+ </div>
943
+ </div>
944
+ <?php
945
+ }
946
+
947
+ /**
948
+ * Print admin scripts.
949
+ *
950
+ * @return void
951
+ */
952
+ public function admin_inline_js() {
953
+ if ( ! current_user_can( 'install_plugins' ) )
954
+ return;
955
+
956
+ $delay = MONTH_IN_SECONDS * 6;
957
+ ?>
958
+ <script type="text/javascript">
959
+ ( function ( $ ) {
960
+ $( document ).ready( function () {
961
+ // step 1
962
+ $( '.iubenda-notice .step-1 a' ).on( 'click', function ( e ) {
963
+ e.preventDefault();
964
+
965
+ $( '.iubenda-notice .step-1' ).slideUp( 'fast' );
966
+ $( '.iubenda-notice .step-1' ).hide( 'fast' );
967
+
968
+ if ( $( e.target ).hasClass( 'reply-yes' ) ) {
969
+ $( '.iubenda-notice .step-2.step-yes' ).show( 'fast' );
970
+ } else {
971
+ $( '.iubenda-notice .step-2.step-no' ).show( 'fast' );
972
+ };
973
+ } );
974
+ // step 2
975
+ $( '.iubenda-notice.is-dismissible' ).on( 'click', '.notice-dismiss, .step-2 a', function ( e ) {
976
+ // console.log( $( e ) );
977
+
978
+ var delay = <?php echo $delay; ?>;
979
+
980
+ if ( $( e.target ).hasClass( 'reply-yes' ) ) {
981
+ delay = 0;
982
+ }
983
+
984
+ $.post( ajaxurl, {
985
+ action: 'iubenda_dismiss_notice',
986
+ delay: delay,
987
+ url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
988
+ iubenda_nonce: '<?php echo wp_create_nonce( 'iubenda_dismiss_notice' ); ?>'
989
+ } );
990
+
991
+ $( e.delegateTarget ).slideUp( 'fast' );
992
+ } );
993
+ } );
994
+ } )( jQuery );
995
+ </script>
996
+ <?php
997
+ }
998
+
999
+ /**
1000
+ * Dismiss notice.
1001
+ *
1002
+ * @return void
1003
+ */
1004
+ public function dismiss_notice() {
1005
+ $result = false;
1006
+
1007
+ if ( ! current_user_can( 'install_plugins' ) )
1008
+ return $result;
1009
+
1010
+ $nonce = wp_verify_nonce( $_REQUEST['iubenda_nonce'], 'iubenda_dismiss_notice' );
1011
+
1012
+ if ( $nonce ) {
1013
+ $delay = ! empty( $_REQUEST['delay'] ) ? absint( $_REQUEST['delay'] ) : 0;
1014
+ $activation = (array) get_option( 'iubenda_activation_data', iubenda()->activation );
1015
+
1016
+ // delay notice
1017
+ if ( $delay > 0 ) {
1018
+ $activation = array_merge( $activation, array( 'update_delay_date' => time() + $delay ) );
1019
+ // hide notice permanently
1020
+ } else {
1021
+ $activation = array_merge( $activation, array( 'update_delay_date' => 0, 'update_notice' => false ) );
1022
+ }
1023
+
1024
+ // update activation options
1025
+ $result = update_option( 'iubenda_activation_data', $activation );
1026
+ }
1027
+
1028
+ echo json_encode( $result );
1029
+ exit;
1030
+ }
1031
+
1032
+ /**
1033
+ * Dismiss alerts inside iubenda plugin.
1034
+ *
1035
+ * @return void
1036
+ */
1037
+ public function dismiss_notification_alert() {
1038
+ $result = false;
1039
+
1040
+ if ( ! current_user_can( 'install_plugins' ) )
1041
+ return $result;
1042
+
1043
+ $nonce = wp_verify_nonce( $_REQUEST['iubenda_nonce'], 'iub_dismiss_notification_alert_nonce' );
1044
+
1045
+ if ( $nonce ) {
1046
+ $dismiss_key = $_REQUEST['dismiss_key'] ?: '';
1047
+
1048
+ // Dismiss alert Encourage users to validate their account
1049
+ if(iub_array_get(get_option(iubenda_Settings::IUB_NOTIFICATIONS, []) ?: [], $dismiss_key) === true){
1050
+ $iub_notifications = get_option(iubenda_Settings::IUB_NOTIFICATIONS, []) ?: [];
1051
+ $iub_notifications[$dismiss_key] = false;
1052
+ $result = update_option(iubenda_Settings::IUB_NOTIFICATIONS, $iub_notifications);
1053
+
1054
+ $notices = get_transient( 'iubenda_dashboard_notices' );
1055
+ if(iub_array_get($notices, "error.{$dismiss_key}") ?: null){
1056
+ unset($notices['error'][$dismiss_key]);
1057
+ }
1058
+ set_transient( 'iubenda_dashboard_notices' , $notices);
1059
+
1060
+ echo json_encode( $result );
1061
+ exit;
1062
+ }
1063
+ }
1064
+
1065
+ echo json_encode( $result );
1066
+ exit;
1067
+ }
1068
+
1069
+ /**
1070
+ * Sanitize array helper function.
1071
+ *
1072
+ * @param array $array
1073
+ * @return array
1074
+ */
1075
+ public function array_map_callback( $array ) {
1076
+ if ( ! is_array( $array ) )
1077
+ return array();
1078
+
1079
+ return array_map( 'esc_attr', $array );
1080
+ }
1081
+
1082
+ /**
1083
+ * Check the value is not empty and check it contains any value even 0
1084
+ *
1085
+ * @param $value
1086
+ * @return bool
1087
+ */
1088
+ private function is_not_empty($value) {
1089
+ if(is_null($value) || '' === $value){
1090
+ return false;
1091
+ }
1092
+
1093
+ return true;
1094
+ }
1095
+
1096
+ /**
1097
+ * Load admin style inline, for menu icon only.
1098
+ *
1099
+ * @return mixed
1100
+ */
1101
+ public function admin_print_styles() {
1102
+ echo '
1103
+ <style>
1104
+ a.toplevel_page_iubenda .wp-menu-image {
1105
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAyMzIgNTAzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS40MTQyMTsiPiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDEzNi4yNDcsMjY4LjgzMSkiPiAgICAgICAgPHBhdGggZD0iTTAsLTM1LjgxTC0zNi4zLDAuNDg5TC0zNi4zLDE0MC45NzhMMCwxNDAuOTc4TDAsLTM1LjgxWk0tMjAuOTM4LC0xMjkuODAyQy02LjI4NywtMTI5LjgwMiA1LjU4NywtMTQxLjU2NSA1LjU4NywtMTU2LjA2QzUuNTg3LC0xNzAuNTU2IC02LjI4NywtMTgyLjMwOCAtMjAuOTM4LC0xODIuMzA4Qy0zNS42LC0xODIuMzA4IC00Ny40NzQsLTE3MC41NTYgLTQ3LjQ3NCwtMTU2LjA2Qy00Ny40NzQsLTE0MS41NjUgLTM1LjYsLTEyOS44MDIgLTIwLjkzOCwtMTI5LjgwMk04OS4zNiwtMTU0LjQxNkM4OS4zNiwtMTI3LjgyNSA3OS41NzUsLTEwMy40OTkgNjMuMjY5LC04NC42NzJMODYuNjk0LDIyNi42MjhMLTEyMi43MjgsMjI2LjYyOEwtMTAwLjAyNCwtNzkuMjI5Qy0xMTkuMzUxLC05OC42NjggLTEzMS4yNDcsLTEyNS4xNTkgLTEzMS4yNDcsLTE1NC40MTZDLTEzMS4yNDcsLTIxNC4wODYgLTgxLjg3NCwtMjYyLjQzOCAtMjAuOTM4LC0yNjIuNDM4QzM5Ljk5OSwtMjYyLjQzOCA4OS4zNiwtMjE0LjA4NiA4OS4zNiwtMTU0LjQxNiIgc3R5bGU9ImZpbGw6d2hpdGU7ZmlsbC1ydWxlOm5vbnplcm87Ii8+ICAgIDwvZz48L3N2Zz4=);
1106
+ background-position: center center;
1107
+ background-repeat: no-repeat;
1108
+ background-size: 7px auto;
1109
  }
1110
+ </style>
1111
+ ';
1112
+ }
1113
+
1114
+ private function services_option() {
1115
+ $cs_settings = [];
1116
+ if(iub_array_get(iubenda()->options['cs'], 'configuration_type') == 'simplified'){
1117
+ $legislation = iub_array_get(iubenda()->options['cs'], 'simplified.legislation') == 'both' ? 'GDPR/CCPA' : strtoupper(iub_array_get(iubenda()->options['cs'], 'simplified.legislation'));
1118
+ $cs_settings = [
1119
+ ['label' => __('Style', 'iubenda'), 'value' => ucwords(iub_array_get(iubenda()->options['cs'], 'simplified.banner_style'))],
1120
+ ['label' => __('Position', 'iubenda'), 'value' => ucwords(iub_array_get(iubenda()->options['cs'], 'simplified.position'))],
1121
+ ['label' => __('legislation', 'iubenda'), 'value' => $legislation],
1122
+ ];
1123
+ }else{
1124
+ $languages = (new ProductHelper())->get_languages();
1125
+ foreach ($languages as $k => $v) {
1126
+ $code = iub_array_get(iubenda()->options['cs'], "code_{$k}");
1127
+ if($code){
1128
+ $banner = iubenda()->parse_configuration($code, ['mode' => 'banner']);
1129
+ $options = iubenda()->parse_configuration($code);
1130
+
1131
+ $style = iub_array_get($banner, 'backgroundColor') ? 'White' : 'Dark';
1132
+ if(iub_array_get($options, 'enableGdpr') === null && iub_array_get($options, 'ccpaApplies') == 1){
1133
+ $legislation = 'GDPR/CCPA';
1134
+ }elseif(iub_array_get($options, 'enableGdpr') === null){
1135
+ $legislation = 'GDPR';
1136
+ }else{
1137
+ $legislation = 'CCPA';
1138
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1139
 
1140
+ $cs_settings = [
1141
+ ['label' => __('Style', 'iubenda'), 'value' => $style],
1142
+ ['label' => __('Position', 'iubenda'), 'value' => ucwords(iub_array_get($banner, 'position', 'full-top'))],
1143
+ ['label' => __('legislation', 'iubenda'), 'value' => $legislation],
1144
+ ];
1145
+ break;
1146
+ }
1147
+ }
1148
+ }
1149
+
1150
+
1151
+ return [
1152
+ 'pp' => [
1153
+ 'status' => false,
1154
+ 'configured' => iub_array_get(iubenda()->options['pp'], 'configured'),
1155
+ 'label' => __('Privacy and Cookie Policy', 'iubenda'),
1156
+ 'name' => 'privacy_policy',
1157
+ 'key' => 'iubenda_privacy_policy_solution',
1158
+ 'settings' => [
1159
+ ['label' => __('Version', 'iubenda'), 'value' => iub_array_get(iubenda()->options['pp'], 'version')],
1160
+ ['label' => __('Style', 'iubenda'), 'value' => iub_array_get(iubenda()->options['pp'], 'button_style')],
1161
+ ['label' => __('Position', 'iubenda'), 'value' => iub_array_get(iubenda()->options['pp'], 'button_position')]
1162
+ ]
1163
+ ],
1164
+ 'cs' => [
1165
+ 'status' => false,
1166
+ 'configured' => iub_array_get(iubenda()->options['cs'], 'configured'),
1167
+ 'label' => __('Cookie Solution', 'iubenda'),
1168
+ 'name' => 'cookie_law',
1169
+ 'key' => 'iubenda_cookie_law_solution',
1170
+ 'settings' => $cs_settings
1171
+ ],
1172
+ 'tc' => [
1173
+ 'status' => false,
1174
+ 'configured' => iub_array_get(iubenda()->options['tc'], 'configured'),
1175
+ 'label' => __('Terms and Conditions', 'iubenda'),
1176
+ 'name' => 'terms_conditions',
1177
+ 'key' => 'iubenda_terms_conditions_solution',
1178
+ 'settings' => [
1179
+ ['label' => __('Version', 'iubenda'), 'value' => '1.5.0'],
1180
+ ['label' => __('Style', 'iubenda'), 'value' => iub_array_get(iubenda()->options['tc'], 'button_style')],
1181
+ ['label' => __('Position', 'iubenda'), 'value' => iub_array_get(iubenda()->options['tc'], 'button_position')]
1182
+ ]
1183
+ ],
1184
+ 'cons' => [
1185
+ 'status' => false,
1186
+ 'configured' => iub_array_get(iubenda()->options['cons'], 'configured'),
1187
+ 'label' => __('Consent Solution', 'iubenda'),
1188
+ 'name' => 'consent',
1189
+ 'key' => 'iubenda_consent_solution',
1190
+ ],
1191
+ ];
1192
+
1193
+ }
1194
+
1195
+ /**
1196
+ * Return error to appear alert modal
1197
+ * @param $index
1198
+ * @param $section
1199
+ */
1200
+ public function return_alert( $index ,$section) {
1201
+ $response = $index == 'code_default' ?: "($index)" ;
1202
+ echo json_encode(['status' => 'error', 'responseText' => "invalid script {$response}", 'focus' => "#{$index}-{$section}_tab" ]);
1203
+ wp_die();
1204
+ }
1205
+
1206
+ /**
1207
+ * Check embed code if empty or not valid
1208
+ * @param $index
1209
+ * @param $option
1210
+ * @param $section
1211
+ * @return bool
1212
+ */
1213
+ public function check_embed_code($index, $option, $section)
1214
+ {
1215
+ if(substr( $index, 0, 5 ) === "code_" && empty($option)){
1216
+ return false;
1217
+ }
1218
+
1219
+ if($section == 'iubenda_privacy_policy_solution' || $section == 'iubenda_terms_conditions_solution'){
1220
+ if(!iubenda()->parse_tc_pp_configuration(stripslashes_deep($option))){
1221
+ return false;
1222
+ }
1223
+ }
1224
+
1225
+ if($section == 'iubenda_cookie_law_solution' && substr( $index, 0, 5 ) === "code_"){
1226
+ return !empty($option);
1227
+ }
1228
+
1229
+ return true;
1230
+ }
1231
+
1232
+ /**
1233
+ * Getting main div in frontpage with updated data
1234
+ */
1235
+ public function get_frontpage_main_box()
1236
+ {
1237
+ require_once IUBENDA_PLUGIN_PATH . '/views/partials/frontpage_main_box.php';
1238
+ wp_die();
1239
+ }
1240
+
1241
+ /**
1242
+ * Hide all notices except iubenda notice
1243
+ */
1244
+ function iubdena_hide_notices_wp()
1245
+ {
1246
+ ?>
1247
+ <style>
1248
+ .error, .notice:not(.iubenda-notice) {
1249
+ display: none;
1250
+ }
1251
+ </style>
1252
+ <?php
1253
+ }
1254
+
1255
+ /**
1256
+ * @param $products
1257
+ * @param $data
1258
+ * @return array
1259
+ */
1260
+ public function init_prepare_product_options($products, $data)
1261
+ {
1262
+ $result = [];
1263
+
1264
+ foreach ($products as $product_name => $product_key) {
1265
+ $product_option = [];
1266
+
1267
+ if(iub_array_get($data, "{$product_name}_status") && iub_array_get($data, "{$product_name}_status") == 'true'){
1268
+ $result['iubenda_activated_products'][$product_name] = 'true';
1269
+ $product_option['configured'] = 'true';
1270
+
1271
+ // Check if product is CONS
1272
+ if ($product_key == 'cons') {
1273
+ // iubenda_consent_solution saving data
1274
+ if(iub_array_get($data, "{$product_name}.public_api_key") ?: null){
1275
+ $product_option = ['public_api_key' => iub_array_get($data, "{$product_name}.public_api_key")];
1276
+ }else{
1277
+ $result['iubenda_activated_products'][$product_name] = 'false';
1278
+ }
1279
+ }
1280
 
1281
+ // Check if product in ['PP', 'CS', 'TC'] to check and validate embed codes
1282
+ if (in_array($product_key, ['pp', 'cs', 'tc'])) {
1283
+ $languages = (new ProductHelper())->get_languages();
1284
+ foreach ( $languages as $lang_id => $lang_name ) {
1285
+ $code = iub_array_get($data, "{$product_name}.code_{$lang_id}");
1286
+
1287
+ //check if code is empty or code is invalid
1288
+ $result['codes_statues']["{$product_name}_codes"][] = $this->check_embed_code("code_{$lang_id}", $code , $product_name);
1289
+
1290
+ //get public_id & site_id if only the product key is CS and had a valid embed code
1291
+ if ($product_key == 'cs' && $parsed_code = iubenda()->parse_configuration(stripslashes_deep($code))) {
1292
+ //getting site id to save it into Iubenda global option
1293
+ if (iub_array_get($parsed_code, 'siteId') ?: null) {
1294
+ $result['site_id'] = iub_array_get($parsed_code, 'siteId');
1295
+ }
1296
+
1297
+ //getting public id to save it into Iubenda global option by lang
1298
+ if (iub_array_get($parsed_code, 'cookiePolicyId') ?: null) {
1299
+ $result['public_ids'][$lang_id] = iub_array_get($parsed_code, 'cookiePolicyId');
1300
+ }
1301
+ }
1302
+
1303
+ if (in_array($product_key, ['pp', 'tc'])) {
1304
+ $parsed_code = iubenda()->parse_tc_pp_configuration(stripslashes_deep($code));
1305
+
1306
+ //getting public id to save it into Iubenda global option lang
1307
+ if ($parsed_code) {
1308
+ $result['public_ids'][$lang_id] = iub_array_get($parsed_code, 'cookie_policy_id');
1309
+ $product_option['button_style'] = iub_array_get($parsed_code, 'button_style');
1310
+ }
1311
+
1312
+ //to make tc/pp button appear in footer by default
1313
+ $product_option['button_position'] = 'automatic';
1314
+
1315
+ // Add a widget in the sidebar
1316
+ iubenda()->assign_legal_block_or_widget();
1317
+ }
1318
+
1319
+ $product_option["code_{$lang_id}"] = stripslashes($code);
1320
+ $product_option["manual_code_{$lang_id}"] = stripslashes($code);
1321
+ }
1322
+ }
1323
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1324
 
1325
+ if (in_array($product_key, ['pp', 'tc'])) {
1326
+ // Add a widget in the sidebar if the button is positioned automatically
1327
+ iubenda()->assign_legal_block_or_widget();
1328
+ }
1329
 
1330
+ //add version if Iubenda privacy policy solution activated
1331
+ if ($product_key == 'pp') {
1332
+ $product_option["version"] = 'Manual';
1333
+ }
 
 
 
 
1334
 
1335
+ // Send options to save it
1336
+ $result['products_option'][$product_key] = $product_option;
1337
+ }else{
1338
+ $result['iubenda_activated_products'][$product_name] = 'false';
1339
+ }
1340
+ }
1341
+
1342
+ return $result;
1343
+ }
1344
+
1345
+
1346
+ /**
1347
+ * @param $products
1348
+ * @param $data
1349
+ * @return array
1350
+ */
1351
+ public function init_prepare_product_options_while_upgrading($products, $data)
1352
+ {
1353
+ $result = [];
1354
+
1355
+ foreach ($products as $product_name => $product_key) {
1356
+ $product_option = [];
1357
+
1358
+ if(iub_array_get($data, "{$product_name}_status") && iub_array_get($data, "{$product_name}_status") == 'true'){
1359
+ $result['iubenda_activated_products'][$product_name] = 'true';
1360
+ $product_option['configured'] = 'true';
1361
+
1362
+ // Check if product is CONS
1363
+ if ($product_key == 'cons') {
1364
+ // iubenda_consent_solution saving data
1365
+ if(iub_array_get($data, "{$product_name}.public_api_key") ?: null){
1366
+ $product_option = ['public_api_key' => iub_array_get($data, "{$product_name}.public_api_key")];
1367
+ }else{
1368
+ $result['iubenda_activated_products'][$product_name] = 'false';
1369
+ }
1370
+ }
1371
 
1372
+ // Check if product in ['PP', 'CS', 'TC'] to check and validate embed codes
1373
+ if (in_array($product_key, ['pp', 'cs', 'tc'])) {
1374
+ $languages = (new ProductHelper())->get_languages();
1375
+ foreach ( $languages as $lang_id => $lang_name ) {
1376
+ $code = iub_array_get($data, "{$product_name}.code_{$lang_id}");
1377
+
1378
+ //check if code is empty or code is invalid
1379
+ $result['codes_statues']["{$product_name}_codes"][] = !empty($code);
1380
+
1381
+ //get public_id & site_id if only the product key is CS and had a valid embed code
1382
+ if ($product_key == 'cs' && $parsed_code = iubenda()->parse_configuration(stripslashes_deep($code))) {
1383
+ //getting site id to save it into Iubenda global option
1384
+ if (iub_array_get($parsed_code, 'siteId') ?: null) {
1385
+ $result['site_id'] = iub_array_get($parsed_code, 'siteId');
1386
+ }
1387
+
1388
+ //getting public id to save it into Iubenda global option by lang
1389
+ if (iub_array_get($parsed_code, 'cookiePolicyId') ?: null) {
1390
+ $result['public_ids'][$lang_id] = iub_array_get($parsed_code, 'cookiePolicyId');
1391
+ }
1392
+ }
1393
+
1394
+ if (in_array($product_key, ['pp', 'tc'])) {
1395
+ $parsed_code = iubenda()->parse_tc_pp_configuration(stripslashes_deep($code));
1396
+
1397
+ //getting public id to save it into Iubenda global option lang
1398
+ if ($parsed_code) {
1399
+ $result['public_ids'][$lang_id] = iub_array_get($parsed_code, 'cookie_policy_id');
1400
+ $product_option['button_style'] = iub_array_get($parsed_code, 'button_style');
1401
+ }
1402
+
1403
+ //to make tc/pp button appear in footer by default
1404
+ $product_option['button_position'] = 'automatic';
1405
+
1406
+ // Add a widget in the sidebar
1407
+ iubenda()->assign_legal_block_or_widget();
1408
+ }
1409
+
1410
+ $product_option["code_{$lang_id}"] = stripslashes($code);
1411
+ $product_option["manual_code_{$lang_id}"] = stripslashes($code);
1412
+ }
1413
+ }
1414
 
 
 
1415
 
1416
+ if (in_array($product_key, ['pp', 'tc'])) {
1417
+ // Add a widget in the sidebar if the button is positioned automatically
1418
+ iubenda()->assign_legal_block_or_widget();
1419
+ }
 
 
 
 
 
1420
 
1421
+ //add version if Iubenda privacy policy solution activated
1422
+ if ($product_key == 'pp') {
1423
+ $product_option["version"] = 'Manual';
1424
+ }
1425
 
1426
+ // Send options to save it
1427
+ $result['products_option'][$product_key] = $product_option;
1428
+ }else{
1429
+ $result['iubenda_activated_products'][$product_name] = 'false';
1430
+ }
1431
+ }
1432
+
1433
+ return $result;
1434
+ }
1435
+
1436
+ public function save_init_prepared_product_options($products, $result)
1437
+ {
1438
+ // Getting product option to save it
1439
+ foreach ($products as $product_name => $product_key) {
1440
+ $product_status = iub_array_get($result, "iubenda_activated_products.{$product_name}", 'false') ?: 'false';
1441
+ if($product_status == 'false'){
1442
+ continue;
1443
+ }
1444
+
1445
+ $product_option = iub_array_get($result, "products_option.{$product_key}", []) ?: [];
1446
+
1447
+ // Merging old $product_name options with new options
1448
+ update_option( $product_name, array_merge(iubenda()->options[$product_key] ?: [], $product_option));
1449
+
1450
+ // Update Iubenda instance with new $product_name options
1451
+ iubenda()->options[$product_key] = array_merge(iubenda()->options[$product_key] ?: [], $product_option);
1452
+ }
1453
+
1454
+ // Merging old iubenda activated products with new
1455
+ $old_iubenda_activated_products = iub_array_get(iubenda()->options, 'activated_products', []) ?: [];
1456
+ $new_iubenda_activated_products = iub_array_get($result, 'iubenda_activated_products', []) ?: [];
1457
+ update_option( 'iubenda_activated_products', array_merge($old_iubenda_activated_products, $new_iubenda_activated_products));
1458
+
1459
+ // Update Iubenda instance with new activated products
1460
+ iubenda()->options['activated_products'] = array_merge($old_iubenda_activated_products, $new_iubenda_activated_products);
1461
+
1462
+ // Merging old iubenda global options with new
1463
+ $old_iubenda_global_options = iub_array_get(iubenda()->options, 'global_options', []) ?: [];
1464
+
1465
+ $new_iubenda_global_options = [];
1466
+ if(iub_array_get($result, 'site_id') ?: null){
1467
+ $new_iubenda_global_options['site_id'] = iub_array_get($result, 'site_id');
1468
+ }
1469
+ if(iub_array_get($result, 'public_ids', []) ?: null){
1470
+ $new_iubenda_global_options['public_ids'] = iub_array_get($result, 'public_ids', []);
1471
+ }
1472
+ update_option( 'iubenda_global_options', array_merge($old_iubenda_global_options, $new_iubenda_global_options));
1473
+ iubenda()->options['global_options'] = array_merge($old_iubenda_global_options, $new_iubenda_global_options);
1474
+
1475
+ $this->load_defaults();
1476
+ }
1477
  }
includes/widget/IubendaLegalWidget.php ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ class IubendaLegalWidget extends WP_Widget
5
+ {
6
+ private $widget_id = 'iubenda_legal_widget';
7
+
8
+ private $default_widget_title = 'Legal';
9
+
10
+ public function __construct()
11
+ {
12
+ parent::__construct(
13
+
14
+ // Base ID of your widget
15
+ $this->widget_id,
16
+
17
+ // Widget name will appear in UI
18
+ __('Iubenda legal', 'iubenda'),
19
+
20
+ // Widget description
21
+ ['description' => __('Iubenda legal widget for Privacy Policy and Terms & Conditions', 'iubenda'),]
22
+ );
23
+
24
+ add_action( 'iubenda_assign_widget_to_first_sidebar', [$this, 'assign_iubenda_widget'] );
25
+ $this->init();
26
+ }
27
+
28
+ /**
29
+ * Register HOOKS
30
+ *
31
+ * @return void
32
+ */
33
+ private function init() {
34
+ add_action('widgets_init', [$this, 'register_widget']);
35
+ }
36
+
37
+ /**
38
+ * Set default value for the first Iubenda Legal widget
39
+ * @return array|array[]|ArrayIterator|ArrayObject|false
40
+ */
41
+ public function get_settings()
42
+ {
43
+ $settings = parent::get_settings();
44
+ // Set default value for the first widget
45
+ if (!$settings) {
46
+ return [1 => []];
47
+ }
48
+
49
+ return $settings;
50
+ }
51
+
52
+ /**
53
+ * Override display callback
54
+ *
55
+ * @param $args
56
+ * @param $widget_args
57
+ * @return void
58
+ */
59
+ public function display_callback( $args, $widget_args = 1 ) {
60
+
61
+ if ( is_numeric( $widget_args ) ) {
62
+ $widget_args = array( 'number' => $widget_args );
63
+ }
64
+
65
+ $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
66
+ $this->_set( $widget_args['number'] );
67
+ $instances = $this->get_settings();
68
+
69
+ // Additional code to add default title widget title if it's not set yet
70
+ if (!$instances) {
71
+ $instances[$this->number] = ['title' => __($this->default_widget_title ,'iubenda')];
72
+ }
73
+
74
+ if ( isset( $instances[ $this->number ] ) ) {
75
+ $instance = $instances[ $this->number ];
76
+
77
+ /**
78
+ * Filters the settings for a particular widget instance.
79
+ *
80
+ * Returning false will effectively short-circuit display of the widget.
81
+ *
82
+ * @since 2.8.0
83
+ *
84
+ * @param array $instance The current widget instance's settings.
85
+ * @param WP_Widget $widget The current widget instance.
86
+ * @param array $args An array of default widget arguments.
87
+ */
88
+ $instance = apply_filters( 'widget_display_callback', $instance, $this, $args );
89
+
90
+ if ( false === $instance ) {
91
+ return;
92
+ }
93
+
94
+ $was_cache_addition_suspended = wp_suspend_cache_addition();
95
+ if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
96
+ wp_suspend_cache_addition( true );
97
+ }
98
+
99
+ $this->widget( $args, $instance );
100
+
101
+ if ( $this->is_preview() ) {
102
+ wp_suspend_cache_addition( $was_cache_addition_suspended );
103
+ }
104
+ }
105
+ }
106
+
107
+
108
+ // Creating widget front-end
109
+ public function widget($args, $instance)
110
+ {
111
+ $ppStatus = iub_array_get(iubenda()->settings->services, 'pp.status') == 'true';
112
+ $ppPosition = iub_array_get(iubenda()->options['pp'], 'button_position') == 'automatic';
113
+
114
+ $tcStatus = iub_array_get(iubenda()->settings->services, 'tc.status') == 'true';
115
+ $tcPosition = iub_array_get(iubenda()->options['tc'], 'button_position') == 'automatic';
116
+
117
+ // Checking if there is no public id for current language
118
+ if ( iubenda()->multilang && ! empty( iubenda()->lang_current ) ) {
119
+ $lang_id = iubenda()->lang_current;
120
+ } else {
121
+ $lang_id = 'default';
122
+ }
123
+
124
+ $public_id = iub_array_get(iubenda()->options['global_options'], "public_ids.{$lang_id}", false) ?: false;
125
+
126
+ // Return false if there is no public id for current language
127
+ if (!($public_id)) {
128
+ return false;
129
+ }
130
+ $quickGeneratorService = new QuickGeneratorService();
131
+
132
+ if (!($ppStatus && $ppPosition && boolval($quickGeneratorService->pp_button())) && !($tcStatus && $tcPosition && boolval($quickGeneratorService->tc_button()))) {
133
+ return false;
134
+ }
135
+
136
+ $title = apply_filters('widget_title', iub_array_get($instance, 'title') ?? 'Legal');
137
+
138
+ // before and after widget arguments are defined by themes
139
+ echo $args['before_widget'];
140
+ if (!empty($title)) echo $args['before_title'] . $title . $args['after_title'];
141
+
142
+ // Display TC or PP if activated
143
+ if (($ppStatus && $ppPosition) || ($tcStatus && $tcPosition)) {
144
+
145
+ $legal = '<section>';
146
+
147
+ if($ppStatus && $ppPosition){
148
+ $legal .= $quickGeneratorService->pp_button();
149
+ }
150
+ if(($ppStatus && $ppPosition) && ($tcStatus && $tcPosition)){
151
+ $legal .= '<br>';
152
+ }
153
+ if($tcStatus && $tcPosition){
154
+ $legal .= $quickGeneratorService->tc_button();
155
+ }
156
+
157
+ $legal .= '</section>';
158
+
159
+ echo $legal;
160
+ }
161
+ echo $args['after_widget'];
162
+ }
163
+
164
+ // Widget Backend
165
+ public function form($instance)
166
+ {
167
+ $title = __('Legal', 'iubenda');
168
+
169
+ if (isset($instance['title'])) {
170
+ $title = $instance['title'];
171
+ }
172
+
173
+ // Widget admin form
174
+ ?>
175
+ <p>
176
+ <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
177
+ <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>"/>
178
+ </p>
179
+ <?php
180
+ }
181
+
182
+ // Updating widget replacing old instances with new
183
+ public function update($new_instance, $old_instance)
184
+ {
185
+ $instance = [];
186
+ $instance['title'] = (!empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
187
+ return $instance;
188
+ }
189
+
190
+ /**
191
+ * Assign iubenda widget to registered sidebar if exists and not registered before
192
+ *
193
+ * @return bool
194
+ */
195
+ public function assign_iubenda_widget()
196
+ {
197
+ global $wp_registered_sidebars;
198
+
199
+ // Check if iubenda widget activated in any sidebar
200
+ if (is_active_widget(false, false, $this->widget_id)) {
201
+ return;
202
+ }
203
+
204
+ // If sidebar-1 not registered or not activated
205
+ if (!iub_array_get($wp_registered_sidebars, 'sidebar-1')) {
206
+ return;
207
+ }
208
+
209
+ // Iubenda widget in not activated in sidebar and sidebar-1 is registered and activated
210
+ wp_assign_widget_to_sidebar("{$this->widget_id}-1", 'sidebar-1');
211
+ }
212
+
213
+ /**
214
+ * Register current widget in WP
215
+ *
216
+ * @return void
217
+ */
218
+ public function register_widget() {
219
+ register_widget(__CLASS__);
220
+ }
221
+
222
+ /**
223
+ * Check current theme supports widget
224
+ */
225
+ public function check_current_theme_supports_widget()
226
+ {
227
+ global $wp_registered_sidebars;
228
+
229
+ // If sidebar-1 registered and activated
230
+ if (iub_array_get($wp_registered_sidebars, 'sidebar-1')) {
231
+ return true;
232
+ }
233
+
234
+ return false;
235
+ }
236
+ }
237
+
238
+
239
+
iubenda-cookie-class/README.md CHANGED
@@ -98,7 +98,17 @@ These operations take place in accordance with the rules explained in [this guid
98
 
99
  ## Changelog
100
 
101
- ##### 4.1.8
 
 
 
 
 
 
 
 
 
 
102
  * Fix: Avoid overriding the purposes attr if it was set
103
 
104
  ##### 4.1.7
98
 
99
  ## Changelog
100
 
101
+ ##### 4.1.11
102
+ * Support PHP 8
103
+
104
+ ##### 4.1.10
105
+ * Move www.googletagmanager.com/gtag/js under analytics #4
106
+
107
+ ##### 4.1.9
108
+ * Fix SSRF security vulnerability
109
+ * Remove googletagmanager.com/gtm.js from basic interaction
110
+
111
+ ##### ``4.1.8
112
  * Fix: Avoid overriding the purposes attr if it was set
113
 
114
  ##### 4.1.7
iubenda-cookie-class/iubenda.class.page.php CHANGED
@@ -266,10 +266,10 @@ if('callback' in _iub.csConfiguration) {
266
  $html = preg_replace( "#google_ad_width =(.*?);#i", "", $html, 1 );
267
  $html = preg_replace( "#google_ad_height =(.*?);#i", "", $html, 1 );
268
 
269
- $ad_client = trim( $ad_client[1] );
270
- $ad_slot = trim( $ad_slot[1] );
271
- $ad_width = trim( $ad_width[1] );
272
- $ad_height = trim( $ad_height[1] );
273
 
274
  $ad_class = 'class="_iub_cs_activate_google_ads"';
275
  $ad_style = 'style="width:' . $ad_width . 'px; height:' . $ad_height . 'px;"';
266
  $html = preg_replace( "#google_ad_width =(.*?);#i", "", $html, 1 );
267
  $html = preg_replace( "#google_ad_height =(.*?);#i", "", $html, 1 );
268
 
269
+ $ad_client = trim( $ad_client[1] ?: '' );
270
+ $ad_slot = trim( $ad_slot[1] ?: '' );
271
+ $ad_width = trim( $ad_width[1] ?: '' );
272
+ $ad_height = trim( $ad_height[1] ?: '' );
273
 
274
  $ad_class = 'class="_iub_cs_activate_google_ads"';
275
  $ad_style = 'style="width:' . $ad_width . 'px; height:' . $ad_height . 'px;"';
iubenda-cookie-class/iubenda.class.php CHANGED
@@ -5,7 +5,7 @@
5
  * @author iubenda s.r.l
6
  * @copyright 2018-2020, iubenda s.r.l
7
  * @license GNU/GPL
8
- * @version 4.1.8
9
  * @deprecated
10
  *
11
  * This program is free software: you can redistribute it and/or modify
@@ -57,7 +57,6 @@ class iubendaParser {
57
  2 => array(
58
  'apis.google.com/js/api.js',
59
  'cse.google.com/cse.js',
60
- 'googletagmanager.com/gtm.js',
61
  'loader.engage.gsfn.us/loader.js',
62
  'headwayapp.co/widget.js',
63
  'wchat.freshchat.com',
@@ -97,7 +96,8 @@ class iubendaParser {
97
  'i.kissmetrics.com/i.js',
98
  'cdn.mxpnl.com',
99
  'rum-static.pingdom.net/prum.min.js',
100
- 'google-analytics.com/analytics.js'
 
101
  ),
102
  // Targeting & Advertising
103
  5 => array(
@@ -105,7 +105,6 @@ class iubendaParser {
105
  'securepubads.g.doubleclick.net/tag/js/gpt.js',
106
  'googlesyndication.com/pagead/show_ads.js',
107
  'googleadservices.com/pagead/conversion.js',
108
- 'www.googletagmanager.com/gtag/js',
109
  'window.adsbygoogle',
110
  'static.ads-twitter.com',
111
  'static.criteo.net/js/',
@@ -442,7 +441,7 @@ class iubendaParser {
442
  switch ( $element->tag ) {
443
  case 'script':
444
  case 'iframe':
445
- $class = trim( $element->class );
446
  $element->class = ( $class !== '' ? $class . ' ' : '' ) . $this->iub_class_skip;
447
  $js .= $element->outertext;
448
  break;
@@ -482,7 +481,7 @@ class iubendaParser {
482
  // loop through scripts
483
  for ( $j = 0; $j < $count; $j ++ ) {
484
  $s = $scripts[$j];
485
- $script_class = trim( $s->class );
486
 
487
  if ( $script_class !== '' ) {
488
  $classes = explode( ' ', $script_class );
@@ -566,10 +565,10 @@ class iubendaParser {
566
  $html = preg_replace( "#google_ad_width =(.*?);#i", "", $html, 1 );
567
  $html = preg_replace( "#google_ad_height =(.*?);#i", "", $html, 1 );
568
 
569
- $ad_client = trim( $ad_client[1] );
570
- $ad_slot = trim( $ad_slot[1] );
571
- $ad_width = trim( $ad_width[1] );
572
- $ad_height = trim( $ad_height[1] );
573
 
574
  $ad_class = 'class="' . $this->iub_class . '_google_ads"';
575
  $ad_style = 'style="width:' . $ad_width . 'px; height:' . $ad_height . 'px;"';
@@ -659,7 +658,7 @@ class iubendaParser {
659
  if ( ! empty( $scripts ) && is_object( $scripts ) ) {
660
  foreach ( $scripts as $script ) {
661
  $src = $script->getAttribute( 'src' );
662
- $script_class = trim( $script->getAttribute( 'class' ) );
663
 
664
  if ( $script_class !== '' ) {
665
  $classes = explode( ' ', $script_class );
@@ -755,7 +754,7 @@ class iubendaParser {
755
 
756
  for ( $j = 0; $j < $count; $j ++ ) {
757
  $i = $iframes[$j];
758
- $iframe_class = trim( $i->class );
759
 
760
  if ( $iframe_class !== '' ) {
761
  $classes = explode( ' ', $iframe_class );
@@ -821,7 +820,7 @@ class iubendaParser {
821
  if ( ! empty( $iframes ) && is_object( $iframes ) ) {
822
  foreach ( $iframes as $iframe ) {
823
  $src = $iframe->getAttribute( 'src' );
824
- $iframe_class = trim( $iframe->getAttribute( 'class' ) );
825
 
826
  if ( $iframe_class !== '' ) {
827
  $classes = explode( ' ', $iframe_class );
5
  * @author iubenda s.r.l
6
  * @copyright 2018-2020, iubenda s.r.l
7
  * @license GNU/GPL
8
+ * @version 4.1.11
9
  * @deprecated
10
  *
11
  * This program is free software: you can redistribute it and/or modify
57
  2 => array(
58
  'apis.google.com/js/api.js',
59
  'cse.google.com/cse.js',
 
60
  'loader.engage.gsfn.us/loader.js',
61
  'headwayapp.co/widget.js',
62
  'wchat.freshchat.com',
96
  'i.kissmetrics.com/i.js',
97
  'cdn.mxpnl.com',
98
  'rum-static.pingdom.net/prum.min.js',
99
+ 'google-analytics.com/analytics.js',
100
+ 'www.googletagmanager.com/gtag/js'
101
  ),
102
  // Targeting & Advertising
103
  5 => array(
105
  'securepubads.g.doubleclick.net/tag/js/gpt.js',
106
  'googlesyndication.com/pagead/show_ads.js',
107
  'googleadservices.com/pagead/conversion.js',
 
108
  'window.adsbygoogle',
109
  'static.ads-twitter.com',
110
  'static.criteo.net/js/',
441
  switch ( $element->tag ) {
442
  case 'script':
443
  case 'iframe':
444
+ $class = trim( $element->class ?: '' );
445
  $element->class = ( $class !== '' ? $class . ' ' : '' ) . $this->iub_class_skip;
446
  $js .= $element->outertext;
447
  break;
481
  // loop through scripts
482
  for ( $j = 0; $j < $count; $j ++ ) {
483
  $s = $scripts[$j];
484
+ $script_class = trim( $s->class ?: '' );
485
 
486
  if ( $script_class !== '' ) {
487
  $classes = explode( ' ', $script_class );
565
  $html = preg_replace( "#google_ad_width =(.*?);#i", "", $html, 1 );
566
  $html = preg_replace( "#google_ad_height =(.*?);#i", "", $html, 1 );
567
 
568
+ $ad_client = trim( $ad_client[1] ?: '' );
569
+ $ad_slot = trim( $ad_slot[1] ?: '' );
570
+ $ad_width = trim( $ad_width[1] ?: '' );
571
+ $ad_height = trim( $ad_height[1] ?: '' );
572
 
573
  $ad_class = 'class="' . $this->iub_class . '_google_ads"';
574
  $ad_style = 'style="width:' . $ad_width . 'px; height:' . $ad_height . 'px;"';
658
  if ( ! empty( $scripts ) && is_object( $scripts ) ) {
659
  foreach ( $scripts as $script ) {
660
  $src = $script->getAttribute( 'src' );
661
+ $script_class = trim( $script->getAttribute( 'class' ) ?: '' );
662
 
663
  if ( $script_class !== '' ) {
664
  $classes = explode( ' ', $script_class );
754
 
755
  for ( $j = 0; $j < $count; $j ++ ) {
756
  $i = $iframes[$j];
757
+ $iframe_class = trim( $i->class ?: '' );
758
 
759
  if ( $iframe_class !== '' ) {
760
  $classes = explode( ' ', $iframe_class );
820
  if ( ! empty( $iframes ) && is_object( $iframes ) ) {
821
  foreach ( $iframes as $iframe ) {
822
  $src = $iframe->getAttribute( 'src' );
823
+ $iframe_class = trim( $iframe->getAttribute( 'class' ) ?: '' );
824
 
825
  if ( $iframe_class !== '' ) {
826
  $classes = explode( ' ', $iframe_class );
iubenda-cookie-class/listeners/GoogleTagManagerListener.php CHANGED
@@ -43,7 +43,7 @@ class GoogleTagManagerListener {
43
  }
44
 
45
  # Avoid non inline-scripts
46
- if ( ! trim( $str ) ) {
47
  continue;
48
  }
49
 
43
  }
44
 
45
  # Avoid non inline-scripts
46
+ if ( ! trim( $str ?: '' ) ) {
47
  continue;
48
  }
49
 
iubenda-cookie-class/simple_html_dom.php CHANGED
@@ -444,7 +444,7 @@ class simple_html_dom_node
444
  foreach ($this->nodes as $n) {
445
  // Start paragraph after a blank line
446
  if ($n->tag === 'p') {
447
- $ret = trim($ret) . "\n\n";
448
  }
449
 
450
  $ret .= $this->convert_text($n->text());
@@ -632,7 +632,7 @@ class simple_html_dom_node
632
  // Check if ID matches
633
  if ($pass && $id !== '' && isset($node->attr['id'])) {
634
  // Note: Only consider the first ID (as browsers do)
635
- $node_id = explode(' ', trim($node->attr['id']))[0];
636
 
637
  if($id !== $node_id) { $pass = false; }
638
  }
@@ -818,7 +818,7 @@ class simple_html_dom_node
818
  * anything (since the words are separated by spaces). Also if
819
  * "val" is the empty string, it will never represent anything.
820
  */
821
- return in_array($pattern, explode(' ', trim($value)), true);
822
  }
823
  return false;
824
  }
@@ -876,7 +876,7 @@ class simple_html_dom_node
876
 
877
  preg_match_all(
878
  $pattern,
879
- trim($selector_string) . ' ', // Add final ' ' as pseudo separator
880
  $matches,
881
  PREG_SET_ORDER
882
  );
@@ -889,7 +889,7 @@ class simple_html_dom_node
889
  $result = array();
890
 
891
  foreach ($matches as $m) {
892
- $m[0] = trim($m[0]);
893
 
894
  // Skip NoOps
895
  if ($m[0] === '' || $m[0] === '/' || $m[0] === '//') { continue; }
@@ -915,7 +915,7 @@ class simple_html_dom_node
915
  if($m[4] !== '') {
916
  preg_match_all(
917
  "/\[@?(!?[\w:-]+)(?:([!*^$|~]?=)[\"']?(.*?)[\"']?)?(?:\s+?([iIsS])?)?\]/is",
918
- trim($m[4]),
919
  $attributes,
920
  PREG_SET_ORDER
921
  );
@@ -925,7 +925,7 @@ class simple_html_dom_node
925
 
926
  foreach($attributes as $att) {
927
  // Skip empty matches
928
- if(trim($att[0]) === '') { continue; }
929
 
930
  $inverted = (isset($att[1][0]) && $att[1][0] === '!');
931
  $m[4][] = array(
@@ -939,10 +939,10 @@ class simple_html_dom_node
939
  }
940
 
941
  // Sanitize Separator
942
- if ($m[5] !== '' && trim($m[5]) === '') { // Descendant Separator
943
  $m[5] = ' ';
944
  } else { // Other Separator
945
- $m[5] = trim($m[5]);
946
  }
947
 
948
  // Clear Separator if it's a Selector List
@@ -1625,7 +1625,7 @@ class simple_html_dom
1625
  {
1626
  $this->clear();
1627
 
1628
- $this->doc = trim($str);
1629
  $this->size = strlen($this->doc);
1630
  $this->original_size = $this->size; // original size of the html
1631
  $this->pos = 0;
@@ -2115,7 +2115,7 @@ class simple_html_dom
2115
  // PaperG: If this is a "class" selector, lets get rid of the preceeding
2116
  // and trailing space since some people leave it in the multi class case.
2117
  if ($name === 'class') {
2118
- $value = trim($value);
2119
  }
2120
 
2121
  if (!$is_duplicate) {
444
  foreach ($this->nodes as $n) {
445
  // Start paragraph after a blank line
446
  if ($n->tag === 'p') {
447
+ $ret = trim($ret ?: '') . "\n\n";
448
  }
449
 
450
  $ret .= $this->convert_text($n->text());
632
  // Check if ID matches
633
  if ($pass && $id !== '' && isset($node->attr['id'])) {
634
  // Note: Only consider the first ID (as browsers do)
635
+ $node_id = explode(' ', trim($node->attr['id'] ?: ''))[0];
636
 
637
  if($id !== $node_id) { $pass = false; }
638
  }
818
  * anything (since the words are separated by spaces). Also if
819
  * "val" is the empty string, it will never represent anything.
820
  */
821
+ return in_array($pattern, explode(' ', trim($value ?: '')), true);
822
  }
823
  return false;
824
  }
876
 
877
  preg_match_all(
878
  $pattern,
879
+ trim($selector_string ?: '') . ' ', // Add final ' ' as pseudo separator
880
  $matches,
881
  PREG_SET_ORDER
882
  );
889
  $result = array();
890
 
891
  foreach ($matches as $m) {
892
+ $m[0] = trim($m[0] ?: '');
893
 
894
  // Skip NoOps
895
  if ($m[0] === '' || $m[0] === '/' || $m[0] === '//') { continue; }
915
  if($m[4] !== '') {
916
  preg_match_all(
917
  "/\[@?(!?[\w:-]+)(?:([!*^$|~]?=)[\"']?(.*?)[\"']?)?(?:\s+?([iIsS])?)?\]/is",
918
+ trim($m[4] ?: ''),
919
  $attributes,
920
  PREG_SET_ORDER
921
  );
925
 
926
  foreach($attributes as $att) {
927
  // Skip empty matches
928
+ if(trim($att[0] ?: '') === '') { continue; }
929
 
930
  $inverted = (isset($att[1][0]) && $att[1][0] === '!');
931
  $m[4][] = array(
939
  }
940
 
941
  // Sanitize Separator
942
+ if ($m[5] !== '' && trim($m[5] ?: '') === '') { // Descendant Separator
943
  $m[5] = ' ';
944
  } else { // Other Separator
945
+ $m[5] = trim($m[5] ?: '');
946
  }
947
 
948
  // Clear Separator if it's a Selector List
1625
  {
1626
  $this->clear();
1627
 
1628
+ $this->doc = trim($str ?: '');
1629
  $this->size = strlen($this->doc);
1630
  $this->original_size = $this->size; // original size of the html
1631
  $this->pos = 0;
2115
  // PaperG: If this is a "class" selector, lets get rid of the preceeding
2116
  // and trailing space since some people leave it in the multi class case.
2117
  if ($name === 'class') {
2118
+ $value = trim($value ?: '');
2119
  }
2120
 
2121
  if (!$is_duplicate) {
iubenda-cookie-class/test.php DELETED
@@ -1,116 +0,0 @@
1
- <?php
2
- /**
3
- * test.php
4
- *
5
- * @author iubenda s.r.l
6
- * @copyright 2018-2020, iubenda s.r.l
7
- * @license GNU/GPL
8
- *
9
- * This program is free software: you can redistribute it and/or modify
10
- * it under the terms of the GNU General Public License as published by
11
- * the Free Software Foundation, either version 3 of the License, or
12
- * (at your option) any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- * GNU General Public License for more details.
18
- *
19
- * You should have received a copy of the GNU General Public License
20
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
- */
22
-
23
- ini_set( 'max_execution_time', 300 );
24
- ?>
25
-
26
- <html>
27
- <head>
28
- <!-- Latest compiled and minified CSS -->
29
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
30
-
31
- <!-- Optional theme -->
32
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
33
- <style>
34
- ul { margin: 0; padding: 0;}
35
- ul li { list-style-type: none; }
36
- </style>
37
- </head>
38
- <body>
39
- <div class="container">
40
- <div class="row">
41
- <div class="col-md-12">
42
- <h1>iubenda class test</h1>
43
- <form action="" method="POST">
44
- <strong>URL WEBSITE</strong><BR>
45
- <input type="text" name="url">
46
- <input type="submit" class="btn" value="Analyze">
47
- </form>
48
- </div>
49
-
50
- <?php
51
- if ( ! empty( $_POST['url'] ) )
52
- if (substr($_POST['url'], 0, 4) == "http") {
53
- $url = filter_var( $_POST['url'], FILTER_SANITIZE_URL );
54
- }
55
- else
56
- $url = '';
57
-
58
- if ( $url ) {
59
-
60
- function print_stuff( $array ) {
61
- if ( count( $array ) ) {
62
- echo "<ul>";
63
- foreach ( $array as $r ) {
64
- echo "<li><pre><code>" . htmlspecialchars( $r ) . "</code></pre></li>";
65
- }
66
- echo "</ul>";
67
- } else {
68
- echo "<p>Nothing</p>";
69
- }
70
- }
71
-
72
- echo '<div class="col-md-12" style="padding-bottom:150px;"><h2>RESULTS</H2>';
73
-
74
- include_once( 'iubenda.class.php' );
75
-
76
- $content = file_get_contents( $url );
77
-
78
- $type = isset( $_GET['type'] ) && in_array( $_GET['type'], array( 'page', 'faster' ), true ) ? $_GET['type'] : 'page';
79
- $iubenda = new iubendaParser( $content, array( 'type' => $type ) );
80
- $iubenda->parse();
81
-
82
- $iub_comments_detected = count( $iubenda->iub_comments_detected );
83
- $scripts_detected = count( $iubenda->scripts_detected );
84
- $iframes_detected = count( $iubenda->iframes_detected );
85
- $iframes_converted = count( $iubenda->iframes_converted );
86
- $script_inline_detected = count( $iubenda->scripts_inline_detected );
87
- $script_inline_converted = count( $iubenda->scripts_inline_converted );
88
- $script_converted = count( $iubenda->scripts_converted );
89
-
90
- echo "<p>Iubenda comments detected: $iub_comments_detected<br>Iubenda automatic stuff<br>Iframe detected: $iframes_detected<br>Iframe autoconverted: $iframes_converted<br>Scripts detected: $scripts_detected<br>Scripts autoconverted: $script_converted<br>Inline scripts detected: $script_inline_detected<br>Inline scripts autoconverted: $script_inline_converted</p>";
91
-
92
- echo "<H3>DETAILS</H3>";
93
-
94
- echo "<H4>iubenda comments stuff</h4>";
95
- print_stuff( $iubenda->iub_comments_detected );
96
- echo "<H4>Script detected</h4>";
97
- print_stuff( $iubenda->scripts_detected );
98
- echo "<H4>Script converted</h4>";
99
- print_stuff( $iubenda->scripts_converted );
100
- echo "<H4>Script inline detected</h4>";
101
- print_stuff( $iubenda->scripts_inline_detected );
102
- echo "<H4>Script inline converted</h4>";
103
- print_stuff( $iubenda->scripts_inline_converted );
104
- echo "<H4>Iframe detected</h4>";
105
- print_stuff( $iubenda->iframes_detected );
106
- echo "<H4>Iframe converted</h4>";
107
- print_stuff( $iubenda->iframes_converted );
108
-
109
- echo "</div>";
110
- }
111
- ?>
112
- </div>
113
- </div>
114
-
115
- </body>
116
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
iubenda_cookie_solution.php CHANGED
@@ -2,8 +2,8 @@
2
  /*
3
  Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
4
  Plugin URI: https://www.iubenda.com
5
- Description: An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
6
- Version: 2.5.0
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
@@ -31,21 +31,30 @@ define( 'IUB_DEBUG', false );
31
  /**
32
  * iubenda final class.
33
  *
 
 
 
 
34
  * @class iubenda
35
- * @version 2.5.0
36
  */
37
  class iubenda {
38
 
 
 
 
 
 
39
  private static $instance;
40
  public $options = array();
41
  public $defaults = array(
42
  'cs' => array(
43
- 'parse' => false, // iubenda_parse
44
- 'skip_parsing' => true, // skip_parsing
45
- 'ctype' => true, // iubenda_ctype
46
- 'parser_engine' => 'new', // parser_engine
47
- 'output_feed' => true, // iubenda_output_feed
48
- 'output_post' => true,
49
  'code_default' => false, // iubenda-code-default,
50
  'menu_position' => 'topmenu',
51
  'amp_support' => false,
@@ -54,7 +63,30 @@ class iubenda {
54
  'amp_template' => '',
55
  'custom_scripts' => array(),
56
  'custom_iframes' => array(),
57
- 'deactivation' => false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  ),
59
  'cons' => array(
60
  'public_api_key' => '',
@@ -62,7 +94,7 @@ class iubenda {
62
  )
63
  );
64
  public $base_url;
65
- public $version = '2.5.0';
66
  public $activation = array(
67
  'update_version' => 0,
68
  'update_notice' => true,
@@ -72,8 +104,33 @@ class iubenda {
72
  public $no_html = false;
73
  public $multilang = false;
74
  public $languages = array();
 
75
  public $lang_default = '';
76
  public $lang_current = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  /**
79
  * Disable object clone.
@@ -105,10 +162,13 @@ class iubenda {
105
  add_action( 'plugins_loaded', array( self::$instance, 'init' ) );
106
 
107
  self::$instance->includes();
 
108
 
109
  self::$instance->AMP = new iubenda_AMP();
110
  self::$instance->forms = new iubenda_Forms();
111
  self::$instance->settings = new iubenda_Settings();
 
 
112
  }
113
 
114
  return self::$instance;
@@ -123,6 +183,8 @@ class iubenda {
123
 
124
  // settings
125
  $cs_options = (array) get_option( 'iubenda_cookie_law_solution', $this->defaults['cs'] );
 
 
126
  $cons_options = (array) get_option( 'iubenda_consent_solution', $this->defaults['cons'] );
127
 
128
  // activate AMP if not available before
@@ -132,32 +194,14 @@ class iubenda {
132
  }
133
 
134
  $this->options['cs'] = array_merge( $this->defaults['cs'], $cs_options );
 
 
135
  $this->options['cons'] = array_merge( $this->defaults['cons'], $cons_options );
 
 
136
 
137
  $this->base_url = esc_url_raw( add_query_arg( 'page', 'iubenda', admin_url( $this->options['cs']['menu_position'] === 'submenu' ? 'options-general.php' : 'admin.php' ) ) );
138
 
139
- // check old custom scripts
140
- if ( ! empty( $this->options['cs']['custom_scripts'] ) && is_array( $this->options['cs']['custom_scripts'] ) && ! is_int( reset( $this->options['cs']['custom_scripts'] ) ) ) {
141
- $data = array();
142
-
143
- foreach ( $this->options['cs']['custom_scripts'] as $script ) {
144
- $data[$script] = 0;
145
- }
146
-
147
- $this->options['cs']['custom_scripts'] = $data;
148
- }
149
-
150
- // check old custom iframes
151
- if ( ! empty( $this->options['cs']['custom_iframes'] ) && is_array( $this->options['cs']['custom_iframes'] ) && ! is_int( reset( $this->options['cs']['custom_iframes'] ) ) ) {
152
- $data = array();
153
-
154
- foreach ( $this->options['cs']['custom_iframes'] as $iframe ) {
155
- $data[$iframe] = 0;
156
- }
157
-
158
- $this->options['cs']['custom_iframes'] = $data;
159
- }
160
-
161
  // actions
162
  add_action( 'after_setup_theme', array( $this, 'register_shortcode' ) );
163
  add_action( 'wp_head', array( $this, 'wp_head_cs' ), 0 );
@@ -166,7 +210,33 @@ class iubenda {
166
  add_action( 'shutdown', array( $this, 'output_end' ), 100 );
167
  add_action( 'template_redirect', array( $this, 'disable_jetpack_tracking' ) );
168
  add_action( 'admin_init', array( $this, 'maybe_do_upgrade' ) );
 
169
  add_action( 'upgrader_process_complete', array( $this, 'upgrade' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  }
171
 
172
  /**
@@ -188,8 +258,17 @@ class iubenda {
188
  private function includes() {
189
  include_once( IUBENDA_PLUGIN_PATH . 'includes/settings.php' );
190
  include_once( IUBENDA_PLUGIN_PATH . 'includes/forms.php' );
191
- include_once( IUBENDA_PLUGIN_PATH . 'includes/amp.php' );
192
- }
 
 
 
 
 
 
 
 
 
193
 
194
  /**
195
  * Initialize plugin.
@@ -208,8 +287,10 @@ class iubenda {
208
  $registered_languages = PLL()->model->get_languages_list();
209
 
210
  if ( ! empty( $registered_languages ) ) {
211
- foreach ( $registered_languages as $language )
212
- $this->languages[$language->slug] = $language->name;
 
 
213
  }
214
 
215
  // get default language
@@ -227,15 +308,21 @@ class iubenda {
227
  $registered_languages = icl_get_languages();
228
 
229
  if ( ! empty( $registered_languages ) ) {
230
- foreach ( $registered_languages as $language )
231
- $this->languages[$language['code']] = $language['display_name'];
232
- }
 
 
233
 
234
  // get default language
235
  $this->lang_default = $sitepress->get_default_language();
236
  // get current language
237
  $this->lang_current = $sitepress->get_current_language();
238
- }
 
 
 
 
239
 
240
  // load iubenda parser
241
  include_once( dirname( __FILE__ ) . '/iubenda-cookie-class/iubenda.class.php' );
@@ -247,12 +334,19 @@ class iubenda {
247
  * @return void
248
  */
249
  public function activation() {
 
 
 
250
  set_transient( 'iub_activation_completed', 1, 3600 );
251
 
252
- add_option( 'iubenda_cookie_law_solution', $this->options['cs'], '', 'no' );
253
- add_option( 'iubenda_cookie_law_solution', $this->options['cons'], '', 'no' );
254
- add_option( 'iubenda_cookie_law_version', $this->version, '', 'no' );
255
  add_option( 'iubenda_activation_data', $this->activation, '', 'no' );
 
 
 
 
256
  }
257
 
258
  /**
@@ -263,11 +357,27 @@ class iubenda {
263
  public function deactivation() {
264
  // remove options from database?
265
  if ( $this->options['cs']['deactivation'] ) {
266
- delete_option( 'iubenda_cookie_law_solution' );
267
- delete_option( 'iubenda_consent_solution' );
268
- delete_option( 'iubenda_cookie_law_version' );
269
- delete_option( 'iubenda_activation_data' );
 
 
 
 
 
 
 
 
 
 
 
 
270
  }
 
 
 
 
271
  }
272
 
273
  /**
@@ -313,7 +423,7 @@ class iubenda {
313
  * @return void
314
  */
315
  public function load_textdomain() {
316
- load_plugin_textdomain( 'iubenda', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
317
  }
318
 
319
  /**
@@ -350,11 +460,14 @@ class iubenda {
350
  }
351
 
352
  /**
353
- * Add wp_head cookie soution content.
354
  *
355
  * @return mixed
356
  */
357
  public function wp_head_cs() {
 
 
 
358
 
359
  // check content type
360
  if ( (bool) $this->options['cs']['ctype'] == true ) {
@@ -376,17 +489,29 @@ class iubenda {
376
  if ( ( $_POST && $this->options['cs']['output_post'] ) || $this->no_html )
377
  return;
378
 
 
 
 
 
 
 
 
 
 
 
379
  // initial head output
380
  $iubenda_code = '';
381
 
382
- if ( $this->multilang === true && defined( 'ICL_LANGUAGE_CODE' ) && isset( $this->options['cs']['code_' . ICL_LANGUAGE_CODE] ) ) {
383
- $iubenda_code .= $this->options['cs']['code_' . ICL_LANGUAGE_CODE];
 
384
 
385
- // no code for current language, use default
386
- if ( ! $iubenda_code )
387
- $iubenda_code .= $this->options['cs']['code_default'];
388
- } else
389
- $iubenda_code .= $this->options['cs']['code_default'];
 
390
 
391
  $iubenda_code = $this->parse_code( $iubenda_code, true );
392
 
@@ -484,6 +609,10 @@ class iubenda {
484
  )
485
  return $output;
486
 
 
 
 
 
487
  // bail on admin side
488
  if ( is_admin() )
489
  return $output;
@@ -518,6 +647,16 @@ class iubenda {
518
  return $output;
519
  }
520
 
 
 
 
 
 
 
 
 
 
 
521
  // google recaptcha v3 compatibility
522
  if ( class_exists( 'WPCF7' ) && (int) WPCF7::get_option( 'iqfix_recaptcha' ) === 0 && ! iubendaParser::consent_given() )
523
  $this->options['cs']['custom_scripts']['grecaptcha'] = 2;
@@ -533,6 +672,11 @@ class iubenda {
533
  $scripts = $this->prepare_custom_data( $this->options['cs']['custom_scripts'] );
534
  $iframes = $this->prepare_custom_data( $this->options['cs']['custom_iframes'] );
535
 
 
 
 
 
 
536
  // experimental class
537
  if ( $this->options['cs']['parser_engine'] == 'new' ) {
538
  $iubenda = new iubendaParser( mb_convert_encoding( $output, 'HTML-ENTITIES', 'UTF-8' ), array(
@@ -594,7 +738,7 @@ class iubenda {
594
  */
595
  public function parse_code( $source, $display = false ) {
596
  // return $source;
597
- $source = trim( $source );
598
 
599
  preg_match_all( '/(\"(?:html|content)\"(?:\s+)?\:(?:\s+)?)\"((?:.*?)(?:[^\\\\]))\"/s', $source, $matches );
600
 
@@ -672,6 +816,50 @@ class iubenda {
672
  if ( function_exists( 'is_amp_endpoint' ) || function_exists( 'ampforwp_is_amp_endpoint' ) ) {
673
  $this->regenerate_amp_templates();
674
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
675
  }
676
 
677
  /**
@@ -682,6 +870,11 @@ class iubenda {
682
  * @return type
683
  */
684
  public function parse_configuration( $code, $args = array() ) {
 
 
 
 
 
685
  $configuration = array();
686
  $defaults = array(
687
  'mode' => 'basic',
@@ -751,6 +944,30 @@ class iubenda {
751
  return $configuration;
752
  }
753
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
754
  /**
755
  * Domain info helper function.
756
  *
@@ -876,12 +1093,257 @@ class iubenda {
876
  $code = iubenda()->options['cs']['code_default'];
877
  iubenda()->AMP->generate_amp_template( $code );
878
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
879
  }
880
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
881
  /**
882
  * Initialise iubenda Cookie Solution
883
  *
884
- * @return object
885
  */
886
  function iubenda() {
887
  static $instance;
2
  /*
3
  Plugin Name: Cookie and Consent Solution for the GDPR & ePrivacy
4
  Plugin URI: https://www.iubenda.com
5
+ Description: The iubenda plugin is an <strong>all-in-one</strong>, extremely easy to use 360° compliance solution, with text crafted by actual lawyers, that quickly <strong>scans your site and auto-configures to match your specific setup</strong>. It supports the GDPR (DSGVO, RGPD), UK-GDPR, ePrivacy, LGPD, CCPA, CalOPPA, PECR and more.
6
+ Version: 3.2.5
7
  Author: iubenda
8
  Author URI: https://www.iubenda.com
9
  License: MIT License
31
  /**
32
  * iubenda final class.
33
  *
34
+ * @property-read iubenda_Settings $settings
35
+ * @property IubendaLegalWidget $widget
36
+ * @property IubendaLegalBlock $block
37
+ *
38
  * @class iubenda
39
+ * @version 3.2.5
40
  */
41
  class iubenda {
42
 
43
+ /**
44
+ * @var ServiceRating
45
+ */
46
+ public $serviceRating;
47
+
48
  private static $instance;
49
  public $options = array();
50
  public $defaults = array(
51
  'cs' => array(
52
+ 'parse' => true, // iubenda_parse
53
+ 'skip_parsing' => false, // skip_parsing
54
+ 'ctype' => true, // iubenda_ctype
55
+ 'parser_engine' => 'new', // parser_engine
56
+ 'output_feed' => true, // iubenda_output_feed
57
+ 'output_post' => true,
58
  'code_default' => false, // iubenda-code-default,
59
  'menu_position' => 'topmenu',
60
  'amp_support' => false,
63
  'amp_template' => '',
64
  'custom_scripts' => array(),
65
  'custom_iframes' => array(),
66
+ 'deactivation' => false,
67
+ 'configuration_type'=> 'manual',
68
+ 'simplified' => [
69
+ 'position' => 'float-top-center',
70
+ 'background_overlay' => false,
71
+ 'banner_style' => 'dark',
72
+ 'legislation' => 'gdpr',
73
+ 'require_consent' => 'worldwide',
74
+ 'explicit_accept' => true,
75
+ 'explicit_reject' => true,
76
+ ]
77
+ ),
78
+ 'pp' => array(
79
+ 'version' => '', // Simplified / Embed Code
80
+ 'parse' => false, // iubenda_parse
81
+ 'deactivation' => false,
82
+ 'button_style' => 'white',
83
+ 'button_position' => 'automatic'
84
+ ),
85
+ 'tc' => array(
86
+ 'parse' => false, // iubenda_parse
87
+ 'deactivation' => false,
88
+ 'button_style' => 'white',
89
+ 'button_position' => 'automatic'
90
  ),
91
  'cons' => array(
92
  'public_api_key' => '',
94
  )
95
  );
96
  public $base_url;
97
+ public $version = '3.2.5';
98
  public $activation = array(
99
  'update_version' => 0,
100
  'update_notice' => true,
104
  public $no_html = false;
105
  public $multilang = false;
106
  public $languages = array();
107
+ public $languages_locale = array();
108
  public $lang_default = '';
109
  public $lang_current = '';
110
+ public $lang_mapping = [
111
+ //wordpress language //iubenda language
112
+ 'nl_NL' =>'nl',
113
+ 'en_US' =>'en',
114
+ 'en_UK' =>'en',
115
+ 'en_GB' =>'en-GB',
116
+ 'fr_FR' =>'fr',
117
+ 'de_DE' =>'de',
118
+ 'it_IT' =>'it',
119
+ 'pt_BR' =>'pt-BR',
120
+ 'ru_RU' =>'ru',
121
+ 'es_ES' =>'es',
122
+ ];
123
+ public $supported_languages = [
124
+ 'nl' => 'Dutch',
125
+ 'en' => 'English (US)',
126
+ 'en-GB' => 'English (UK)',
127
+ 'fr' => 'French',
128
+ 'de' => 'German',
129
+ 'it' => 'Italian',
130
+ 'pt-BR' => 'Portuguese (BR)',
131
+ 'ru' => 'Russian',
132
+ 'es' => 'Spanish',
133
+ ];
134
 
135
  /**
136
  * Disable object clone.
162
  add_action( 'plugins_loaded', array( self::$instance, 'init' ) );
163
 
164
  self::$instance->includes();
165
+ self::$instance->serviceRating = new ServiceRating();
166
 
167
  self::$instance->AMP = new iubenda_AMP();
168
  self::$instance->forms = new iubenda_Forms();
169
  self::$instance->settings = new iubenda_Settings();
170
+ self::$instance->widget = new IubendaLegalWidget();
171
+ self::$instance->block = new IubendaLegalBlock();
172
  }
173
 
174
  return self::$instance;
183
 
184
  // settings
185
  $cs_options = (array) get_option( 'iubenda_cookie_law_solution', $this->defaults['cs'] );
186
+ $pp_options = (array) get_option( 'iubenda_privacy_policy_solution', $this->defaults['pp'] );
187
+ $tc_options = (array) get_option( 'iubenda_terms_conditions_solution', $this->defaults['tc'] );
188
  $cons_options = (array) get_option( 'iubenda_consent_solution', $this->defaults['cons'] );
189
 
190
  // activate AMP if not available before
194
  }
195
 
196
  $this->options['cs'] = array_merge( $this->defaults['cs'], $cs_options );
197
+ $this->options['pp'] = array_merge( $this->defaults['pp'], $pp_options );
198
+ $this->options['tc'] = array_merge( $this->defaults['tc'], $tc_options );
199
  $this->options['cons'] = array_merge( $this->defaults['cons'], $cons_options );
200
+ $this->options['activated_products'] = get_option( 'iubenda_activated_products', [] ) ?: [];
201
+ $this->options['global_options'] = get_option( 'iubenda_global_options', [] ) ?: [];
202
 
203
  $this->base_url = esc_url_raw( add_query_arg( 'page', 'iubenda', admin_url( $this->options['cs']['menu_position'] === 'submenu' ? 'options-general.php' : 'admin.php' ) ) );
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  // actions
206
  add_action( 'after_setup_theme', array( $this, 'register_shortcode' ) );
207
  add_action( 'wp_head', array( $this, 'wp_head_cs' ), 0 );
210
  add_action( 'shutdown', array( $this, 'output_end' ), 100 );
211
  add_action( 'template_redirect', array( $this, 'disable_jetpack_tracking' ) );
212
  add_action( 'admin_init', array( $this, 'maybe_do_upgrade' ) );
213
+ add_action( 'admin_init', array( $this, 'check_iubenda_version' ) );
214
  add_action( 'upgrader_process_complete', array( $this, 'upgrade' ), 10, 2 );
215
+ add_filter( 'plugin_action_links', array($this, 'plugin_action_links'), 10, 5 );
216
+ add_action( 'upgrader_overwrote_package', array( $this, 'do_upgrade_processes' ) );
217
+ }
218
+
219
+ /**
220
+ * Append settings to plugin action link
221
+ *
222
+ * @param $actions
223
+ * @param $plugin_file
224
+ *
225
+ * @return array|mixed
226
+ */
227
+ public function plugin_action_links( $actions, $plugin_file ) {
228
+ static $plugin;
229
+ if ( ! isset( $plugin ) ) {
230
+ $plugin = plugin_basename( __FILE__ );
231
+ }
232
+
233
+ if ( $plugin === $plugin_file ) {
234
+ $menu_page = esc_url_raw( add_query_arg( 'page', 'iubenda', admin_url( $this->options['cs']['menu_position'] === 'submenu' ? 'options-general.php' : 'admin.php' ) ) );
235
+ $settings = array( 'settings' => "<a href='{$menu_page}'>" . esc_html__( 'Settings', 'iubenda' ) . '</a>' );
236
+ $actions = array_merge( $actions, $settings );
237
+ }
238
+
239
+ return $actions;
240
  }
241
 
242
  /**
258
  private function includes() {
259
  include_once( IUBENDA_PLUGIN_PATH . 'includes/settings.php' );
260
  include_once( IUBENDA_PLUGIN_PATH . 'includes/forms.php' );
261
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/amp.php' );
262
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/QuickGeneratorService.php' );
263
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/RadarService.php' );
264
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/CookieSolutionGenerator.php' );
265
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/PrivacyPolicyGenerator.php' );
266
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/ServiceRating.php' );
267
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/widget/IubendaLegalWidget.php' );
268
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/block/IubendaLegalBlock.php' );
269
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/ProductHelper.php' );
270
+ include_once( IUBENDA_PLUGIN_PATH . 'includes/LanguageHelper.php' );
271
+ }
272
 
273
  /**
274
  * Initialize plugin.
287
  $registered_languages = PLL()->model->get_languages_list();
288
 
289
  if ( ! empty( $registered_languages ) ) {
290
+ foreach ( $registered_languages as $language ){
291
+ $this->languages[$language->slug] = $language->name;
292
+ $this->languages_locale[$language->locale] = $language->slug;
293
+ }
294
  }
295
 
296
  // get default language
308
  $registered_languages = icl_get_languages();
309
 
310
  if ( ! empty( $registered_languages ) ) {
311
+ foreach ( $registered_languages as $language ){
312
+ $this->languages[$language['code']] = $language['display_name'];
313
+ $this->languages_locale[$language['default_locale']] = $language['code'];
314
+ }
315
+ }
316
 
317
  // get default language
318
  $this->lang_default = $sitepress->get_default_language();
319
  // get current language
320
  $this->lang_current = $sitepress->get_current_language();
321
+ }else{
322
+ // if no plugin for multi lang installed
323
+ $this->lang_default = iub_array_get(iubenda()->lang_mapping, get_locale(), 'en');
324
+ $this->lang_current = iub_array_get(iubenda()->lang_mapping, get_locale());
325
+ }
326
 
327
  // load iubenda parser
328
  include_once( dirname( __FILE__ ) . '/iubenda-cookie-class/iubenda.class.php' );
334
  * @return void
335
  */
336
  public function activation() {
337
+ // Check Iubenda version on plugin activation
338
+ $this->check_iubenda_version();
339
+
340
  set_transient( 'iub_activation_completed', 1, 3600 );
341
 
342
+ add_option( 'iubenda_cookie_law_solution', $this->options['cs'], '', 'no' );
343
+ add_option( 'iubenda_cookie_law_solution', $this->options['cons'], '', 'no' );
344
+ update_option( 'iubenda_cookie_law_version', $this->version, 'no' );
345
  add_option( 'iubenda_activation_data', $this->activation, '', 'no' );
346
+
347
+ // Send a radar request on plugin activation.
348
+ $radar = new RadarService;
349
+ $radar->ask_radar_to_send_request();
350
  }
351
 
352
  /**
357
  public function deactivation() {
358
  // remove options from database?
359
  if ( $this->options['cs']['deactivation'] ) {
360
+ delete_option( 'iubenda_activated_products' );
361
+ delete_option( 'iubenda_activation_data' );
362
+ delete_option( 'iubenda_consent_forms' );
363
+ delete_option( 'iubenda_consent_solution' );
364
+ delete_option( 'iubenda_cookie_law_solution' );
365
+ delete_option( 'iubenda_cookie_law_version' );
366
+ delete_option( 'iubenda_cs_page_configuration' );
367
+ delete_option( 'iubenda_pp_page_configuration' );
368
+ delete_option( 'iubenda_privacy_policy_solution' );
369
+ delete_option( 'iubenda_quick_generator_response' );
370
+ delete_option( 'iubenda_tc_page_configuration' );
371
+ delete_option( 'iubenda_terms_conditions_solution' );
372
+ delete_option( iubenda_Settings::IUB_NOTIFICATIONS );
373
+
374
+ // Detach iubenda legal block from footer
375
+ $this->block->detach_legal_block_from_footer();
376
  }
377
+
378
+ // remove radar options from database
379
+ delete_option( 'iubenda_radar_api_configuration' );
380
+ delete_option( 'iubenda_radar_api_response' );
381
  }
382
 
383
  /**
423
  * @return void
424
  */
425
  public function load_textdomain() {
426
+ load_plugin_textdomain( 'iubenda', false, IUBENDA_PLUGIN_REL_PATH . 'languages/' );
427
  }
428
 
429
  /**
460
  }
461
 
462
  /**
463
+ * Add wp_head cookie solution content.
464
  *
465
  * @return mixed
466
  */
467
  public function wp_head_cs() {
468
+ if (!$this->is_cs_service_enabled_and_configured()) {
469
+ return;
470
+ }
471
 
472
  // check content type
473
  if ( (bool) $this->options['cs']['ctype'] == true ) {
489
  if ( ( $_POST && $this->options['cs']['output_post'] ) || $this->no_html )
490
  return;
491
 
492
+ // bail if current page is page builder of Divi by elegant themes
493
+ if ( function_exists( 'et_fb_is_enabled' ) && et_fb_is_enabled() ) {
494
+ return;
495
+ }
496
+
497
+ // bail if current page is builder frame of (Fusion/Avada) theme
498
+ if ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ) {
499
+ return;
500
+ }
501
+
502
  // initial head output
503
  $iubenda_code = '';
504
 
505
+ // Check if there is multi language plugin installed and activated
506
+ if ( $this->multilang === true && defined( 'ICL_LANGUAGE_CODE' ) && isset( $this->options['cs']['code_' . ICL_LANGUAGE_CODE] ) ) {
507
+ $iubenda_code .= $this->options['cs']['code_' . ICL_LANGUAGE_CODE];
508
 
509
+ // no code for current language, use default
510
+ if ( ! $iubenda_code )
511
+ $iubenda_code .= $this->options['cs']['code_default'];
512
+ } else{
513
+ $iubenda_code .= $this->options['cs']['code_default'];
514
+ }
515
 
516
  $iubenda_code = $this->parse_code( $iubenda_code, true );
517
 
609
  )
610
  return $output;
611
 
612
+ if (!$this->is_cs_service_enabled_and_configured()) {
613
+ return $output;
614
+ }
615
+
616
  // bail on admin side
617
  if ( is_admin() )
618
  return $output;
647
  return $output;
648
  }
649
 
650
+ // bail if current page is builder frame of (Fusion/Avada) theme
651
+ if ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ) {
652
+ return $output;
653
+ }
654
+
655
+ // bail if the current page is page builder for any theme
656
+ if (is_customize_preview()) {
657
+ return $output;
658
+ }
659
+
660
  // google recaptcha v3 compatibility
661
  if ( class_exists( 'WPCF7' ) && (int) WPCF7::get_option( 'iqfix_recaptcha' ) === 0 && ! iubendaParser::consent_given() )
662
  $this->options['cs']['custom_scripts']['grecaptcha'] = 2;
672
  $scripts = $this->prepare_custom_data( $this->options['cs']['custom_scripts'] );
673
  $iframes = $this->prepare_custom_data( $this->options['cs']['custom_iframes'] );
674
 
675
+ // Check if the current language have a valid CS code or not
676
+ if (!(new ProductHelper())->check_iub_cs_code_exists_current_lang()) {
677
+ return $output;
678
+ }
679
+
680
  // experimental class
681
  if ( $this->options['cs']['parser_engine'] == 'new' ) {
682
  $iubenda = new iubendaParser( mb_convert_encoding( $output, 'HTML-ENTITIES', 'UTF-8' ), array(
738
  */
739
  public function parse_code( $source, $display = false ) {
740
  // return $source;
741
+ $source = trim( $source ?: '' );
742
 
743
  preg_match_all( '/(\"(?:html|content)\"(?:\s+)?\:(?:\s+)?)\"((?:.*?)(?:[^\\\\]))\"/s', $source, $matches );
744
 
816
  if ( function_exists( 'is_amp_endpoint' ) || function_exists( 'ampforwp_is_amp_endpoint' ) ) {
817
  $this->regenerate_amp_templates();
818
  }
819
+
820
+ // Sending a radar request when installing the plugin for the first time
821
+ $radar = new RadarService;
822
+ $radar->ask_radar_to_send_request();
823
+ }
824
+
825
+
826
+ /**
827
+ * Compare Iubenda plugin versions and
828
+ * do functions if compare result false (DB_version < Current version of plugin files ).
829
+ *
830
+ */
831
+ public function check_iubenda_version() {
832
+ if ($this->compare_iub_plugin_versions()){
833
+ // Upgrade processes
834
+ $this->do_upgrade_processes();
835
+
836
+ // Update Iubenda plugin version
837
+ $this->update_iubenda_version();
838
+ }
839
+ }
840
+
841
+ /**
842
+ * update Iubenda version in Database.
843
+ *
844
+ * @return void
845
+ */
846
+ private function update_iubenda_version() {
847
+ update_option( 'iubenda_cookie_law_version', $this->version, 'no' );
848
+ }
849
+
850
+
851
+ /**
852
+ * Perform processes on plugin upgrade.
853
+ *
854
+ * @return void
855
+ */
856
+ public function do_upgrade_processes() {
857
+ $db_version = get_option( 'iubenda_cookie_law_version' ) ?: '2.5.91';
858
+
859
+ // Version 3.0.0 and above
860
+ if ( version_compare( $db_version, '3.0.6', '<' ) ) {
861
+ $this->upgrading_to_ver_3_process();
862
+ }
863
  }
864
 
865
  /**
870
  * @return type
871
  */
872
  public function parse_configuration( $code, $args = array() ) {
873
+ // Check if the embed code have Callback Functions inside it or not
874
+ if (strpos($code, 'callback') !== false) {
875
+ $code = $this->replace_the_callback_functions_to_parse_configuration($code);
876
+ }
877
+
878
  $configuration = array();
879
  $defaults = array(
880
  'mode' => 'basic',
944
  return $configuration;
945
  }
946
 
947
+ /**
948
+ * Get configuration data parsed from TC & PP iubenda code
949
+ * @param $code
950
+ * @return array|false
951
+ */
952
+ public function parse_tc_pp_configuration($code) {
953
+ if (empty($code)) {
954
+ return false;
955
+ }
956
+
957
+ preg_match_all('/<a[^>]+href=([\'"])(?<href>.+?)\1[^>]*>/i', $code, $result);
958
+ $url = iub_array_get($result, 'href.0');
959
+
960
+ if (!$url) {
961
+ return false;
962
+ }
963
+
964
+
965
+ $button_style = strpos(stripslashes($code), 'iubenda-white') !== false ? 'white' : 'black';
966
+ $cookie_policy_id = basename($url);
967
+
968
+ return ['button_style' => $button_style, 'cookie_policy_id' => $cookie_policy_id];
969
+ }
970
+
971
  /**
972
  * Domain info helper function.
973
  *
1093
  $code = iubenda()->options['cs']['code_default'];
1094
  iubenda()->AMP->generate_amp_template( $code );
1095
  }
1096
+
1097
+ /**
1098
+ * unification all languages from locale to iub language
1099
+ *
1100
+ * @param array $locale_languages
1101
+ * @return array
1102
+ */
1103
+ public function language_unification_locale_to_iub(array $locale_languages): array
1104
+ {
1105
+ $iub_languages = [];
1106
+
1107
+ // Workaround to solve return languages if has 'pt' language
1108
+ if($key = array_search('pt_PT', $locale_languages)){
1109
+ unset($locale_languages[$key]);
1110
+ $iub_languages[] = 'pt-BR';
1111
+ }
1112
+ if($key = array_search('pt_BR', $locale_languages)){
1113
+ unset($locale_languages[$key]);
1114
+ $iub_languages[] = 'pt-BR';
1115
+ }
1116
+ if($key = array_search('en_GB', $locale_languages)){
1117
+ unset($locale_languages[$key]);
1118
+ $iub_languages[] = 'en-GB';
1119
+ }
1120
+
1121
+ if($key = array_search('en_US', $locale_languages)){
1122
+ unset($locale_languages[$key]);
1123
+ $iub_languages[] = 'en';
1124
+ }
1125
+
1126
+ if($key = array_search('en_AU', $locale_languages)){
1127
+ unset($locale_languages[$key]);
1128
+ $iub_languages[] = 'en';
1129
+ }
1130
+
1131
+ if($key = array_search('en_CA', $locale_languages)){
1132
+ unset($locale_languages[$key]);
1133
+ $iub_languages[] = 'en';
1134
+ }
1135
+
1136
+ foreach ($locale_languages as $language){
1137
+ if(strpos($language, '_')){
1138
+ $iub_languages[] = strstr($language, '_', true);
1139
+ }
1140
+ }
1141
+
1142
+ return $iub_languages;
1143
+ }
1144
+
1145
+ private function upgrading_to_ver_3_process()
1146
+ {
1147
+ $products = [
1148
+ 'iubenda_cookie_law_solution' => 'cs',
1149
+ 'iubenda_consent_solution' => 'cons',
1150
+ ];
1151
+
1152
+ $old_data = [
1153
+ 'iubenda_cookie_law_solution' => iubenda()->options['cs'],
1154
+ 'iubenda_cookie_law_solution_status' => 'true',
1155
+ 'iubenda_consent_solution' => iubenda()->options['cons'],
1156
+ 'iubenda_consent_solution_status' => 'true',
1157
+ ];
1158
+ $result = $this->settings->init_prepare_product_options_while_upgrading($products, $old_data);
1159
+
1160
+ // Count valid codes for iubenda cookie law solution codes and set the service inactive
1161
+ if(count(array_filter(iub_array_get($result, "codes_statues.iubenda_cookie_law_solution_codes", []) ?: [])) == 0){
1162
+ $result['iubenda_activated_products']['iubenda_cookie_law_solution'] = 'false';
1163
+ }
1164
+
1165
+ $this->settings->save_init_prepared_product_options($products, $result);
1166
+
1167
+ // Reload Options
1168
+ $this->settings->load_defaults();
1169
+ }
1170
+
1171
+ /**
1172
+ * Workaround to replace the callback functions with empty json array to parse configuration
1173
+ *
1174
+ * @param $code
1175
+ * @return string|string[]
1176
+ */
1177
+ private function replace_the_callback_functions_to_parse_configuration($code)
1178
+ {
1179
+ $callback_position = strpos($code, 'callback');
1180
+ $opened_callback_braces = strpos($code, '{', $callback_position);
1181
+ $closing_callback_braces = $this->find_closing_bracket($code, $opened_callback_braces);
1182
+
1183
+ return substr_replace($code, '{', $opened_callback_braces, $closing_callback_braces - $opened_callback_braces);
1184
+ }
1185
+
1186
+ /**
1187
+ * @param $string
1188
+ * @param $open_position
1189
+ * @return mixed
1190
+ */
1191
+ private function find_closing_bracket($string, $open_position)
1192
+ {
1193
+ $close_pos = $open_position;
1194
+ $counter = 1;
1195
+ while ($counter > 0) {
1196
+
1197
+ // To Avoid the infinity loop
1198
+ if (!isset($string[$close_pos + 1])) {
1199
+ break;
1200
+ }
1201
+
1202
+ $c = $string[++$close_pos];
1203
+ if ($c == '{') {
1204
+ $counter++;
1205
+ } else if ($c == '}') {
1206
+ $counter--;
1207
+ }
1208
+ }
1209
+
1210
+ return $close_pos;
1211
+ }
1212
+
1213
+ /**
1214
+ * Compare between Iubenda DB version and This version and
1215
+ *
1216
+ * return true if DB version is lower than this version
1217
+ * return false if DB version is equal or more than this version
1218
+ *
1219
+ * @return bool|int
1220
+ */
1221
+ private function compare_iub_plugin_versions()
1222
+ {
1223
+ $db_version = get_option( 'iubenda_cookie_law_version' ) ?: '2.5.91';
1224
+ return version_compare( $db_version, $this->version, '<' );
1225
+ }
1226
+
1227
+ /**
1228
+ * Decide which will be included into footer (Block or Widget)
1229
+ */
1230
+ public function assign_legal_block_or_widget()
1231
+ {
1232
+ // If current theme supports widget
1233
+ if ($this->widget->check_current_theme_supports_widget()) {
1234
+ do_action('iubenda_assign_widget_to_first_sidebar');
1235
+ }
1236
+
1237
+ // if current theme supports blocks
1238
+ if ($this->block->check_current_theme_supports_blocks()) {
1239
+ do_action('iubenda_attach_block_in_footer');
1240
+ }
1241
+ }
1242
+
1243
+ /**
1244
+ * Check if we support current theme to attach legal
1245
+ */
1246
+ public function check_if_we_support_current_theme_to_attach_legal()
1247
+ {
1248
+ if ($this->widget->check_current_theme_supports_widget() || $this->block->check_current_theme_supports_blocks()) {
1249
+ return true;
1250
+ }
1251
+
1252
+ return false;
1253
+ }
1254
+
1255
+ /**
1256
+ * Check if cookie solution service is activated and configured
1257
+ */
1258
+ private function is_cs_service_enabled_and_configured(): bool {
1259
+ $product_helper = new ProductHelper();
1260
+
1261
+ return ($product_helper->is_cs_service_enabled() && $product_helper->is_cs_service_configured());
1262
+ }
1263
+
1264
  }
1265
 
1266
+ if (!function_exists('iub_array_get')) {
1267
+ function iub_array_get($array, $key, $default = null) {
1268
+ if (!(is_array($array) || $array instanceof ArrayAccess)) {
1269
+ return $default instanceof Closure ? $default() : $default;
1270
+ }
1271
+
1272
+ if (is_null($key)) {
1273
+ return $array;
1274
+ }
1275
+
1276
+ if (array_key_exists($key, $array)) {
1277
+ return $array[$key];
1278
+ }
1279
+
1280
+ if (strpos($key, '.') === false) {
1281
+ return $array[$key] ?? ($default instanceof Closure ? $default() : $default);
1282
+ }
1283
+
1284
+ foreach (explode('.', $key) as $segment) {
1285
+ if ((is_array($array) || $array instanceof ArrayAccess) && (array_key_exists($segment, $array))) {
1286
+ $array = $array[$segment];
1287
+ } else {
1288
+ return $default instanceof Closure ? $default() : $default;
1289
+ }
1290
+ }
1291
+
1292
+ return $array;
1293
+ }
1294
+ }
1295
+
1296
+ if (!function_exists('__iub_trans')) {
1297
+ /**
1298
+ * @param $string
1299
+ * @param $textDomain
1300
+ * @param $locale
1301
+ * @return string|void
1302
+ */
1303
+ function __iub_trans($string, $locale, $textDomain = 'iubenda' ): string
1304
+ {
1305
+ global $l10n;
1306
+ // Take a backup of textDomain
1307
+ if (isset($l10n[$textDomain])) {
1308
+ $backup = $l10n[$textDomain];
1309
+ }
1310
+ load_textdomain($textDomain, IUBENDA_PLUGIN_PATH . 'languages/'.$textDomain.'-'. $locale . '.mo');
1311
+ $translation = __($string,$textDomain);
1312
+
1313
+ // update back the backup of textDomain if isset
1314
+ if (isset($backup)) {
1315
+ $l10n[$textDomain] = $backup;
1316
+ }
1317
+ return $translation;
1318
+ }
1319
+ }
1320
+
1321
+ /**
1322
+ * add stars in iubenda plugin meta
1323
+ */
1324
+ add_filter('plugin_row_meta' , 'iubenda_add_plugin_meta_links', 10, 2);
1325
+ if ( ! function_exists('iubenda_add_plugin_meta_links') ) {
1326
+ function iubenda_add_plugin_meta_links($meta_fields, $file) {
1327
+ if ( plugin_basename(__FILE__) == $file ) {
1328
+ $plugin_url = "https://wordpress.org/support/plugin/iubenda-cookie-law-solution/reviews/?rate=5#new-post";
1329
+ $meta_fields[] = "<a href='" . esc_url($plugin_url) ."' target='_blank' title='" . esc_html__('Rate', 'iubenda') . "'>
1330
+ <i class='iubenda-rate-stars'>"
1331
+ . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
1332
+ . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
1333
+ . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
1334
+ . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
1335
+ . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
1336
+ . "</i></a>";
1337
+
1338
+ }
1339
+
1340
+ return $meta_fields;
1341
+ }
1342
+ }
1343
  /**
1344
  * Initialise iubenda Cookie Solution
1345
  *
1346
+ * @return iubenda
1347
  */
1348
  function iubenda() {
1349
  static $instance;
js/admin.js DELETED
@@ -1,282 +0,0 @@
1
- ( function ( $ ) {
2
-
3
- $(function() {
4
- // parse args
5
- var args = iubAdminArgs;
6
-
7
- // parser options
8
- $( '#iub_parse' ).change( function () {
9
- if ( $( this ).is( ':checked' ) ) {
10
- $( '#iub_parser_engine_container' ).slideDown( 'fast' );
11
- } else {
12
- $( '#iub_parser_engine_container' ).slideUp( 'fast' );
13
- }
14
- } );
15
-
16
- // amp options
17
- $( '#iub_amp_support' ).change( function () {
18
- if ( $( this ).is( ':checked' ) ) {
19
- $( '#iub_amp_options_container' ).slideDown( 'fast' );
20
- } else {
21
- $( '#iub_amp_options_container' ).slideUp( 'fast' );
22
- }
23
- } );
24
-
25
- // amp options
26
- $( 'input.iub_amp_source' ).change( function () {
27
- var value = $( 'input.iub_amp_source:checked' ).val();
28
-
29
- if ( value === 'remote' ) {
30
- $( '#iub_amp_template-local' ).fadeOut( 'fast', function () {
31
- $( '#iub_amp_template-remote' ).fadeIn( 'fast' );
32
- } );
33
- } else {
34
- $( '#iub_amp_template-remote' ).fadeOut( 'fast', function () {
35
- $( '#iub_amp_template-local' ).fadeIn( 'fast' );
36
- } );
37
- }
38
- } );
39
-
40
- // move notices
41
- var errors = $( '.settings-error' ).detach();
42
-
43
- $( '.iubenda-link' ).after( errors );
44
-
45
- // Help tabs
46
- $( '.contextual-help-tabs a' ).off( 'click' ).click( function ( e ) {
47
- var link = $( this ),
48
- panel,
49
- panelParent;
50
-
51
- e.preventDefault();
52
-
53
- // don't do anything if the click is for the tab already showing.
54
- if ( link.is( '.active a' ) )
55
- return false;
56
-
57
- panelParent = link.closest( '.contextual-help-wrap' );
58
-
59
- // links
60
- $( panelParent ).find( '.contextual-help-tabs .active' ).removeClass( 'active' );
61
- link.parent( 'li' ).addClass( 'active' );
62
-
63
- panel = $( link.attr( 'href' ) );
64
-
65
- // panels
66
- $( panelParent ).find( '.help-tab-content' ).not( panel ).removeClass( 'active' ).hide();
67
- panel.addClass( 'active' ).show();
68
- } );
69
-
70
- // Preferences fields
71
- var preferencesID = $( '.preferences-field' ).length;
72
-
73
- // Add new preferences field
74
- $( document ).on( 'click', '.add-preferences-field', function ( e ) {
75
- e.preventDefault();
76
-
77
- $( '#postbox-container-2' ).change();
78
-
79
- var html = $( '#preferences-field-template' ).html();
80
- html = html.replace( /__PREFERENCE_ID__/g, preferencesID++ );
81
-
82
- $( '.preferences-table .add-preferences-field' ).closest( 'tr' ).before( '<tr class="preferences-field options-field" style="display: none;">' + html + '</tr>' );
83
-
84
- var last = $( '.preferences-field' ).last();
85
-
86
- last.fadeIn( 300 );
87
- } );
88
-
89
- // Remove preferences field
90
- $( document ).on( 'click', '.remove-preferences-field', function ( e ) {
91
- e.preventDefault();
92
-
93
- $( '#postbox-container-2' ).change();
94
-
95
- $( this ).closest( '.preferences-field' ).fadeOut( 300, function () {
96
- $( this ).remove();
97
- } );
98
- } );
99
-
100
- // Exclude fields
101
- var excludeID = $( '.exclude-field' ).length;
102
-
103
- // Add new preferences field
104
- $( document ).on( 'click', '.add-exclude-field', function ( e ) {
105
- e.preventDefault();
106
-
107
- console.log( this );
108
-
109
- $( '#postbox-container-2' ).change();
110
-
111
- var html = $( '#exclude-field-template' ).html();
112
- html = html.replace( /__EXCLUDE_ID__/g, excludeID++ );
113
-
114
- $( '.exclude-table .add-exclude-field' ).closest( 'tr' ).before( '<tr class="exclude-field options-field" style="display: none;">' + html + '</tr>' );
115
-
116
- var last = $( '.exclude-field' ).last();
117
-
118
- last.fadeIn( 300 );
119
- } );
120
-
121
- // Remove exclude field
122
- $( document ).on( 'click', '.remove-exclude-field', function ( e ) {
123
- e.preventDefault();
124
-
125
- $( '#postbox-container-2' ).change();
126
-
127
- $( this ).closest( '.exclude-field' ).fadeOut( 300, function () {
128
- $( this ).remove();
129
- } );
130
- } );
131
-
132
- // Legal notices fields
133
- var legalNoticesID = $( '.legal_notices-field' ).length;
134
-
135
- // Add new preferences field
136
- $( document ).on( 'click', '.add-legal_notices-field', function ( e ) {
137
- e.preventDefault();
138
-
139
- $( '#postbox-container-2' ).change();
140
-
141
- var html = $( '#legal_notices-field-template' ).html();
142
- html = html.replace( /__LEGAL_NOTICE_ID__/g, legalNoticesID++ );
143
-
144
- console.log( html );
145
-
146
- $( '.legal_notices-table .add-legal_notices-field' ).closest( 'tr' ).before( '<tr class="legal_notices-field options-field" style="display: none;">' + html + '</tr>' );
147
-
148
- var last = $( '.legal_notices-field' ).last();
149
-
150
- last.fadeIn( 300 );
151
- } );
152
-
153
- // Remove legal notices field
154
- $( document ).on( 'click', '.remove-legal_notices-field', function ( e ) {
155
- e.preventDefault();
156
-
157
- $( '#postbox-container-2' ).change();
158
-
159
- $( this ).closest( '.legal_notices-field' ).fadeOut( 300, function () {
160
- $( this ).remove();
161
- } );
162
- } );
163
-
164
- // add new script field
165
- $( document ).on( 'click', '.add-custom-script-field', function( e ) {
166
- e.preventDefault();
167
-
168
- $( this ).before( '<div class="custom-script-field" style="display: none;">' + $( '#custom-script-field-template' ).html() + '</div>' );
169
- $( '#tab-panel-scripts' ).find( '.custom-script-field' ).last().fadeIn( 300 );
170
- } );
171
-
172
- // remove custom script field
173
- $( document ).on( 'click', '.remove-custom-script-field', function( e ) {
174
- e.preventDefault();
175
-
176
- $( this ).closest( '.custom-script-field' ).fadeOut( 300, function() {
177
- $( this ).remove();
178
- } );
179
- } );
180
-
181
- // add new iframe field
182
- $( document ).on( 'click', '.add-custom-iframe-field', function( e ) {
183
- e.preventDefault();
184
-
185
- $( this ).before( '<div class="custom-iframe-field" style="display: none;">' + $( '#custom-iframe-field-template' ).html() + '</div>' );
186
- $( '#tab-panel-iframes' ).find( '.custom-iframe-field' ).last().fadeIn( 300 );
187
- } );
188
-
189
- // remove custom iframe field
190
- $( document ).on( 'click', '.remove-custom-iframe-field', function( e ) {
191
- e.preventDefault();
192
-
193
- $( this ).closest( '.custom-iframe-field' ).fadeOut( 300, function() {
194
- $( this ).remove();
195
- } );
196
- } );
197
-
198
- // Remove template fields on save
199
- $( document ).on( 'click', '#publish', function () {
200
- $( '#preferences-field-template' ).remove();
201
- $( '#exclude-field-template' ).remove();
202
- $( '#legal_notices-field-template' ).remove();
203
- } );
204
-
205
- // Confirm form delete
206
- $( document ).on( 'click', '#iubenda-consent-forms .delete-form', function () {
207
- return confirm( args.deleteForm );
208
- } );
209
-
210
- // Handle form fields data
211
- $( document ).on( 'change', '#postbox-container-2', function() {
212
- var fields = {},
213
- fieldsTypes = [ 'subject', 'preferences', 'exclude' ];
214
-
215
- if ( args.formId > 0 ) {
216
- // get all fields
217
- fields.all = $( '.subject-fields-select.select-id option:not([value=""])' ).map( function() { return $( this ).val(); } ).get();
218
-
219
- // get specific fields
220
- $.each( fieldsTypes, function( index, fieldType ) {
221
- fields[fieldType] = [];
222
-
223
- var fieldItems = $( '.' + fieldType + '-field select' );
224
-
225
- // get selected values
226
- $.each( fieldItems, function( index, item ) {
227
- if ( $( item ).val() != '' )
228
- fields[fieldType].push( $( item ).val() );
229
- } );
230
-
231
- fields.fieldType = $.unique( fields[fieldType] );
232
-
233
- // remove available fields if needed
234
- if ( fields[fieldType].length > 0 ) {
235
-
236
- // get options count
237
- var templateItemsCount = $( '.template-field .' + fieldType + '-fields-select option:disabled' ).length;
238
-
239
- // update if options count changed
240
- if ( templateItemsCount !== 0 && fields[fieldType].length != templateItemsCount ) {
241
- // console.log( fields[fieldType] );
242
- }
243
-
244
- // disable add button if needed
245
- if ( fields.all.length == fields[fieldType].length ) {
246
- $( '.add-' + fieldType + '-field' ).attr( 'disabled', 'disabled' );
247
- } else {
248
- $( '.add-' + fieldType + '-field' ).attr( 'disabled', false );
249
- }
250
-
251
- // adjust disabled options
252
- $.each( fields.all, function( index, fieldName ) {
253
- if ( $.inArray( fieldName, fields[fieldType] ) < 0 ) {
254
- // options field
255
- $( '.' + fieldType + '-fields-select option:not(:checked)[value="' + fieldName + '"]' ).attr( 'disabled', false );
256
- // template field
257
- $( '.template-field .' + fieldType + '-fields-select option[value="' + fieldName + '"]' ).attr( 'disabled', false );
258
- } else {
259
- $( '.' + fieldType + '-fields-select option:not(:checked)[value="' + fieldName + '"]' ).attr( 'disabled', 'disabled' );
260
- $( '.template-field .' + fieldType + '-fields-select option[value="' + fieldName + '"]' ).attr( 'disabled', 'disabled' );
261
- }
262
- } );
263
- }
264
- } );
265
-
266
- // console.log( fields );
267
- }
268
-
269
- } );
270
-
271
- // Force trigger change on document ready
272
- $( function() {
273
- $( '#postbox-container-2' ).change();
274
- } );
275
-
276
- $( document ).on( 'mouseenter mouseleave', '#postbox-container-2 .options-field, #postbox-container-2 .submit-field', function() {
277
- $( '#postbox-container-2' ).change();
278
- } );
279
-
280
- } );
281
-
282
- } )( jQuery );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/iubenda-cookie-law-solution-it_IT.mo DELETED
Binary file
languages/iubenda-cookie-law-solution-it_IT.po DELETED
@@ -1,863 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Iubenda Cookie Solution\n"
4
- "POT-Creation-Date: 2020-02-06 13:33+0100\n"
5
- "PO-Revision-Date: 2020-02-06 13:34+0100\n"
6
- "Last-Translator: \n"
7
- "Language-Team: \n"
8
- "Language: it\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.3\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: includes/amp.php:126
20
- msgid "Loading"
21
- msgstr ""
22
-
23
- #: includes/amp.php:258
24
- msgid "AMP Cookie Consent"
25
- msgstr ""
26
-
27
- #: includes/forms-list-table.php:92
28
- msgid "Form Title"
29
- msgstr "Nome del form"
30
-
31
- #: includes/forms-list-table.php:93
32
- msgid "Form ID"
33
- msgstr "ID del form"
34
-
35
- #: includes/forms-list-table.php:94
36
- #, fuzzy
37
- #| msgid "Source"
38
- msgid "Form Source"
39
- msgstr "Fonte"
40
-
41
- #: includes/forms-list-table.php:95
42
- msgid "Fields"
43
- msgstr "Campi"
44
-
45
- #: includes/forms-list-table.php:96
46
- msgid "Date"
47
- msgstr "Data"
48
-
49
- #: includes/forms-list-table.php:165
50
- msgid "Edit"
51
- msgstr "Modifica"
52
-
53
- #: includes/forms-list-table.php:166
54
- msgid "Delete"
55
- msgstr "Elimina"
56
-
57
- #: includes/forms-list-table.php:277
58
- msgid "Filter"
59
- msgstr "Filtra"
60
-
61
- #: includes/forms-list-table.php:294
62
- msgid "Filter by source"
63
- msgstr "Filtra per fonte"
64
-
65
- #: includes/forms-list-table.php:296
66
- msgid "All form sources"
67
- msgstr "Tutte le fonti"
68
-
69
- #: includes/forms-list-table.php:364
70
- msgid "No forms found."
71
- msgstr "Nessun form trovato."
72
-
73
- #: includes/forms.php:149 includes/settings.php:138
74
- msgid "Forms"
75
- msgstr "Form"
76
-
77
- #: includes/forms.php:150
78
- msgid "Form"
79
- msgstr "Form"
80
-
81
- #: includes/forms.php:566 includes/forms.php:580
82
- msgid "First name"
83
- msgstr "Nome"
84
-
85
- #: includes/forms.php:572 includes/forms.php:592
86
- msgid "Last name"
87
- msgstr "Cognome"
88
-
89
- #: includes/forms.php:586
90
- msgid "Middle name"
91
- msgstr "Secondo nome"
92
-
93
- #: includes/settings.php:43 includes/settings.php:44 includes/settings.php:45
94
- #: includes/settings.php:46 includes/settings.php:47
95
- msgid "string"
96
- msgstr "stringa"
97
-
98
- #: includes/settings.php:59 includes/settings.php:183
99
- msgid "Cookie Solution"
100
- msgstr "Cookie Solution"
101
-
102
- #: includes/settings.php:65 includes/settings.php:184
103
- msgid "Consent Solution"
104
- msgstr "Consent Solution"
105
-
106
- #: includes/settings.php:73
107
- msgid "Not set"
108
- msgstr ""
109
-
110
- #: includes/settings.php:74
111
- msgid "Strictly necessary"
112
- msgstr ""
113
-
114
- #: includes/settings.php:75
115
- msgid "Basic interactions & functionalities"
116
- msgstr ""
117
-
118
- #: includes/settings.php:76
119
- #, fuzzy
120
- #| msgid "Experimental (enhances performance)"
121
- msgid "Experience enhancement"
122
- msgstr "Sperimentale (performance migliorata)"
123
-
124
- #: includes/settings.php:77
125
- msgid "Analytics"
126
- msgstr ""
127
-
128
- #: includes/settings.php:78
129
- msgid "Targeting & Advertising"
130
- msgstr ""
131
-
132
- #: includes/settings.php:125
133
- msgid "Code"
134
- msgstr "Codice"
135
-
136
- #: includes/settings.php:126
137
- msgid "Google AMP"
138
- msgstr ""
139
-
140
- #: includes/settings.php:127
141
- #, fuzzy
142
- #| msgid "Scripts blocking"
143
- msgid "Script blocking"
144
- msgstr "Blocco preventivo dei codici"
145
-
146
- #: includes/settings.php:128
147
- msgid "Custom scripts"
148
- msgstr "Script personalizzati"
149
-
150
- #: includes/settings.php:129
151
- msgid "Content type"
152
- msgstr "Tipo di contenuto"
153
-
154
- #: includes/settings.php:130
155
- msgid "RSS feed"
156
- msgstr "Feed RSS"
157
-
158
- #: includes/settings.php:131
159
- msgid "POST requests"
160
- msgstr "Richieste POST"
161
-
162
- #: includes/settings.php:132
163
- msgid "Menu position"
164
- msgstr "Posizione menu"
165
-
166
- #: includes/settings.php:133
167
- msgid "Deactivation"
168
- msgstr "Disattivazione"
169
-
170
- #: includes/settings.php:139
171
- #, fuzzy
172
- #| msgid "Public API Key"
173
- msgid "Public Api Key"
174
- msgstr "Chiave API pubblica"
175
-
176
- #: includes/settings.php:142 includes/settings.php:146
177
- msgid "Field Mapping"
178
- msgstr "Mapping dei campi"
179
-
180
- #: includes/settings.php:206
181
- msgid "Are you sure you want to delete this form?"
182
- msgstr "Sei sicuro di voler eliminare questo form?"
183
-
184
- #: includes/settings.php:541
185
- msgid "You don't have permission to access this page."
186
- msgstr "Non disponi dell'autorizzazione per accedere a questa pagina."
187
-
188
- #: includes/settings.php:567
189
- #, fuzzy
190
- #| msgid ""
191
- #| "This plugin is the easiest and most comprehensive way to adapt your "
192
- #| "WordPress site to the European cookie law. Upon your user's first visit, "
193
- #| "the plugin will take care of collecting their consent, of blocking the "
194
- #| "most popular among the scripts that install cookies and subsequently "
195
- #| "reactivate these scripts as soon as consent is provided. The basic "
196
- #| "settings include obtaining consent by a simple scroll action (the most "
197
- #| "effective method) and script reactivation without refreshing the page."
198
- msgid ""
199
- "This plugin is the easiest and most comprehensive way to adapt your "
200
- "WordPress site to the ePrivacy (EU Cookie Law). Upon your users’ first "
201
- "visit, the plugin will take care of collecting their consent, blocking the "
202
- "most popular cookie-scripts and subsequently reactivating these scripts as "
203
- "soon as consent is provided. The basic settings include obtaining consent by "
204
- "a simple scroll action (the most effective method) and script reactivation "
205
- "without refreshing the page (asynchronous script reactivation)."
206
- msgstr ""
207
- "Questo plugin è il modo più semplice e completo per adeguare il tuo sito "
208
- "WordPress alla Direttiva ePrivacy (Cookie Law). Alla prima visita "
209
- "dell'utente il plugin si occuperà di raccoglierne il consenso, bloccare gli "
210
- "script più popolari che installano cookie e riattivarli non appena il "
211
- "consenso viene fornito. Le impostazioni di base includono la raccolta del "
212
- "consenso tramite il semplice scroll (il metodo più efficace) e la "
213
- "riattivazione senza il refresh della pagina."
214
-
215
- #: includes/settings.php:570
216
- msgid ""
217
- "Does the Cookie Solution support IAB’s Transparency and Consent Framework?"
218
- msgstr ""
219
- "La Cookie Solution supporta il Transparency e Consent Framework di IAB?"
220
-
221
- #: includes/settings.php:571
222
- #, fuzzy, php-format
223
- #| msgid ""
224
- #| "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin "
225
- #| "page.</a>"
226
- msgid ""
227
- "Yes it does. You can read more about it <a href=\"%s\" class=\"iubenda-url\" "
228
- "target=\"_blank\">here.</a>"
229
- msgstr ""
230
- "Sì. Visita <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">questa "
231
- "pagina</a> per maggiori dettagli."
232
-
233
- #: includes/settings.php:574
234
- #, fuzzy
235
- #| msgid "Would you like to know more about the Cookie Law?"
236
- msgid "Would you like to know more about the cookie law?"
237
- msgstr "Vuoi saperne di più sulla Cookie Law?"
238
-
239
- #: includes/settings.php:575
240
- #, fuzzy, php-format
241
- #| msgid ""
242
- #| "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete "
243
- #| "guide to the Cookie Law</a>."
244
- msgid ""
245
- "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete "
246
- "guide to the cookie law.</a>"
247
- msgstr ""
248
- "Leggi la nostra <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">guida "
249
- "completa alla Cookie Law</a>."
250
-
251
- #: includes/settings.php:578
252
- msgid "What is the full functionality of the plugin?"
253
- msgstr "Quali sono le funzionalità del plugin?"
254
-
255
- #: includes/settings.php:579
256
- #, fuzzy, php-format
257
- #| msgid ""
258
- #| "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin "
259
- #| "page</a>."
260
- msgid ""
261
- "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin page."
262
- "</a>"
263
- msgstr ""
264
- "Visita la <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">pagina "
265
- "dedicata</a> al plugin."
266
-
267
- #: includes/settings.php:582
268
- msgid "Enter the iubenda code for the Cookie Solution below."
269
- msgstr "Inserisci qui sotto il codice di iubenda per la Cookie Solution."
270
-
271
- #: includes/settings.php:583
272
- #, php-format
273
- msgid ""
274
- "In order to run the plugin, you need to enter the iubenda code that "
275
- "activates the cookie law banner and the cookie policy in the form below. "
276
- "This code can be generated on www.iubenda.com, following <a href=\"%s\" "
277
- "class=\"iubenda-url\" target=\"_blank\">this guide.</a>"
278
- msgstr ""
279
- "Per far funzionare il plugin, è necessario inserire nel form sottostante il "
280
- "codice di iubenda che attiva il cookie banner e la cookie policy. Questo "
281
- "codice può essere generato su www.iubenda.com seguendo le istruzioni "
282
- "contenute in <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">questa "
283
- "guida</a>"
284
-
285
- #: includes/settings.php:588
286
- #, fuzzy
287
- #| msgid ""
288
- #| "Maintaining comprehensive records of consent is a vital part of privacy "
289
- #| "compliance in general but is specifically required under the GDPR. These "
290
- #| "records should include a way of identifying the user, store proof of "
291
- #| "consent, record of the consenting action, and the legal documents "
292
- #| "available to the user at the time of consent, among other things. You can "
293
- #| "read about the <a href=\"https://www.iubenda.com/en/help/5428#records-of-"
294
- #| "consent\" target=\"_blank\">full requirements here</a>."
295
- msgid ""
296
- "Maintaining comprehensive records of consent is a vital part of privacy "
297
- "compliance in general but is specifically required under the GDPR. These "
298
- "records should include a way of identifying the user, store proof of "
299
- "consent, record of the consenting action, and the legal documents available "
300
- "to the user at the time of consent, among other things. You can read about "
301
- "the <a href=\"https://www.iubenda.com/en/help/5428-gdpr-guide#records-of-"
302
- "consent\" target=\"_blank\">full requirements here</a>."
303
- msgstr ""
304
- "Oltre ad essere un elemento vitale per il rispetto della privacy in "
305
- "generale, il mantenimento di un registro dei consensi è specificamente "
306
- "richiesto dal GDPR. Tra le altre cose, tale registro dovrebbe includere un "
307
- "modo per identificare l'utente, la prova del consenso, la registrazione "
308
- "dell'azione di consenso e i documenti legali messi a disposizione "
309
- "dell'utente al momento del consenso. <a href=\"https://www.iubenda.com/it/"
310
- "help/5424#registro-consensi\" target=\"_blank\">Trovi tutti i requisiti qui</"
311
- "a>."
312
-
313
- #: includes/settings.php:613
314
- #, php-format
315
- msgid ""
316
- "If you are using per-purpose script blocking or Reject option please disable "
317
- "the \"Leave scripts untouched on the page if the user has already given "
318
- "consent\" option. <a href=\"%s\" target=\"_self\">Disable now</a>"
319
- msgstr ""
320
-
321
- #: includes/settings.php:638
322
- msgid ""
323
- "AMP configuration file requires HTTPS. Make sure your SSL Certificate is "
324
- "configured correctly."
325
- msgstr ""
326
-
327
- #: includes/settings.php:660
328
- #, php-format
329
- msgid ""
330
- "This plugin drastically reduces the need for direct interventions in the "
331
- "code of the site by integrating with iubenda’s Cookie Solution. It provides "
332
- "a fully customizable cookie banner, dynamically generates a cookie policy <a "
333
- "href=\"%s\" target=\"_blank\">to match the services in use on your site</a>, "
334
- "and, fully manages cookie-related consent – including the blocking of the "
335
- "most common widgets and third-party cookies before consent is received – in "
336
- "order to comply with the GDPR and ePrivacy."
337
- msgstr ""
338
- "Grazie all'integrazione con la Cookie Solution di iubenda, questo plugin "
339
- "riduce drasticamente la necessità di interventi diretti sul codice del sito. "
340
- "Prevede un cookie banner completamente personalizzabile, genera una cookie "
341
- "policy che <a href=\"%s\" target=\"_blank\">rispecchia i servizi in uso dal "
342
- "tuo sito web</a> e gestisce il consenso ai cookie (incluso il blocco "
343
- "automatico dei widget e dei cookie di terza parte più diffusi) in modo da "
344
- "permetterti di rispettare il GDPR e la Direttiva ePrivacy."
345
-
346
- #: includes/settings.php:662
347
- msgid ""
348
- "Maintaining valid records of consent is a vital part of privacy compliance "
349
- "in general, and it is specifically required under the GDPR. These records "
350
- "should include a userid, timestamp, consent proof, record of the consenting "
351
- "action, and the legal documents available to the user at the time of "
352
- "consent, among other things. This plugin is THE most complete solution for "
353
- "recording, sorting and maintaining GDPR records of consent*. The plugin also "
354
- "boasts built-in compatibility with WordPress comment form, Contact Form 7 "
355
- "and WP Forms plugins for your convenience, but can be manually integrated "
356
- "with any type of web-form and can even store consent proofs for consents "
357
- "collected offline (e.g in-store sign-ups) via WP media upload."
358
- msgstr ""
359
- "Il mantenimento di un valido registro dei consensi è un elemento vitale per "
360
- "il rispetto della privacy, ed è specificamente richiesto dal GDPR. Tra le "
361
- "altre cose, questo registro dovrebbe includere l'identificativo dell'utente, "
362
- "il timestamp, la prova del consenso, la registrazione dell'azione di "
363
- "consenso e i documenti legali messi a disposizione dell'utente nel momento "
364
- "in cui il consenso è stato acquisito. Questo plugin è la soluzione più "
365
- "completa per la creazione e la gestione di un registro dei consensi*. Il "
366
- "plugin è compatibile con il modulo dei commenti WordPress e i plugin Contact "
367
- "Form 7 e WP Forms, può essere integrato manualmente con qualsiasi form e può "
368
- "memorizzare la prova del consenso anche per i consensi raccolti offline (ad "
369
- "esempio, le iscrizioni in-store) tramite l'upload dei media WP."
370
-
371
- #: includes/settings.php:680
372
- msgid "Reset to defaults"
373
- msgstr "Ripristina le impostazioni di default"
374
-
375
- #: includes/settings.php:692
376
- msgid "Need support for this plugin?"
377
- msgstr "Serve aiuto per questo plugin?"
378
-
379
- #: includes/settings.php:693
380
- #, php-format
381
- msgid ""
382
- "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">support "
383
- "forum.</a>"
384
- msgstr ""
385
- "Visita il nostro <a href=\"%s\" class=\"iubenda-url\" target=\"_blank"
386
- "\">forum di supporto</a>"
387
-
388
- #: includes/settings.php:737
389
- #, php-format
390
- msgid "Enter the iubenda code for %s."
391
- msgstr "Inserisci il codice di iubenda per %s."
392
-
393
- #: includes/settings.php:748
394
- msgid "Enter the iubenda code."
395
- msgstr "Inserisci il codice di iubenda."
396
-
397
- #: includes/settings.php:775
398
- #, fuzzy
399
- #| msgid "Enter a list of custom scripts (one per line)."
400
- msgid ""
401
- "Provide a list of custom scripts you’d like to block and assign their "
402
- "purpose."
403
- msgstr "Elenca gli script personalizzati (uno per riga)."
404
-
405
- #: includes/settings.php:777 includes/settings.php:784
406
- #, fuzzy
407
- #| msgid "Custom scripts"
408
- msgid "Enter custom script"
409
- msgstr "Script personalizzati"
410
-
411
- #: includes/settings.php:777 includes/settings.php:784
412
- #: includes/settings.php:795 includes/settings.php:802
413
- #: includes/settings.php:1178 includes/settings.php:1205
414
- #: includes/settings.php:1246 includes/settings.php:1274
415
- #: includes/settings.php:1325 includes/settings.php:1341
416
- msgid "Remove"
417
- msgstr "Elimina"
418
-
419
- #: includes/settings.php:793
420
- #, fuzzy
421
- #| msgid "Enter a list of custom iframes (one per line)."
422
- msgid ""
423
- "Provide a list of custom iframes you’d like to block and assign their "
424
- "purpose. "
425
- msgstr "Elenca gli iframe personalizzati (uno per riga)."
426
-
427
- #: includes/settings.php:795 includes/settings.php:802
428
- msgid "Enter custom iframe"
429
- msgstr ""
430
-
431
- #: includes/settings.php:840
432
- #, fuzzy
433
- #| msgid "Automatically block scripts detected by the plugin."
434
- msgid "Automatically block scripts detected by the plugin"
435
- msgstr "Blocca automaticamente gli script rilevati dal plugin."
436
-
437
- #: includes/settings.php:841
438
- #, php-format
439
- msgid ""
440
- "see <a href=\"%s\" target=\"_blank\">our documentation</a> for the list of "
441
- "detected scripts."
442
- msgstr ""
443
- "visita <a href=\"%s\" target=\"_blank\">la nostra documentazione</a> per la "
444
- "lista degli script rilevati automaticamente dal plugin."
445
-
446
- #: includes/settings.php:844
447
- msgid "Primary"
448
- msgstr "Primario"
449
-
450
- #: includes/settings.php:845
451
- msgid "Secondary"
452
- msgstr "Secondario"
453
-
454
- #: includes/settings.php:846
455
- msgid "Select parsing engine."
456
- msgstr "Seleziona il motore di parsing."
457
-
458
- #: includes/settings.php:849
459
- msgid ""
460
- "Leave scripts untouched on the page if the user has already given consent"
461
- msgstr ""
462
- "Lascia gli script intatti sulla pagina se l'utente ha già prestato il "
463
- "consenso"
464
-
465
- #: includes/settings.php:850
466
- #, fuzzy
467
- #| msgid ""
468
- #| "improves performance, highly recommended, to be deactivated only if your "
469
- #| "site uses a caching system"
470
- msgid ""
471
- "improves performance, highly recommended, to be deactivated only if your "
472
- "site uses a caching system or if you're collecting per-category consent."
473
- msgstr ""
474
- "migliora le prestazioni, altamente consigliato, da disattivare solo qualora "
475
- "il tuo sito utilizzi un sistema di cache"
476
-
477
- #: includes/settings.php:864
478
- msgid ""
479
- "Restrict the plugin to run only for requests that have \"Content-type: "
480
- "text / html\" (recommended)"
481
- msgstr ""
482
- "Restringi l'esecuzione del plugin alle sole richieste che presentano "
483
- "\"Content-type: text/html\" (consigliato)"
484
-
485
- #: includes/settings.php:876
486
- msgid "Do not run the plugin inside the RSS feed (recommended)"
487
- msgstr "Non eseguire il plugin all'interno dei Feed RSS (consigliato)"
488
-
489
- #: includes/settings.php:888
490
- #, fuzzy
491
- #| msgid "Do not run the plugin inside the RSS feed (recommended)"
492
- msgid "Do not run the plugin on POST requests (recommended)"
493
- msgstr "Non eseguire il plugin per richieste POST (consigliato)"
494
-
495
- #: includes/settings.php:900
496
- msgid "Top menu"
497
- msgstr "Menu principale"
498
-
499
- #: includes/settings.php:901
500
- msgid "Submenu"
501
- msgstr "Sottomenu"
502
-
503
- #: includes/settings.php:902
504
- msgid ""
505
- "Select whether to display iubenda in a top admin menu or the Settings "
506
- "submenu."
507
- msgstr ""
508
- "Scegli se visualizzare iubenda in una voce di menu principale del pannello "
509
- "admin o in un sottomenu della scheda Impostazioni."
510
-
511
- #: includes/settings.php:914
512
- msgid "Enable Google AMP support."
513
- msgstr ""
514
-
515
- #: includes/settings.php:915
516
- #, php-format
517
- msgid ""
518
- "This feature enables iubenda on AMP pages via the <a href=\"%s\" target="
519
- "\"_blank\">AMP</a> and <a href=\"%s\" target=\"_blank\">AMP for WP</a> "
520
- "plugins. AMP requires specific configuration parameters and a page hosted on "
521
- "your domain where the configuration is loaded from. <a href=\"%s\" target="
522
- "\"_blank\">Learn more on iubenda and AMP</a>."
523
- msgstr ""
524
-
525
- #: includes/settings.php:918
526
- msgid "Auto-generated configuration file"
527
- msgstr ""
528
-
529
- #: includes/settings.php:919
530
- msgid "Custom configuration file"
531
- msgstr ""
532
-
533
- #: includes/settings.php:920
534
- msgid "Select the iubenda AMP configuration file location."
535
- msgstr ""
536
-
537
- #: includes/settings.php:925
538
- msgid ""
539
- "No file available. Save changes to generate iubenda AMP configuration file."
540
- msgstr ""
541
-
542
- #: includes/settings.php:953
543
- msgid ""
544
- "If you're experiencing issues with AMP setup download the generated iubenda "
545
- "AMP configuration file, upload it to any SSL server and paste the file link "
546
- "to the field above."
547
- msgstr ""
548
-
549
- #: includes/settings.php:955
550
- #, php-format
551
- msgid ""
552
- "Seeing the AMP cookie notice when testing from Google but not when visiting "
553
- "your AMP pages directly? <a href=\"%s\" target=\"_blank\">Learn how to fix "
554
- "it</a>."
555
- msgstr ""
556
-
557
- #: includes/settings.php:968
558
- msgid "Delete all plugin data upon deactivation"
559
- msgstr "Vuoi eliminare tutti i dati del plugin al momento della disattivazione"
560
-
561
- #: includes/settings.php:981
562
- msgid "Enter your iubenda Javascript library public API key."
563
- msgstr ""
564
- "Inserisci la chiave API pubblica per la libreria JavaScript di iubenda."
565
-
566
- #: includes/settings.php:997
567
- msgid ""
568
- "This section lists the forms available for field mapping. The plugin "
569
- "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
570
- "Checkout and WP Forms."
571
- msgstr ""
572
- "Questa sezione elenca i form disponibili al mapping. Al momento il plugin "
573
- "supporta e rileva: Commenti WordPress, Contact Form 7, WooCommerce Checkout "
574
- "e WP Forms."
575
-
576
- #: includes/settings.php:1058
577
- #, php-format
578
- msgid "%s form title."
579
- msgstr "%s nome del form."
580
-
581
- #: includes/settings.php:1058
582
- msgid "Unknown"
583
- msgstr "Sconosciuto"
584
-
585
- #: includes/settings.php:1060
586
- msgid "Available form fields:"
587
- msgstr "Campi disponibili:"
588
-
589
- #: includes/settings.php:1066
590
- msgid "Publish"
591
- msgstr "Pubblica"
592
-
593
- #: includes/settings.php:1071
594
- msgid "Status"
595
- msgstr "Stato"
596
-
597
- #: includes/settings.php:1084
598
- msgid "Cancel"
599
- msgstr "Annulla"
600
-
601
- #: includes/settings.php:1089
602
- msgid "Save"
603
- msgstr "Salva"
604
-
605
- #: includes/settings.php:1102
606
- msgid "Map fields"
607
- msgstr "Mappa i campi"
608
-
609
- #: includes/settings.php:1108
610
- msgid "Subject fields"
611
- msgstr "Utente"
612
-
613
- #: includes/settings.php:1109
614
- #, fuzzy
615
- #| msgid ""
616
- #| "Subject fields allow you to store a series of identifying values about "
617
- #| "your individual subjects/users. Please map the subject field with the "
618
- #| "corresponding form fields where applicable."
619
- msgid ""
620
- "Subject fields allow you to store a series of identifying values about your "
621
- "individual subjects/users. Please map the subject field with the "
622
- "corresponding form fields where applicable."
623
- msgstr ""
624
- "Questi campi ti permettono di memorizzare una serie di valori identificativi "
625
- "dell'utente. Associa gli attributi dell'utente ai corrispondenti campi del "
626
- "form (quando applicabile)."
627
-
628
- #: includes/settings.php:1114
629
- msgid "Subject field"
630
- msgstr "Attributo"
631
-
632
- #: includes/settings.php:1115 includes/settings.php:1159
633
- msgid "Form field"
634
- msgstr "Campo del form"
635
-
636
- #: includes/settings.php:1121
637
- msgid "Autogenerated"
638
- msgstr "Generato automaticamente"
639
-
640
- #: includes/settings.php:1121
641
- msgid "None"
642
- msgstr "Nessuno"
643
-
644
- #: includes/settings.php:1152
645
- msgid "Preferences fields"
646
- msgstr "Preferenze"
647
-
648
- #: includes/settings.php:1153
649
- msgid ""
650
- "Preferences fields allow you to store a record of the various opt-ins points "
651
- "at which the user has agreed or given consent, such as fields for agreeing "
652
- "to terms and conditions, newsletter, profiling, etc. *Please create at least "
653
- "one preference field."
654
- msgstr ""
655
- "Questi campi ti permettono di memorizzare a cosa l'utente ha prestato il "
656
- "proprio consenso, come ad esempio i termini e condizioni, la newsletter la "
657
- "profilazione, ecc. *Si prega di creare almeno un campo."
658
-
659
- #: includes/settings.php:1158
660
- msgid "Preferences field"
661
- msgstr "Campo delle preferenze"
662
-
663
- #: includes/settings.php:1164 includes/settings.php:1190
664
- #: includes/settings.php:1315 includes/settings.php:1325
665
- #: includes/settings.php:1341
666
- msgid "Enter field name"
667
- msgstr "Aggiungi il nome di un campo"
668
-
669
- #: includes/settings.php:1214
670
- msgid "Add New Preference"
671
- msgstr "Aggiungi nuova preferenza"
672
-
673
- #: includes/settings.php:1221
674
- msgid "Exclude fields"
675
- msgstr "Esclusioni"
676
-
677
- #: includes/settings.php:1222
678
- msgid ""
679
- "Exclude fields allow you to create a list of fields that you would like to "
680
- "exclude from your Consent Solution recorded proofs (for e.g. password or "
681
- "other fields not related to the consent)."
682
- msgstr ""
683
- "Qui puoi creare una lista dei campi che desideri escludere dalle prove del "
684
- "consenso memorizzate dalla Consent Solution (ad es. password o altri campi "
685
- "non correlati)."
686
-
687
- #: includes/settings.php:1227
688
- msgid "Exclude field"
689
- msgstr "Campi esclusi"
690
-
691
- #: includes/settings.php:1284
692
- msgid "Add New Exclude"
693
- msgstr "Aggiungi una nuova esclusione"
694
-
695
- #: includes/settings.php:1294
696
- msgid "Legal Notices"
697
- msgstr "Note legali"
698
-
699
- #: includes/settings.php:1300
700
- msgid "Legal documents"
701
- msgstr "Documenti legali"
702
-
703
- #: includes/settings.php:1301
704
- msgid ""
705
- "In general, it’s important that you declare which legal documents are being "
706
- "agreed upon when each consent is collected. However, if you use iubenda for "
707
- "your legal documents, it is *required* that you identify the documents by "
708
- "selecting them here."
709
- msgstr ""
710
- "In generale, è importante dichiarare quali documenti legali vengono "
711
- "accettati al momento del conferimento del consenso. Se usi iubenda per le "
712
- "tue informative, *devi* identificare tali documenti selezionandoli qui."
713
-
714
- #: includes/settings.php:1306
715
- msgid "Identifier"
716
- msgstr "Identificatore"
717
-
718
- #: includes/settings.php:1315
719
- msgid "Please select each legal document available on your site."
720
- msgstr "Seleziona tutti i documenti legali presenti sul tuo sito."
721
-
722
- #: includes/settings.php:1331
723
- msgid "Alternatively, you may add your own custom document identifiers."
724
- msgstr "In alternativa, puoi aggiungere degli identificatori personalizzati."
725
-
726
- #: includes/settings.php:1350
727
- msgid "Add New Document"
728
- msgstr "Aggiungi un nuovo documento"
729
-
730
- #: includes/settings.php:1471 includes/settings.php:1503
731
- #: includes/settings.php:1688
732
- msgid "Settings saved."
733
- msgstr "Impostazioni salvate."
734
-
735
- #: includes/settings.php:1483 includes/settings.php:1508
736
- msgid "Settings restored to defaults."
737
- msgstr "Impostazioni di default ripristinate."
738
-
739
- #: includes/settings.php:1543
740
- #, php-format
741
- msgid ""
742
- "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" target="
743
- "\"_blank\">Discussion settings</a>."
744
- msgstr ""
745
- "Abilita per i commenti la possibilità di attivare o disattivare la "
746
- "memorizzazione dei dati personali in un cookie. Per farlo, vai su <a href="
747
- "\"%s\" target=\"_blank\">Impostazioni discussione</a>."
748
-
749
- #: includes/settings.php:1563
750
- msgid "No forms or form changes detected."
751
- msgstr "Nessun form o modifica rilevati."
752
-
753
- #: includes/settings.php:1623
754
- msgid "Form saving failed. Please fill the Subject and Preferences fields."
755
- msgstr "Salvataggio del form fallito. Compila i campi Utente e Preferenze."
756
-
757
- #: includes/settings.php:1647
758
- #, fuzzy
759
- #| msgid "Settings applied successfully"
760
- msgid "Form saved successfully - form status changed to Mapped."
761
- msgstr "Form salvato con successo - Stato aggiornato a Mappato."
762
-
763
- #: includes/settings.php:1650
764
- msgid "Form updated successfully."
765
- msgstr "Form aggiornato con successo."
766
-
767
- #: includes/settings.php:1653
768
- msgid "Form saving failed."
769
- msgstr "Salvataggio del form fallito."
770
-
771
- #: includes/settings.php:1670
772
- #, fuzzy
773
- #| msgid "Settings applied successfully"
774
- msgid "Form deleted successfully."
775
- msgstr "Form eliminato con successo."
776
-
777
- #: includes/settings.php:1672
778
- msgid "Form delete failed."
779
- msgstr "Eliminazione del form fallita."
780
-
781
- #: includes/settings.php:1748
782
- msgid "Dismiss this notice."
783
- msgstr "Chiudi questo avviso."
784
-
785
- #: includes/settings.php:1424
786
- msgid "Currently, you do not have write permission for <i>%s</i>. For instructions on how to fix this, please read <a target=\"_blank\" href=\"%s\">our guide</a>."
787
- msgstr "Al momento non disponi dei permessi di scrittura per <i>%s</i>. Leggi la <a target=\"_blank\" href=\"%s\">nostra guida</a> per istruzioni su come risolvere il problema."
788
-
789
- #, fuzzy
790
- #~| msgid "Settings applied successfully"
791
- #~ msgid "Forms detected successfully."
792
- #~ msgstr "Impostazioni salvate con successo."
793
-
794
- #, fuzzy
795
- #~| msgid "Content type"
796
- #~ msgid "Contents"
797
- #~ msgstr "Tipo di contenuto"
798
-
799
- #~ msgid "Want to try a beta version of this plugin with the latest features?"
800
- #~ msgstr ""
801
- #~ "Vuoi provare una versione Beta di questo plugin, con le funzionalità più "
802
- #~ "recenti?"
803
-
804
- #~ msgid ""
805
- #~ "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank"
806
- #~ "\">documentation pages</a> and follow the instructions to install a beta "
807
- #~ "version."
808
- #~ msgstr ""
809
- #~ "Visita la <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">nostra "
810
- #~ "documentazione</a> e segui le istruzioni per installare una versione Beta."
811
-
812
- #~ msgid "Default"
813
- #~ msgstr "Default"
814
-
815
- #~ msgid "Experimental"
816
- #~ msgstr "Sperimentale"
817
-
818
- #~ msgid "What’s the full functionality of the plugin?"
819
- #~ msgstr "Quali sono le funzionalità del plugin?"
820
-
821
- #~ msgid "Select a language to correctly pair it with your script"
822
- #~ msgstr "Seleziona una lingua a cui associare il tuo codice"
823
-
824
- #~ msgid "Automatically blocks scripts detected by the plugin"
825
- #~ msgstr "Effettua il blocco automatico degli script rilevati dal plugin"
826
-
827
- #~ msgid ""
828
- #~ "see <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">our "
829
- #~ "documentation</a> for the list of detected scripts."
830
- #~ msgstr ""
831
- #~ "consulta la <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">nostra "
832
- #~ "documentazione</a> per la lista di script rilevati."
833
-
834
- #~ msgid "Parsing engine"
835
- #~ msgstr "Parsing engine"
836
-
837
- #~ msgid ""
838
- #~ "Leaves scripts untouched on the page if the user has already given consent"
839
- #~ msgstr ""
840
- #~ "Lascia intatti gli script della pagina se l'utente ha già dato il consenso"
841
-
842
- #~ msgid "Applies special optimizations in cases with faulty output"
843
- #~ msgstr "Applica ottimizzazioni speciali in caso di errori con l'output"
844
-
845
- #~ msgid ""
846
- #~ "only select this option if you had performance problems or if you notice "
847
- #~ "that the blocking of code is run several times"
848
- #~ msgstr ""
849
- #~ "attiva questa opzione solo qualora avessi problemi di performance o "
850
- #~ "notassi che il blocco dei codici viene applicato più volte"
851
-
852
- #~ msgid "Parsed with iubenda experimental class in %s sec."
853
- #~ msgstr "Parsed with iubenda experimental class in %s sec."
854
-
855
- #~ msgid "Parsed with iubenda default class in %s sec."
856
- #~ msgstr "Parsed with iubenda default class in %s sec."
857
-
858
- #~ msgid ""
859
- #~ "see <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">our "
860
- #~ "documentation</a> for the list of detected scripts this guide."
861
- #~ msgstr ""
862
- #~ "consulta la <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">nostra "
863
- #~ "documentazione</a> per la lista di script rilevati."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/iubenda-cookie-law-solution.pot DELETED
@@ -1,647 +0,0 @@
1
- #, fuzzy
2
- msgid ""
3
- msgstr ""
4
- "Project-Id-Version: Iubenda Cookie Solution\n"
5
- "POT-Creation-Date: 2020-02-06 13:33+0100\n"
6
- "PO-Revision-Date: 2015-08-12 10:36+0200\n"
7
- "Last-Translator: \n"
8
- "Language-Team: \n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.3\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
-
19
- #: includes/amp.php:126
20
- msgid "Loading"
21
- msgstr ""
22
-
23
- #: includes/amp.php:258
24
- msgid "AMP Cookie Consent"
25
- msgstr ""
26
-
27
- #: includes/forms-list-table.php:92
28
- msgid "Form Title"
29
- msgstr ""
30
-
31
- #: includes/forms-list-table.php:93
32
- msgid "Form ID"
33
- msgstr ""
34
-
35
- #: includes/forms-list-table.php:94
36
- msgid "Form Source"
37
- msgstr ""
38
-
39
- #: includes/forms-list-table.php:95
40
- msgid "Fields"
41
- msgstr ""
42
-
43
- #: includes/forms-list-table.php:96
44
- msgid "Date"
45
- msgstr ""
46
-
47
- #: includes/forms-list-table.php:165
48
- msgid "Edit"
49
- msgstr ""
50
-
51
- #: includes/forms-list-table.php:166
52
- msgid "Delete"
53
- msgstr ""
54
-
55
- #: includes/forms-list-table.php:277
56
- msgid "Filter"
57
- msgstr ""
58
-
59
- #: includes/forms-list-table.php:294
60
- msgid "Filter by source"
61
- msgstr ""
62
-
63
- #: includes/forms-list-table.php:296
64
- msgid "All form sources"
65
- msgstr ""
66
-
67
- #: includes/forms-list-table.php:364
68
- msgid "No forms found."
69
- msgstr ""
70
-
71
- #: includes/forms.php:149 includes/settings.php:138
72
- msgid "Forms"
73
- msgstr ""
74
-
75
- #: includes/forms.php:150
76
- msgid "Form"
77
- msgstr ""
78
-
79
- #: includes/forms.php:566 includes/forms.php:580
80
- msgid "First name"
81
- msgstr ""
82
-
83
- #: includes/forms.php:572 includes/forms.php:592
84
- msgid "Last name"
85
- msgstr ""
86
-
87
- #: includes/forms.php:586
88
- msgid "Middle name"
89
- msgstr ""
90
-
91
- #: includes/settings.php:43 includes/settings.php:44 includes/settings.php:45
92
- #: includes/settings.php:46 includes/settings.php:47
93
- msgid "string"
94
- msgstr ""
95
-
96
- #: includes/settings.php:59 includes/settings.php:183
97
- msgid "Cookie Solution"
98
- msgstr ""
99
-
100
- #: includes/settings.php:65 includes/settings.php:184
101
- msgid "Consent Solution"
102
- msgstr ""
103
-
104
- #: includes/settings.php:73
105
- msgid "Not set"
106
- msgstr ""
107
-
108
- #: includes/settings.php:74
109
- msgid "Strictly necessary"
110
- msgstr ""
111
-
112
- #: includes/settings.php:75
113
- msgid "Basic interactions & functionalities"
114
- msgstr ""
115
-
116
- #: includes/settings.php:76
117
- msgid "Experience enhancement"
118
- msgstr ""
119
-
120
- #: includes/settings.php:77
121
- msgid "Analytics"
122
- msgstr ""
123
-
124
- #: includes/settings.php:78
125
- msgid "Targeting & Advertising"
126
- msgstr ""
127
-
128
- #: includes/settings.php:125
129
- msgid "Code"
130
- msgstr ""
131
-
132
- #: includes/settings.php:126
133
- msgid "Google AMP"
134
- msgstr ""
135
-
136
- #: includes/settings.php:127
137
- msgid "Script blocking"
138
- msgstr ""
139
-
140
- #: includes/settings.php:128
141
- msgid "Custom scripts"
142
- msgstr ""
143
-
144
- #: includes/settings.php:129
145
- msgid "Content type"
146
- msgstr ""
147
-
148
- #: includes/settings.php:130
149
- msgid "RSS feed"
150
- msgstr ""
151
-
152
- #: includes/settings.php:131
153
- msgid "POST requests"
154
- msgstr ""
155
-
156
- #: includes/settings.php:132
157
- msgid "Menu position"
158
- msgstr ""
159
-
160
- #: includes/settings.php:133
161
- msgid "Deactivation"
162
- msgstr ""
163
-
164
- #: includes/settings.php:139
165
- msgid "Public Api Key"
166
- msgstr ""
167
-
168
- #: includes/settings.php:142 includes/settings.php:146
169
- msgid "Field Mapping"
170
- msgstr ""
171
-
172
- #: includes/settings.php:206
173
- msgid "Are you sure you want to delete this form?"
174
- msgstr ""
175
-
176
- #: includes/settings.php:541
177
- msgid "You don't have permission to access this page."
178
- msgstr ""
179
-
180
- #: includes/settings.php:567
181
- msgid ""
182
- "This plugin is the easiest and most comprehensive way to adapt your "
183
- "WordPress site to the ePrivacy (EU Cookie Law). Upon your users’ first "
184
- "visit, the plugin will take care of collecting their consent, blocking the "
185
- "most popular cookie-scripts and subsequently reactivating these scripts as "
186
- "soon as consent is provided. The basic settings include obtaining consent "
187
- "by a simple scroll action (the most effective method) and script "
188
- "reactivation without refreshing the page (asynchronous script reactivation)."
189
- msgstr ""
190
-
191
- #: includes/settings.php:570
192
- msgid ""
193
- "Does the Cookie Solution support IAB’s Transparency and Consent Framework?"
194
- msgstr ""
195
-
196
- #: includes/settings.php:571
197
- #, php-format
198
- msgid ""
199
- "Yes it does. You can read more about it <a href=\"%s\" class=\"iubenda-url"
200
- "\" target=\"_blank\">here.</a>"
201
- msgstr ""
202
-
203
- #: includes/settings.php:574
204
- msgid "Would you like to know more about the cookie law?"
205
- msgstr ""
206
-
207
- #: includes/settings.php:575
208
- #, php-format
209
- msgid ""
210
- "Read our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">complete "
211
- "guide to the cookie law.</a>"
212
- msgstr ""
213
-
214
- #: includes/settings.php:578
215
- msgid "What is the full functionality of the plugin?"
216
- msgstr ""
217
-
218
- #: includes/settings.php:579
219
- #, php-format
220
- msgid ""
221
- "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">plugin "
222
- "page.</a>"
223
- msgstr ""
224
-
225
- #: includes/settings.php:582
226
- msgid "Enter the iubenda code for the Cookie Solution below."
227
- msgstr ""
228
-
229
- #: includes/settings.php:583
230
- #, php-format
231
- msgid ""
232
- "In order to run the plugin, you need to enter the iubenda code that "
233
- "activates the cookie law banner and the cookie policy in the form below. "
234
- "This code can be generated on www.iubenda.com, following <a href=\"%s\" "
235
- "class=\"iubenda-url\" target=\"_blank\">this guide.</a>"
236
- msgstr ""
237
-
238
- #: includes/settings.php:588
239
- msgid ""
240
- "Maintaining comprehensive records of consent is a vital part of privacy "
241
- "compliance in general but is specifically required under the GDPR. These "
242
- "records should include a way of identifying the user, store proof of "
243
- "consent, record of the consenting action, and the legal documents available "
244
- "to the user at the time of consent, among other things. You can read about "
245
- "the <a href=\"https://www.iubenda.com/en/help/5428-gdpr-guide#records-of-"
246
- "consent\" target=\"_blank\">full requirements here</a>."
247
- msgstr ""
248
-
249
- #: includes/settings.php:613
250
- #, php-format
251
- msgid ""
252
- "If you are using per-purpose script blocking or Reject option please "
253
- "disable the \"Leave scripts untouched on the page if the user has already "
254
- "given consent\" option. <a href=\"%s\" target=\"_self\">Disable now</a>"
255
- msgstr ""
256
-
257
- #: includes/settings.php:638
258
- msgid ""
259
- "AMP configuration file requires HTTPS. Make sure your SSL Certificate is "
260
- "configured correctly."
261
- msgstr ""
262
-
263
- #: includes/settings.php:660
264
- #, php-format
265
- msgid ""
266
- "This plugin drastically reduces the need for direct interventions in the "
267
- "code of the site by integrating with iubenda’s Cookie Solution. It provides "
268
- "a fully customizable cookie banner, dynamically generates a cookie policy "
269
- "<a href=\"%s\" target=\"_blank\">to match the services in use on your site</"
270
- "a>, and, fully manages cookie-related consent – including the blocking of "
271
- "the most common widgets and third-party cookies before consent is received "
272
- "– in order to comply with the GDPR and ePrivacy."
273
- msgstr ""
274
-
275
- #: includes/settings.php:662
276
- msgid ""
277
- "Maintaining valid records of consent is a vital part of privacy compliance "
278
- "in general, and it is specifically required under the GDPR. These records "
279
- "should include a userid, timestamp, consent proof, record of the consenting "
280
- "action, and the legal documents available to the user at the time of "
281
- "consent, among other things. This plugin is THE most complete solution for "
282
- "recording, sorting and maintaining GDPR records of consent*. The plugin "
283
- "also boasts built-in compatibility with WordPress comment form, Contact "
284
- "Form 7 and WP Forms plugins for your convenience, but can be manually "
285
- "integrated with any type of web-form and can even store consent proofs for "
286
- "consents collected offline (e.g in-store sign-ups) via WP media upload."
287
- msgstr ""
288
-
289
- #: includes/settings.php:680
290
- msgid "Reset to defaults"
291
- msgstr ""
292
-
293
- #: includes/settings.php:692
294
- msgid "Need support for this plugin?"
295
- msgstr ""
296
-
297
- #: includes/settings.php:693
298
- #, php-format
299
- msgid ""
300
- "Visit our <a href=\"%s\" class=\"iubenda-url\" target=\"_blank\">support "
301
- "forum.</a>"
302
- msgstr ""
303
-
304
- #: includes/settings.php:737
305
- #, php-format
306
- msgid "Enter the iubenda code for %s."
307
- msgstr ""
308
-
309
- #: includes/settings.php:748
310
- msgid "Enter the iubenda code."
311
- msgstr ""
312
-
313
- #: includes/settings.php:775
314
- msgid ""
315
- "Provide a list of custom scripts you’d like to block and assign their "
316
- "purpose."
317
- msgstr ""
318
-
319
- #: includes/settings.php:777 includes/settings.php:784
320
- msgid "Enter custom script"
321
- msgstr ""
322
-
323
- #: includes/settings.php:777 includes/settings.php:784
324
- #: includes/settings.php:795 includes/settings.php:802
325
- #: includes/settings.php:1178 includes/settings.php:1205
326
- #: includes/settings.php:1246 includes/settings.php:1274
327
- #: includes/settings.php:1325 includes/settings.php:1341
328
- msgid "Remove"
329
- msgstr ""
330
-
331
- #: includes/settings.php:793
332
- msgid ""
333
- "Provide a list of custom iframes you’d like to block and assign their "
334
- "purpose. "
335
- msgstr ""
336
-
337
- #: includes/settings.php:795 includes/settings.php:802
338
- msgid "Enter custom iframe"
339
- msgstr ""
340
-
341
- #: includes/settings.php:840
342
- msgid "Automatically block scripts detected by the plugin"
343
- msgstr ""
344
-
345
- #: includes/settings.php:841
346
- #, php-format
347
- msgid ""
348
- "see <a href=\"%s\" target=\"_blank\">our documentation</a> for the list of "
349
- "detected scripts."
350
- msgstr ""
351
-
352
- #: includes/settings.php:844
353
- msgid "Primary"
354
- msgstr ""
355
-
356
- #: includes/settings.php:845
357
- msgid "Secondary"
358
- msgstr ""
359
-
360
- #: includes/settings.php:846
361
- msgid "Select parsing engine."
362
- msgstr ""
363
-
364
- #: includes/settings.php:849
365
- msgid ""
366
- "Leave scripts untouched on the page if the user has already given consent"
367
- msgstr ""
368
-
369
- #: includes/settings.php:850
370
- msgid ""
371
- "improves performance, highly recommended, to be deactivated only if your "
372
- "site uses a caching system or if you're collecting per-category consent."
373
- msgstr ""
374
-
375
- #: includes/settings.php:864
376
- msgid ""
377
- "Restrict the plugin to run only for requests that have \"Content-type: "
378
- "text / html\" (recommended)"
379
- msgstr ""
380
-
381
- #: includes/settings.php:876
382
- msgid "Do not run the plugin inside the RSS feed (recommended)"
383
- msgstr ""
384
-
385
- #: includes/settings.php:888
386
- msgid "Do not run the plugin on POST requests (recommended)"
387
- msgstr ""
388
-
389
- #: includes/settings.php:900
390
- msgid "Top menu"
391
- msgstr ""
392
-
393
- #: includes/settings.php:901
394
- msgid "Submenu"
395
- msgstr ""
396
-
397
- #: includes/settings.php:902
398
- msgid ""
399
- "Select whether to display iubenda in a top admin menu or the Settings "
400
- "submenu."
401
- msgstr ""
402
-
403
- #: includes/settings.php:914
404
- msgid "Enable Google AMP support."
405
- msgstr ""
406
-
407
- #: includes/settings.php:915
408
- #, php-format
409
- msgid ""
410
- "This feature enables iubenda on AMP pages via the <a href=\"%s\" target="
411
- "\"_blank\">AMP</a> and <a href=\"%s\" target=\"_blank\">AMP for WP</a> "
412
- "plugins. AMP requires specific configuration parameters and a page hosted "
413
- "on your domain where the configuration is loaded from. <a href=\"%s\" "
414
- "target=\"_blank\">Learn more on iubenda and AMP</a>."
415
- msgstr ""
416
-
417
- #: includes/settings.php:918
418
- msgid "Auto-generated configuration file"
419
- msgstr ""
420
-
421
- #: includes/settings.php:919
422
- msgid "Custom configuration file"
423
- msgstr ""
424
-
425
- #: includes/settings.php:920
426
- msgid "Select the iubenda AMP configuration file location."
427
- msgstr ""
428
-
429
- #: includes/settings.php:925
430
- msgid ""
431
- "No file available. Save changes to generate iubenda AMP configuration file."
432
- msgstr ""
433
-
434
- #: includes/settings.php:953
435
- msgid ""
436
- "If you're experiencing issues with AMP setup download the generated iubenda "
437
- "AMP configuration file, upload it to any SSL server and paste the file link "
438
- "to the field above."
439
- msgstr ""
440
-
441
- #: includes/settings.php:955
442
- #, php-format
443
- msgid ""
444
- "Seeing the AMP cookie notice when testing from Google but not when visiting "
445
- "your AMP pages directly? <a href=\"%s\" target=\"_blank\">Learn how to fix "
446
- "it</a>."
447
- msgstr ""
448
-
449
- #: includes/settings.php:968
450
- msgid "Delete all plugin data upon deactivation"
451
- msgstr ""
452
-
453
- #: includes/settings.php:981
454
- msgid "Enter your iubenda Javascript library public API key."
455
- msgstr ""
456
-
457
- #: includes/settings.php:997
458
- msgid ""
459
- "This section lists the forms available for field mapping. The plugin "
460
- "currently supports & detects: WordPress Comment, Contact Form 7, "
461
- "WooCommerce Checkout and WP Forms."
462
- msgstr ""
463
-
464
- #: includes/settings.php:1058
465
- #, php-format
466
- msgid "%s form title."
467
- msgstr ""
468
-
469
- #: includes/settings.php:1058
470
- msgid "Unknown"
471
- msgstr ""
472
-
473
- #: includes/settings.php:1060
474
- msgid "Available form fields:"
475
- msgstr ""
476
-
477
- #: includes/settings.php:1066
478
- msgid "Publish"
479
- msgstr ""
480
-
481
- #: includes/settings.php:1071
482
- msgid "Status"
483
- msgstr ""
484
-
485
- #: includes/settings.php:1084
486
- msgid "Cancel"
487
- msgstr ""
488
-
489
- #: includes/settings.php:1089
490
- msgid "Save"
491
- msgstr ""
492
-
493
- #: includes/settings.php:1102
494
- msgid "Map fields"
495
- msgstr ""
496
-
497
- #: includes/settings.php:1108
498
- msgid "Subject fields"
499
- msgstr ""
500
-
501
- #: includes/settings.php:1109
502
- msgid ""
503
- "Subject fields allow you to store a series of identifying values about your "
504
- "individual subjects/users. Please map the subject field with the "
505
- "corresponding form fields where applicable."
506
- msgstr ""
507
-
508
- #: includes/settings.php:1114
509
- msgid "Subject field"
510
- msgstr ""
511
-
512
- #: includes/settings.php:1115 includes/settings.php:1159
513
- msgid "Form field"
514
- msgstr ""
515
-
516
- #: includes/settings.php:1121
517
- msgid "Autogenerated"
518
- msgstr ""
519
-
520
- #: includes/settings.php:1121
521
- msgid "None"
522
- msgstr ""
523
-
524
- #: includes/settings.php:1152
525
- msgid "Preferences fields"
526
- msgstr ""
527
-
528
- #: includes/settings.php:1153
529
- msgid ""
530
- "Preferences fields allow you to store a record of the various opt-ins "
531
- "points at which the user has agreed or given consent, such as fields for "
532
- "agreeing to terms and conditions, newsletter, profiling, etc. *Please "
533
- "create at least one preference field."
534
- msgstr ""
535
-
536
- #: includes/settings.php:1158
537
- msgid "Preferences field"
538
- msgstr ""
539
-
540
- #: includes/settings.php:1164 includes/settings.php:1190
541
- #: includes/settings.php:1315 includes/settings.php:1325
542
- #: includes/settings.php:1341
543
- msgid "Enter field name"
544
- msgstr ""
545
-
546
- #: includes/settings.php:1214
547
- msgid "Add New Preference"
548
- msgstr ""
549
-
550
- #: includes/settings.php:1221
551
- msgid "Exclude fields"
552
- msgstr ""
553
-
554
- #: includes/settings.php:1222
555
- msgid ""
556
- "Exclude fields allow you to create a list of fields that you would like to "
557
- "exclude from your Consent Solution recorded proofs (for e.g. password or "
558
- "other fields not related to the consent)."
559
- msgstr ""
560
-
561
- #: includes/settings.php:1227
562
- msgid "Exclude field"
563
- msgstr ""
564
-
565
- #: includes/settings.php:1284
566
- msgid "Add New Exclude"
567
- msgstr ""
568
-
569
- #: includes/settings.php:1294
570
- msgid "Legal Notices"
571
- msgstr ""
572
-
573
- #: includes/settings.php:1300
574
- msgid "Legal documents"
575
- msgstr ""
576
-
577
- #: includes/settings.php:1301
578
- msgid ""
579
- "In general, it’s important that you declare which legal documents are being "
580
- "agreed upon when each consent is collected. However, if you use iubenda for "
581
- "your legal documents, it is *required* that you identify the documents by "
582
- "selecting them here."
583
- msgstr ""
584
-
585
- #: includes/settings.php:1306
586
- msgid "Identifier"
587
- msgstr ""
588
-
589
- #: includes/settings.php:1315
590
- msgid "Please select each legal document available on your site."
591
- msgstr ""
592
-
593
- #: includes/settings.php:1331
594
- msgid "Alternatively, you may add your own custom document identifiers."
595
- msgstr ""
596
-
597
- #: includes/settings.php:1350
598
- msgid "Add New Document"
599
- msgstr ""
600
-
601
- #: includes/settings.php:1471 includes/settings.php:1503
602
- #: includes/settings.php:1688
603
- msgid "Settings saved."
604
- msgstr ""
605
-
606
- #: includes/settings.php:1483 includes/settings.php:1508
607
- msgid "Settings restored to defaults."
608
- msgstr ""
609
-
610
- #: includes/settings.php:1543
611
- #, php-format
612
- msgid ""
613
- "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" target="
614
- "\"_blank\">Discussion settings</a>."
615
- msgstr ""
616
-
617
- #: includes/settings.php:1563
618
- msgid "No forms or form changes detected."
619
- msgstr ""
620
-
621
- #: includes/settings.php:1623
622
- msgid "Form saving failed. Please fill the Subject and Preferences fields."
623
- msgstr ""
624
-
625
- #: includes/settings.php:1647
626
- msgid "Form saved successfully - form status changed to Mapped."
627
- msgstr ""
628
-
629
- #: includes/settings.php:1650
630
- msgid "Form updated successfully."
631
- msgstr ""
632
-
633
- #: includes/settings.php:1653
634
- msgid "Form saving failed."
635
- msgstr ""
636
-
637
- #: includes/settings.php:1670
638
- msgid "Form deleted successfully."
639
- msgstr ""
640
-
641
- #: includes/settings.php:1672
642
- msgid "Form delete failed."
643
- msgstr ""
644
-
645
- #: includes/settings.php:1748
646
- msgid "Dismiss this notice."
647
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/iubenda-de_DE.mo ADDED
Binary file
languages/iubenda-de_DE.po ADDED
@@ -0,0 +1,1218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-06-22 14:50+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:51+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: German\n"
8
+ "Language: de_DE\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(erforderlich)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Ein Shortcode ist ein kleines Stück Code, mit dem sich interaktive Elemente "
31
+ "einbetten oder komplexe Seitenlayouts mit minimalem Aufwand erstellen lassen."
32
+ "<br>Kopieren Sie einfach den Shortcode und fügen Sie ihn dort ein, wo der "
33
+ "Button erscheinen soll."
34
+
35
+ #: views/cons-configuration.php:17
36
+ msgid "Activate & Configure Consent Solution by"
37
+ msgstr "Aktivieren und konfigurieren Sie die Consent Solution indem Sie"
38
+
39
+ #: views/cons-configuration.php:14
40
+ msgid ""
41
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
42
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
43
+ "your website."
44
+ msgstr ""
45
+ "Aktivieren Sie die <strong>Consent Solution</strong> auf unserer Website in "
46
+ "Ihrem iubenda-Dashboard und fügen Sie hier den <strong>API-Schlüssel</strong>"
47
+ " ein, um ihn auf Ihrer Website zu integrieren."
48
+
49
+ #: views/integrate-setup.php:21
50
+ msgid "Add a cookie banner"
51
+ msgstr "Ein Cookie-Banner hinzufügen"
52
+
53
+ #: views/cons-configuration.php:44
54
+ msgid "Add forms"
55
+ msgstr "Formulare hinzufügen"
56
+
57
+ #: views/cons-single-form.php:268
58
+ msgid "Add New Document"
59
+ msgstr "Neues Dokument hinzufügen"
60
+
61
+ #: views/cons-single-form.php:216
62
+ msgid "Add New Exclude"
63
+ msgstr "Neuen Ausschluss hinzufügen"
64
+
65
+ #: views/partials/csGeneralSettings.php:247
66
+ #: views/partials/csPluginSettings.php:133
67
+ msgid "Add New iframe"
68
+ msgstr "Neuen iframe hinzufügen"
69
+
70
+ #: views/cons-single-form.php:155
71
+ msgid "Add New Preference"
72
+ msgstr "Neue Präferenz hinzufügen"
73
+
74
+ #: views/partials/csGeneralSettings.php:212
75
+ #: views/partials/csPluginSettings.php:98
76
+ msgid "Add New Script"
77
+ msgstr "Neues Skript hinzufügen"
78
+
79
+ #: views/integrate-setup.php:140
80
+ msgid "Add the privacy policy button"
81
+ msgstr "Datenschutzerklärung-Button hinzufügen"
82
+
83
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
84
+ msgid "Add to the footer automatically"
85
+ msgstr "Automatisch in den Footer hinzufügen"
86
+
87
+ #: includes/forms-list-table.php:279
88
+ msgid "All form sources"
89
+ msgstr "Alle Formularquellen"
90
+
91
+ #: views/cons-single-form.php:250
92
+ msgid "Alternatively, you may add your own custom document identifiers."
93
+ msgstr ""
94
+ "Als Alternative können Sie auch Ihre eigenen Identifikatoren hinzufügen."
95
+
96
+ #: includes/amp.php:281
97
+ msgid "AMP Cookie Consent"
98
+ msgstr "AMP-Cookie-Einwilligung"
99
+
100
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
101
+ #: views/partials/csGeneralSettings.php:203
102
+ #: views/partials/csGeneralSettings.php:222
103
+ #: views/partials/csGeneralSettings.php:238
104
+ #: views/partials/csPluginSettings.php:73
105
+ #: views/partials/csPluginSettings.php:89
106
+ #: views/partials/csPluginSettings.php:108
107
+ #: views/partials/csPluginSettings.php:124
108
+ msgid "Analytics"
109
+ msgstr "Analytik"
110
+
111
+ #: views/partials/frontpage_main_box.php:22
112
+ msgid "Analyzing your website"
113
+ msgstr "Ihre Website analysieren"
114
+
115
+ #: views/cons-configuration.php:53
116
+ msgid "Auto-detect forms"
117
+ msgstr "Formulare automatisch erkennen"
118
+
119
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
120
+ msgid "Auto-generated configuration file"
121
+ msgstr "Auto-generierte Konfigurationsdatei"
122
+
123
+ #: views/cons-single-form.php:71
124
+ msgid "Autogenerated"
125
+ msgstr "Autogeneriert"
126
+
127
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
128
+ #: views/partials/csPluginSettings.php:4
129
+ msgid "Automatically block scripts detected by the plugin"
130
+ msgstr "Automatisch vom Plugin erkannte Skripte blockieren"
131
+
132
+ #: views/partials/bannerPosition.php:41
133
+ msgid "Background-overlay"
134
+ msgstr "Hintergrund-Overlay"
135
+
136
+ #: views/partials/csSimplifiedConfiguration.php:68
137
+ msgid "Banner buttons"
138
+ msgstr "Banner-Buttons"
139
+
140
+ #: includes/settings.php:107
141
+ msgid "Basic interactions & functionalities"
142
+ msgstr "Einfache Interaktionen & Funktionalitäten"
143
+
144
+ #: views/partials/csGeneralSettings.php:185
145
+ #: views/partials/csGeneralSettings.php:201
146
+ #: views/partials/csGeneralSettings.php:220
147
+ #: views/partials/csGeneralSettings.php:236
148
+ #: views/partials/csPluginSettings.php:71
149
+ #: views/partials/csPluginSettings.php:87
150
+ #: views/partials/csPluginSettings.php:106
151
+ #: views/partials/csPluginSettings.php:122
152
+ msgid "Basic interactions &amp; functionalities"
153
+ msgstr "Einfache Interaktionen &amp; Funktionalitäten"
154
+
155
+ #: views/partials/csGeneralSettings.php:173
156
+ msgid "Blocked domains"
157
+ msgstr "Gesperrte Domänen"
158
+
159
+ #: views/partials/csSimplifiedConfiguration.php:22
160
+ msgid "Both"
161
+ msgstr "Beide"
162
+
163
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
164
+ msgid "Button position"
165
+ msgstr "Button Position"
166
+
167
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
168
+ msgid "Button style"
169
+ msgstr "Button Stil"
170
+
171
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
172
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
173
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
174
+ msgid "Cancel"
175
+ msgstr "Abbrechen"
176
+
177
+ #: views/partials/csSimplifiedConfiguration.php:18
178
+ msgid "CCPA Only"
179
+ msgstr "Nur CCPA"
180
+
181
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
182
+ #: views/tc-configuration.php:16
183
+ msgid "clicking here"
184
+ msgstr "hier klicken"
185
+
186
+ #: views/partials/csGeneralSettings.php:2
187
+ msgid "Configuration"
188
+ msgstr "Konfiguration"
189
+
190
+ #: views/partials/product-card.php:48
191
+ msgid "Configure"
192
+ msgstr "Konfigurieren"
193
+
194
+ #: views/partials/csManualConfiguration.php:5
195
+ msgid "Configure cookie banner by"
196
+ msgstr "Konfigurieren Sie Ihr Cookie-Banner indem Sie"
197
+
198
+ #: views/tc-configuration.php:15
199
+ msgid "Configure terms and conditions by"
200
+ msgstr "Konfigurieren Sie die AGBs indem Sie"
201
+
202
+ #: views/partials/csManualConfiguration.php:2
203
+ msgid ""
204
+ "Configure your cookie banner on our website and paste here the embed code to "
205
+ "integrate it to your website."
206
+ msgstr ""
207
+ "Konfigurieren Sie Ihr Cookie-Banner auf unserer Website und fügen Sie hier "
208
+ "den Einbettungs-Code ein, um es in Ihre Website zu integrieren."
209
+
210
+ #: views/tc-configuration.php:12
211
+ msgid ""
212
+ "Configure your terms and conditions on our website and paste here the embed "
213
+ "code to integrate the button on your website."
214
+ msgstr ""
215
+ "Konfigurieren Sie Ihre AGBs auf unserer Website und fügen Sie hier den "
216
+ "Einbettungs-Code ein, um den Button auf Ihrer Website zu integrieren."
217
+
218
+ #: views/cons-configuration.php:31
219
+ msgid "Confirm API"
220
+ msgstr "API bestätigen"
221
+
222
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
223
+ #: includes/settings.php:1182
224
+ msgid "Consent Solution"
225
+ msgstr "Consent Solution"
226
+
227
+ #: views/partials/modals/modal_almost_there.php:37
228
+ msgid "Consent Solution API key"
229
+ msgstr "API-Schlüssel der Consent Solution"
230
+
231
+ #: views/partials/modals/modal_select_language.php:54
232
+ msgid "Continue"
233
+ msgstr "Weiter"
234
+
235
+ #: includes/settings.php:91 includes/settings.php:424
236
+ #: includes/settings.php:1162
237
+ msgid "Cookie Solution"
238
+ msgstr "Cookie Solution"
239
+
240
+ #: includes/QuickGeneratorService.php:625
241
+ #, php-format
242
+ msgid ""
243
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
244
+ ". For instructions on how to fix this, please read <a class=\"link-"
245
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
246
+ msgstr ""
247
+ "Derzeit haben Sie keine Schreibberechtigung für <i class=\"text-bold\">%s</i>"
248
+ ". Wie Sie das Problem beheben können, lesen Sie bitte <a class=\"link-"
249
+ "underline\" target=\\\"blank\\\" href=\\\"%s\\\">unsere Anleitung</a>."
250
+
251
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
252
+ msgid "Custom configuration file"
253
+ msgstr "Benutzerdefinierte Konfigurationsdatei"
254
+
255
+ #: views/partials/csGeneralSettings.php:177
256
+ #: views/partials/csPluginSettings.php:63
257
+ msgid "Custom iframes"
258
+ msgstr "Benutzerdefinierte iframes"
259
+
260
+ #: views/partials/csGeneralSettings.php:176
261
+ #: views/partials/csPluginSettings.php:62
262
+ msgid "Custom scripts"
263
+ msgstr "Benutzerdefinierte Skripte"
264
+
265
+ #: views/partials/csPluginSettings.php:59
266
+ msgid "Custom settings"
267
+ msgstr "Benutzerdefinierte Einstellungen"
268
+
269
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
270
+ #: views/tc-configuration.php:50
271
+ msgid "Dark"
272
+ msgstr "Dunkel"
273
+
274
+ #: includes/forms-list-table.php:90
275
+ msgid "Date"
276
+ msgstr "Datum"
277
+
278
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
279
+ #: views/partials/csGeneralSettings.php:115
280
+ msgid "Default language"
281
+ msgstr "Standardsprache"
282
+
283
+ #: includes/forms-list-table.php:160
284
+ msgid "Delete"
285
+ msgstr "Löschen"
286
+
287
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
288
+ msgid "Delete all plugin data upon deactivation"
289
+ msgstr "Alle Plugin-Daten bei Deaktivierung löschen"
290
+
291
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
292
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
293
+ msgstr "Das Plugin nicht innerhalb des RSS-Feeds ausführen (empfohlen)"
294
+
295
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
296
+ msgid "Do not run the plugin on POST requests (recommended)"
297
+ msgstr "Das Plugin nicht bei POST-Anfragen ausführen (empfohlen)"
298
+
299
+ #: views/partials/footer.php:5
300
+ msgid "Documentation"
301
+ msgstr "Dokumentation"
302
+
303
+ #: includes/forms-list-table.php:159
304
+ msgid "Edit"
305
+ msgstr "Bearbeiten"
306
+
307
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
308
+ msgid "Enable Google AMP support"
309
+ msgstr "Aktivieren Sie die Google AMP-Unterstützung"
310
+
311
+ #: views/partials/csSimplifiedConfiguration.php:88
312
+ msgid "Enable IAB Transparency and Consent Framework"
313
+ msgstr "IAB Transparency and Consent Framework aktivieren"
314
+
315
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
316
+ #: views/partials/csPluginSettings.php:24
317
+ msgid ""
318
+ "Enable this option to improve performance <strong>only</strong> if your site "
319
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
320
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
321
+ "keep this setting disabled"
322
+ msgstr ""
323
+ "Aktivieren Sie diese Option, um die Leistung <strong>nur</strong> zu "
324
+ "verbessern, wenn Ihre Website <strong>nicht</strong> ein Cache-System oder "
325
+ "ein Cache-Plugin verwendet und wenn Sie <strong>keine</strong> "
326
+ "kategoriebezogenen Einwilligung sammeln. Im Zweifelsfall sollten Sie diese "
327
+ "Einstellung deaktiviert lassen."
328
+
329
+ #: includes/settings.php:917
330
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
331
+ msgstr "Gefällt Ihnen das iubenda Cookie & Consent Solution Plugin?"
332
+
333
+ #: views/partials/csGeneralSettings.php:216
334
+ #: views/partials/csGeneralSettings.php:232
335
+ #: views/partials/csPluginSettings.php:102
336
+ #: views/partials/csPluginSettings.php:118
337
+ msgid "Enter custom iframe"
338
+ msgstr "Benutzerdefinierten iframe eingeben"
339
+
340
+ #: views/partials/csGeneralSettings.php:181
341
+ #: views/partials/csGeneralSettings.php:197
342
+ #: views/partials/csPluginSettings.php:67
343
+ #: views/partials/csPluginSettings.php:83
344
+ msgid "Enter custom script"
345
+ msgstr "Benutzerdefiniertes Skript eingeben"
346
+
347
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
348
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
349
+ #: views/cons-single-form.php:260
350
+ msgid "Enter field name"
351
+ msgstr "Feldname eingeben"
352
+
353
+ #: views/partials/csSimplifiedConfiguration.php:59
354
+ msgid "EU Only"
355
+ msgstr "Nur EU"
356
+
357
+ #: views/cons-single-form.php:164
358
+ msgid "Exclude field"
359
+ msgstr "Feld ausschließen"
360
+
361
+ #: views/cons-single-form.php:159
362
+ msgid "Exclude fields"
363
+ msgstr "Felder ausschließen"
364
+
365
+ #: views/cons-single-form.php:160
366
+ msgid ""
367
+ "Exclude fields allow you to create a list of fields that you would like to "
368
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
369
+ "other fields not related to the consent)."
370
+ msgstr ""
371
+ "Mit der Option Felder ausschließen können Sie eine Liste von Feldern "
372
+ "erstellen, die Sie aus den aufgezeichneten Nachweisen der Consent Solution "
373
+ "ausschließen möchten (z. B. Kennwort oder andere Felder, die nicht mit der "
374
+ "Einwilligung zusammenhängen)."
375
+
376
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
377
+ #: views/partials/csGeneralSettings.php:202
378
+ #: views/partials/csGeneralSettings.php:221
379
+ #: views/partials/csGeneralSettings.php:237
380
+ #: views/partials/csPluginSettings.php:72
381
+ #: views/partials/csPluginSettings.php:88
382
+ #: views/partials/csPluginSettings.php:107
383
+ #: views/partials/csPluginSettings.php:123
384
+ msgid "Experience enhancement"
385
+ msgstr "Verbesserte Nutzererfahrung"
386
+
387
+ #: views/partials/csSimplifiedConfiguration.php:72
388
+ msgid "Explicit Accept and Customize buttons"
389
+ msgstr "Ausdrückliche Zustimmen- und Anpassen-Buttons"
390
+
391
+ #: views/partials/csSimplifiedConfiguration.php:77
392
+ msgid "Explicit Reject button"
393
+ msgstr "Ausdrücklicher Ablehnen-Button"
394
+
395
+ #: views/cons-single-form.php:12
396
+ msgid "Field Mapping"
397
+ msgstr "Feldzuordnung"
398
+
399
+ #: includes/forms-list-table.php:89
400
+ msgid "Fields"
401
+ msgstr "Felder"
402
+
403
+ #: includes/forms-list-table.php:260
404
+ msgid "Filter"
405
+ msgstr "Filter"
406
+
407
+ #: includes/forms-list-table.php:277
408
+ msgid "Filter by source"
409
+ msgstr "Nach Quelle filtern"
410
+
411
+ #: includes/forms.php:579 includes/forms.php:593
412
+ msgid "First name"
413
+ msgstr "Vorname"
414
+
415
+ #: views/partials/modals/modal_sync.php:4
416
+ msgid ""
417
+ "First of all, tell us if you already use our products for this website or if "
418
+ "you want to start from scratch"
419
+ msgstr ""
420
+ "Verwenden Sie bereits unsere Produkte für diese Website oder wollen Sie bei "
421
+ "Null anfangen?"
422
+
423
+ #: includes/forms.php:153
424
+ msgid "Form"
425
+ msgstr "Formular"
426
+
427
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
428
+ msgid "Form field"
429
+ msgstr "Formularfeld"
430
+
431
+ #: includes/forms-list-table.php:87
432
+ msgid "Form ID"
433
+ msgstr "Formular ID"
434
+
435
+ #: includes/settings.php:701
436
+ msgid "Form saving failed. Please fill the Subject fields."
437
+ msgstr ""
438
+ "Speicherung des Formulars fehlgeschlagen. Bitte füllen Sie die Betreff-"
439
+ "Felder aus."
440
+
441
+ #: includes/forms-list-table.php:88
442
+ msgid "Form Source"
443
+ msgstr "Formular Quelle"
444
+
445
+ #: includes/forms-list-table.php:86
446
+ msgid "Form Title"
447
+ msgstr "Formular Titel"
448
+
449
+ #: includes/forms.php:152
450
+ msgid "Forms"
451
+ msgstr "Formulare"
452
+
453
+ #: views/partials/modals/modal_pp_created.php:7
454
+ msgid ""
455
+ "From here you can customize your privacy policy by adding the services you "
456
+ "use within your website or you can customize the style of the button that "
457
+ "displays your privacy policy."
458
+ msgstr ""
459
+ "Von hier aus können Sie Ihre Datenschutzerklärung anpassen, indem Sie die "
460
+ "Dienste hinzufügen, die Sie auf Ihrer Website verwenden, oder Sie können den "
461
+ "Stil des Buttons anpassen, der Ihre Datenschutzerklärung anzeigt."
462
+
463
+ #: views/partials/csSimplifiedConfiguration.php:14
464
+ msgid "GDPR Only"
465
+ msgstr "Nur DSGVO"
466
+
467
+ #: views/partials/modals/modal_pp_created.php:9
468
+ msgid "Got it"
469
+ msgstr "Alles klar"
470
+
471
+ #: views/frontpage.php:9
472
+ msgid "Help me get compliant!"
473
+ msgstr "Helfen Sie mir, gesetzeskonform zu werden!"
474
+
475
+ #: views/partials/modals/modal_rating.php:11
476
+ msgid "Here’s how we calculate your rating."
477
+ msgstr "So berechnen wir Ihre Punktzahl."
478
+
479
+ #: views/partials/siteInfo.php:21
480
+ msgid "How is it calculated?"
481
+ msgstr "Wie wird sie berechnet?"
482
+
483
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
484
+ msgid "HTML"
485
+ msgstr "HTML"
486
+
487
+ #: views/partials/modals/modal_no_website_found.php:11
488
+ #: views/partials/modals/modal_sync.php:8
489
+ msgid "I want to start from scratch"
490
+ msgstr "Ich möchte bei Null beginnen"
491
+
492
+ #: views/cons-single-form.php:225
493
+ msgid "Identifier"
494
+ msgstr "Identifikator"
495
+
496
+ #: views/cons-single-form.php:222
497
+ msgid ""
498
+ "In general, it's important that you declare which legal documents are being "
499
+ "agreed upon when each consent is collected. However, if you use iubenda for "
500
+ "your legal documents, it is *required* that you identify the documents by "
501
+ "selecting them here."
502
+ msgstr ""
503
+ "Im Allgemeinen ist es wichtig, dass Sie bei der Einholung jeder Einwilligung "
504
+ "angeben, welche Rechtsdokumente vereinbart wurden. Wenn Sie jedoch iubenda "
505
+ "für Ihre Rechtsdokumente verwenden, ist es *erforderlich*, dass Sie die "
506
+ "Dokumente identifizieren, indem Sie sie hier auswählen."
507
+
508
+ #: views/partials/integrateFooter.php:4
509
+ msgid "Integrate"
510
+ msgstr "Integrieren"
511
+
512
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
513
+ msgid "Integrate manually"
514
+ msgstr "Manuell integrieren"
515
+
516
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
517
+ msgid "Integration"
518
+ msgstr "Integration"
519
+
520
+ #: views/partials/modals/modal_no_website_found.php:8
521
+ msgid ""
522
+ "It seems that it is not possible to access your data with the code you "
523
+ "pasted, do you want to try again or do you prefer to start configuring your "
524
+ "website from scratch?"
525
+ msgstr ""
526
+ "Es scheint, dass es nicht möglich ist, mit dem Code, den Sie eingefügt haben,"
527
+ " auf Ihre Daten zuzugreifen. Möchten Sie es erneut versuchen, oder möchten "
528
+ "Sie Ihre Website von Null an konfigurieren?"
529
+
530
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
531
+ msgid ""
532
+ "It seems that it is not possible to access your data with the code you "
533
+ "pasted, do you want to try again."
534
+ msgstr ""
535
+ "Es scheint, dass es nicht möglich ist, mit dem Code, den Sie eingefügt haben,"
536
+ " auf Ihre Daten zuzugreifen. Möchten Sie es erneut versuchen?"
537
+
538
+ #: views/products-page.php:15
539
+ msgid ""
540
+ "It seems that you have not activated any of our services, we recommend you "
541
+ "to activate them and increase your level of compliance and avoid risking "
542
+ "fines."
543
+ msgstr ""
544
+ "Es scheint, dass Sie keinen unserer Dienste aktiviert haben. Wir empfehlen "
545
+ "Ihnen, diese zu aktivieren, um Ihre Rechtskonformität zu verbessern und das "
546
+ "Risiko von Geldstrafen zu vermeiden."
547
+
548
+ #: includes/widget/IubendaLegalWidget.php:18
549
+ msgid "Iubenda legal"
550
+ msgstr "Iubenda Rechtliches"
551
+
552
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
553
+ msgid "Iubenda legal block"
554
+ msgstr "Iubenda legal block"
555
+
556
+ #: includes/widget/IubendaLegalWidget.php:21
557
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
558
+ msgstr "Iubenda Rechts-Widget für Datenschutzerklärung und AGBs"
559
+
560
+ #: views/partials/modals/modal_sync.php:6
561
+ msgid "I’ve already made the set up on iubenda.com"
562
+ msgstr "Ich habe alles bereits auf iubenda.com eingerichtet"
563
+
564
+ #: includes/forms.php:585 includes/forms.php:605
565
+ msgid "Last name"
566
+ msgstr "Nachname"
567
+
568
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
569
+ msgid "Learn how to fix it"
570
+ msgstr "So lösen Sie es"
571
+
572
+ #: views/partials/csSimplifiedConfiguration.php:88
573
+ #: views/partials/modals/modal_rating.php:22
574
+ msgid "Learn More"
575
+ msgstr "Erfahren Sie mehr"
576
+
577
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
578
+ #: views/partials/csPluginSettings.php:22
579
+ msgid ""
580
+ "Leave scripts untouched on the page if the user has already given consent"
581
+ msgstr ""
582
+ "Skripte auf der Seite unangetastet lassen wenn der Benutzer bereits seine "
583
+ "Einwilligung gegeben hat"
584
+
585
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
586
+ #: includes/widget/IubendaLegalWidget.php:167
587
+ msgid "Legal"
588
+ msgstr "Rechtliches"
589
+
590
+ #: views/cons-single-form.php:221
591
+ msgid "Legal documents"
592
+ msgstr "Rechtsdokumente"
593
+
594
+ #: views/partials/csSimplifiedConfiguration.php:9
595
+ msgid "Legislation"
596
+ msgstr "Gesetzgebung"
597
+
598
+ #: includes/settings.php:1116 includes/settings.php:1138
599
+ msgid "legislation"
600
+ msgstr "Gesetzgebung"
601
+
602
+ #: views/frontpage.php:8
603
+ msgid "Let's configure your website for compliance."
604
+ msgstr "Es ist Zeit, Ihre Website rechtskonform zu gestalten."
605
+
606
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
607
+ #: views/tc-configuration.php:41
608
+ msgid "Light"
609
+ msgstr "Hell"
610
+
611
+ #: views/partials/csGeneralSettings.php:35
612
+ #: views/partials/csGeneralSettings.php:42
613
+ msgid "Manual embed"
614
+ msgstr "Manuell einbetten"
615
+
616
+ #: views/cons-single-form.php:44
617
+ msgid "Map fields"
618
+ msgstr "Felder zuordnen"
619
+
620
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
621
+ msgid "Menu position"
622
+ msgstr "Menü Position"
623
+
624
+ #: includes/forms.php:599
625
+ msgid "Middle name"
626
+ msgstr "Zweiter Vorname"
627
+
628
+ #: views/partials/modals/modal_almost_there.php:5
629
+ msgid "Nice! We are almost there."
630
+ msgstr "Fast geschafft!"
631
+
632
+ #: includes/settings.php:920
633
+ msgid "No"
634
+ msgstr "Nein"
635
+
636
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
637
+ msgid ""
638
+ "No file available. Save changes to generate iubenda AMP configuration file."
639
+ msgstr ""
640
+ "Keine Datei verfügbar. Speichern Sie die Änderungen, um die iubenda AMP-"
641
+ "Konfigurationsdatei zu generieren."
642
+
643
+ #: includes/forms-list-table.php:347
644
+ msgid "No forms found."
645
+ msgstr "Keine Formulare gefunden."
646
+
647
+ #: includes/settings.php:927 includes/settings.php:934
648
+ msgid "No thanks"
649
+ msgstr "Nein danke"
650
+
651
+ #: views/cons-single-form.php:71
652
+ msgid "None"
653
+ msgstr "Ohne"
654
+
655
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
656
+ #: views/partials/csGeneralSettings.php:199
657
+ #: views/partials/csGeneralSettings.php:218
658
+ #: views/partials/csGeneralSettings.php:234
659
+ #: views/partials/csPluginSettings.php:69
660
+ #: views/partials/csPluginSettings.php:85
661
+ #: views/partials/csPluginSettings.php:104
662
+ #: views/partials/csPluginSettings.php:120
663
+ msgid "Not set"
664
+ msgstr "Nicht eingestellt"
665
+
666
+ #: views/partials/modals/modal_select_language.php:4
667
+ msgid "Now, select your website language"
668
+ msgstr "Wählen Sie jetzt die Sprache Ihrer Website"
669
+
670
+ #: includes/settings.php:933
671
+ msgid "Ok sure!"
672
+ msgstr "Ja, sicher!"
673
+
674
+ #: includes/ServiceRating.php:103
675
+ msgid "Only track users that give consent"
676
+ msgstr "Nur Nutzer verfolgen die ihre Einwilligung geben"
677
+
678
+ #: views/partials/modals/modal_no_website_found.php:6
679
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
680
+ msgid "Ooops! <br> No website found with this embed code."
681
+ msgstr "Hoppla! <br> Keine Website mit diesem Einbettungs-Code gefunden."
682
+
683
+ #: views/partials/modals/modal_sync.php:7
684
+ msgid "or"
685
+ msgstr "oder"
686
+
687
+ #: views/partials/csSimplifiedConfiguration.php:83
688
+ msgid "Other options"
689
+ msgstr "Andere Optionen"
690
+
691
+ #: views/partials/welcomeScreenHeader.php:3
692
+ msgid "Our plugin will help you to make your website compliant in minutes."
693
+ msgstr ""
694
+ "Mit unserem Plugin können Sie Ihre Website in wenigen Minuten "
695
+ "gesetzeskonform machen."
696
+
697
+ #: includes/QuickGeneratorService.php:137
698
+ msgid ""
699
+ "Our products has been integrated successfully, now customize all products to "
700
+ "increase the compliance rating and make your website fully compliant."
701
+ msgstr ""
702
+ "Unsere Produkte wurden erfolgreich integriert. Passen Sie jetzt alle "
703
+ "Produkte an, um die Compliance-Punktzahl zu erhöhen und Ihre Website "
704
+ "vollständig konform zu machen."
705
+
706
+ #: views/partials/modals/modal_almost_there.php:39
707
+ msgid "Paste your API key here"
708
+ msgstr "Fügen Sie Ihren API-Schlüssel hier ein"
709
+
710
+ #: views/partials/csManualConfiguration.php:11
711
+ msgid "Paste your cookie solution embed code here"
712
+ msgstr "Fügen Sie hier den Einbettungs-Code Ihrer Cookie Solution ein"
713
+
714
+ #: views/partials/languagesTabs.php:21
715
+ msgid "Paste your embed code here"
716
+ msgstr "Fügen Sie Ihren Einbettungs-Code hier ein"
717
+
718
+ #: views/cons-configuration.php:23
719
+ msgid "Paste your public API key here"
720
+ msgstr "Fügen Sie hier Ihren öffentlichen API-Schlüssel ein"
721
+
722
+ #: views/tc-configuration.php:21
723
+ msgid "Paste your terms and conditions embed code here"
724
+ msgstr "Fügen Sie hier den Einbettungs-Code für Ihre AGBs ein"
725
+
726
+ #: includes/settings.php:628
727
+ #, php-format
728
+ msgid ""
729
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
730
+ "target=\"_blank\">Discussion settings</a>."
731
+ msgstr ""
732
+ "Bitte aktivieren Sie das Opt-in-Checkbox für Kommentar-Cookies anzeigen in "
733
+ "den <a href=“%s” target=“_blank”>Diskussionseinstellungen</a>."
734
+
735
+ #: views/cons-single-form.php:234
736
+ msgid "Please select each legal document available on your site."
737
+ msgstr ""
738
+ "Bitte wählen Sie jedes Rechtsdokument aus, das auf Ihrer Website verfügbar "
739
+ "ist."
740
+
741
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
742
+ msgid "Plugin settings"
743
+ msgstr "Plugin-Einstellungen"
744
+
745
+ #: includes/settings.php:1115 includes/settings.php:1137
746
+ #: includes/settings.php:1156 includes/settings.php:1176
747
+ #: views/partials/bannerPosition.php:20
748
+ msgid "Position"
749
+ msgstr "Position"
750
+
751
+ #: views/cons-single-form.php:102
752
+ msgid "Preferences field"
753
+ msgstr "Einstellungsfeld"
754
+
755
+ #: views/cons-single-form.php:98
756
+ msgid "Preferences fields"
757
+ msgstr "Einstellungsfeldern"
758
+
759
+ #: views/cons-single-form.php:99
760
+ msgid ""
761
+ "Preferences fields allow you to store a record of the various opt-ins points "
762
+ "at which the user has agreed or given consent, such as fields for agreeing "
763
+ "to terms and conditions, newsletter, profiling, etc."
764
+ msgstr ""
765
+ "In den Einstellungsfeldern können Sie die verschiedenen Opt-in-Punkte "
766
+ "speichern, an denen der Nutzer zugestimmt oder seine Einwilligung gegeben "
767
+ "hat, z. B. die Felder für die Zustimmung zu den AGBs, zum Newsletter, zur "
768
+ "Profilerstellung usw."
769
+
770
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
771
+ #: views/partials/csPluginSettings.php:10
772
+ msgid "Primary"
773
+ msgstr "Primär"
774
+
775
+ #: includes/settings.php:418 includes/settings.php:1150
776
+ msgid "Privacy and Cookie Policy"
777
+ msgstr "Datenschutz- und Cookie-Richtlinien"
778
+
779
+ #: includes/PrivacyPolicyGenerator.php:23
780
+ msgid "Privacy Policy"
781
+ msgstr "Datenschutzerklärung"
782
+
783
+ #: views/partials/breadcrumb.php:2
784
+ msgid "Products"
785
+ msgstr "Produkte"
786
+
787
+ #: views/partials/csGeneralSettings.php:246
788
+ #: views/partials/csPluginSettings.php:132
789
+ msgid ""
790
+ "Provide a list of domains for any custom iframes you'd like to block, and "
791
+ "assign their purposes. To make sure they are blocked correctly, please add "
792
+ "domains in the same format as 'example.com', without any protocols e.g. "
793
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
794
+ "domains or subdomains."
795
+ msgstr ""
796
+ "Geben Sie eine Liste von Domains für alle benutzerdefinierten iframes an, "
797
+ "die Sie blockieren möchten, und weisen Sie ihnen einen Zweck zu. Um "
798
+ "sicherzustellen, dass sie korrekt blockiert werden, fügen Sie bitte Domains "
799
+ "im gleichen Format wie „example.com“ hinzu, ohne Protokolle, z. B. „http://“ "
800
+ "oder „https://“. Sie können auch Platzhalter (*) verwenden, um übergeordnete "
801
+ "Domains oder Subdomains einzuschließen."
802
+
803
+ #: views/partials/csGeneralSettings.php:211
804
+ #: views/partials/csPluginSettings.php:97
805
+ msgid ""
806
+ "Provide a list of domains for any custom scripts you'd like to block, and "
807
+ "assign their purposes. To make sure they are blocked correctly, please add "
808
+ "domains in the same format as 'example.com', without any protocols e.g. "
809
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
810
+ "domains or subdomains."
811
+ msgstr ""
812
+ "Geben Sie eine Liste von Domänen für benutzerdefinierte Skripte an, die Sie "
813
+ "blockieren möchten, und weisen Sie deren Zweck zu. Um sicherzustellen, dass "
814
+ "sie korrekt blockiert werden, fügen Sie bitte Domänen im gleichen Format wie "
815
+ "„beispiel.com“ hinzu, ohne Protokolle, z. B. „http://“ oder „https://“. Sie "
816
+ "können auch Platzhalter (*) verwenden, um übergeordnete Domains oder "
817
+ "Subdomains einzuschließen."
818
+
819
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
820
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
821
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
822
+ msgid "Remove"
823
+ msgstr "Entfernen"
824
+
825
+ #: views/partials/csSimplifiedConfiguration.php:29
826
+ msgid "Require consent from"
827
+ msgstr "Erforderliche Einwilligung"
828
+
829
+ #: views/partials/integrateFooter.php:3
830
+ msgid "Reset settings"
831
+ msgstr "Einstellungen zurücksetzen"
832
+
833
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
834
+ msgid ""
835
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
836
+ "/ html\" (recommended)"
837
+ msgstr ""
838
+ "Beschränken Sie das Plugin so, dass es nur für Anfragen mit dem Inhaltstyp "
839
+ "„text / html“ ausgeführt wird (empfohlen)"
840
+
841
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
842
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
843
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
844
+ msgid "Save settings"
845
+ msgstr "Einstellungen speichern"
846
+
847
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
848
+ #: views/partials/csPluginSettings.php:14
849
+ msgid "Secondary"
850
+ msgstr "Sekundäres"
851
+
852
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
853
+ msgid ""
854
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
855
+ "your AMP pages directly?"
856
+ msgstr ""
857
+ "Sehen Sie den AMP-Cookie-Hinweis beim Testen von Google, aber nicht beim "
858
+ "direkten Besuch Ihrer AMP-Seiten?"
859
+
860
+ #: includes/forms-list-table.php:376
861
+ msgid "Select All"
862
+ msgstr "Alle auswählen"
863
+
864
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
865
+ #: views/partials/csPluginSettings.php:17
866
+ msgid "Select Parsing Engine"
867
+ msgstr "Parsing-Engine auswählen"
868
+
869
+ #: views/partials/modals/modal_almost_there.php:13
870
+ msgid "Select products you have already activated"
871
+ msgstr "Wählen Sie die Produkte die Sie bereits aktiviert haben"
872
+
873
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
874
+ msgid "Select the iubenda AMP configuration file location."
875
+ msgstr "Wählen Sie den Speicherort der iubenda AMP-Konfigurationsdatei."
876
+
877
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
878
+ msgid ""
879
+ "Select whether to display iubenda in a top admin menu or the Settings "
880
+ "submenu."
881
+ msgstr ""
882
+ "Wählen Sie aus, ob iubenda in einem Haupt-Admin-Menü oder im Einstellungen-"
883
+ "Untermenü angezeigt werden soll."
884
+
885
+ #: views/partials/product-card.php:46
886
+ msgid "Service off"
887
+ msgstr "Dienst aus"
888
+
889
+ #: views/partials/product-card.php:46
890
+ #| msgid "Service"
891
+ msgid "Service on"
892
+ msgstr "Dienst ein"
893
+
894
+ #: includes/ServiceRating.php:98
895
+ msgid "Set up a cookie banner"
896
+ msgstr "Ein Cookie-Banner einrichten"
897
+
898
+ #: includes/ServiceRating.php:108
899
+ msgid "Set up a privacy policy"
900
+ msgstr "Eine Datenschutzerklärung einrichten"
901
+
902
+ #: includes/ServiceRating.php:113
903
+ msgid "Set up terms and conditions"
904
+ msgstr "AGBs einrichten"
905
+
906
+ #: includes/settings.php:749
907
+ msgid "Settings saved."
908
+ msgstr "Einstellungen gespeichert."
909
+
910
+ #: views/pp-configuration.php:22
911
+ msgid "Setup your privacy and cookie policy on iubenda.com"
912
+ msgstr ""
913
+ "Richten Sie Ihre Datenschutz- und Cookie-Richtlinie auf iubenda.com ein"
914
+
915
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
916
+ msgid "Shortcode"
917
+ msgstr "Shortcode"
918
+
919
+ #: views/partials/csGeneralSettings.php:14
920
+ #: views/partials/csGeneralSettings.php:23
921
+ msgid "Simplified"
922
+ msgstr "Vereinfacht"
923
+
924
+ #: views/partials/modals/modal_almost_there.php:6
925
+ msgid ""
926
+ "Since you already activated some products for this website, we just ask you "
927
+ "to copy and paste the embedding code of the product you already have to "
928
+ "syncronize your iubenda acount with WP plugin."
929
+ msgstr ""
930
+ "Da Sie bereits einige Produkte für diese Website aktiviert haben, bitten wir "
931
+ "Sie, den Einbettungs-Code des Produkts, das Sie bereits haben, zu kopieren "
932
+ "und einzufügen, um Ihr iubenda-Konto mit dem WP-Plugin zu synchronisieren."
933
+
934
+ #: views/cons-single-form.php:48
935
+ msgid "Status"
936
+ msgstr "Status"
937
+
938
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
939
+ #: views/partials/csGeneralSettings.php:200
940
+ #: views/partials/csGeneralSettings.php:219
941
+ #: views/partials/csGeneralSettings.php:235
942
+ #: views/partials/csPluginSettings.php:70
943
+ #: views/partials/csPluginSettings.php:86
944
+ #: views/partials/csPluginSettings.php:105
945
+ #: views/partials/csPluginSettings.php:121
946
+ msgid "Strictly necessary"
947
+ msgstr "Unbedingt erforderlich"
948
+
949
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
950
+ #: includes/settings.php:78 includes/settings.php:79
951
+ msgid "string"
952
+ msgstr "String"
953
+
954
+ #: includes/settings.php:1114 includes/settings.php:1136
955
+ #: includes/settings.php:1155 includes/settings.php:1175
956
+ msgid "Style"
957
+ msgstr "Stil"
958
+
959
+ #: views/cons-single-form.php:65
960
+ msgid "Subject field"
961
+ msgstr "Betreff-Feld"
962
+
963
+ #: views/cons-single-form.php:61
964
+ msgid "Subject fields"
965
+ msgstr "Betreff-Feldern"
966
+
967
+ #: views/cons-single-form.php:62
968
+ msgid ""
969
+ "Subject fields allow you to store a series of identifying values about your "
970
+ "individual subjects/users. Please map the subject field with the "
971
+ "corresponding form fields where applicable."
972
+ msgstr ""
973
+ "Mit Hilfe von Betreff-Feldern können Sie eine Reihe von identifizierenden "
974
+ "Werten über Ihre einzelnen Betreffe/Nutzer speichern. Bitte ordnen Sie das "
975
+ "Betreff-Feld gegebenenfalls den entsprechenden Formularfeldern zu."
976
+
977
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
978
+ msgid "Submenu"
979
+ msgstr "Submenü"
980
+
981
+ #: includes/settings.php:926
982
+ msgid "Sure!"
983
+ msgstr "Sicher!"
984
+
985
+ #: views/partials/modals/modal_almost_there.php:75
986
+ msgid "Synchronize products"
987
+ msgstr "Produkte synchronisieren"
988
+
989
+ #: includes/settings.php:110
990
+ msgid "Targeting & Advertising"
991
+ msgstr "Targeting & Werbung"
992
+
993
+ #: views/partials/csGeneralSettings.php:188
994
+ #: views/partials/csGeneralSettings.php:204
995
+ #: views/partials/csGeneralSettings.php:223
996
+ #: views/partials/csGeneralSettings.php:239
997
+ #: views/partials/csPluginSettings.php:74
998
+ #: views/partials/csPluginSettings.php:90
999
+ #: views/partials/csPluginSettings.php:109
1000
+ #: views/partials/csPluginSettings.php:125
1001
+ msgid "Targeting &amp; Advertising"
1002
+ msgstr "Targeting &amp; Werbung"
1003
+
1004
+ #: includes/settings.php:412
1005
+ msgid "Terms and condition"
1006
+ msgstr "AGBs"
1007
+
1008
+ #: includes/settings.php:1170
1009
+ msgid "Terms and Conditions"
1010
+ msgstr "AGBs"
1011
+
1012
+ #: views/partials/bannerStyle.php:2
1013
+ msgid "Theme"
1014
+ msgstr "Theme"
1015
+
1016
+ #: includes/ServiceRating.php:109
1017
+ #, php-format
1018
+ msgid ""
1019
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1020
+ "under most privacy laws around the world. This document typically includes "
1021
+ "legally required disclosures about the type of personal data you process, "
1022
+ "why you need to process it, how the processing is done and the user’s rights "
1023
+ "under applicable law."
1024
+ msgstr ""
1025
+ "Dies macht 25&#37; Ihrer Punktzahl aus. Eine Datenschutzerklärung ist in den "
1026
+ "meisten Datenschutzgesetzen der Welt vorgeschrieben. Dieses Dokument enthält "
1027
+ "in der Regel die gesetzlich vorgeschriebenen Angaben über die Art der "
1028
+ "personenbezogenen Daten, die Sie verarbeiten, die Gründe für die "
1029
+ "Verarbeitung, wie die Verarbeitung durchgeführt wird und die Rechte des "
1030
+ "Nutzers nach dem anwendbaren Recht."
1031
+
1032
+ #: includes/ServiceRating.php:104
1033
+ #, php-format
1034
+ msgid ""
1035
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1036
+ "Europe-based users, you likely need to block cookies from running until you "
1037
+ "receive user consent. To do this, select “Automatically block scripts "
1038
+ "detected by the plugin”."
1039
+ msgstr ""
1040
+ "Dies macht 25&#37; Ihrer Punktzahl aus. Wenn Sie in Europa ansässig sind "
1041
+ "oder in Europa ansässige Nutzer haben, müssen Sie wahrscheinlich die "
1042
+ "Verwendung von Cookies blockieren, bis Sie die Einwilligung der Nutzer "
1043
+ "erhalten. Wählen Sie dazu „Automatisch vom Plugin erkannte Skripte "
1044
+ "blockieren“."
1045
+
1046
+ #: includes/ServiceRating.php:114
1047
+ #, php-format
1048
+ msgid ""
1049
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1050
+ "protect you, the website owner, from potential liabilities and more. "
1051
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1052
+ "be legally required as Terms typically contain legally mandatory disclosures."
1053
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1054
+ "that they actually fit your specific scenario."
1055
+ msgstr ""
1056
+ "Dies macht 25&#37; Ihrer Punktzahl aus. AGBs helfen dabei, Sie als Anbieter "
1057
+ "einer Website vor möglichen Haftungsansprüchen und mehr zu schützen. Wenn "
1058
+ "Sie eine E-Commerce-Website oder eine App betreiben, kann dieses Dokument "
1059
+ "außerdem gesetzlich vorgeschrieben sein, da die AGB in der Regel gesetzlich "
1060
+ "vorgeschriebene Angaben enthalten. AGBs sind rechtsverbindliche Dokumente. "
1061
+ "Daher ist es wichtig sicherzustellen, dass sie auch tatsächlich auf Ihr "
1062
+ "spezifisches Szenario zugeschnitten sind."
1063
+
1064
+ #: includes/ServiceRating.php:99
1065
+ #, php-format
1066
+ msgid ""
1067
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1068
+ "your users about your use of cookies and similar tracking technologies, and "
1069
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1070
+ "or ePrivacy apply to you."
1071
+ msgstr ""
1072
+ "Dies macht 25&#37; Ihrer Punktzahl aus. Ihr Cookie-Banner sollte Ihre Nutzer "
1073
+ "über die Verwendung von Cookies und ähnlichen Tracking-Technologien sowie "
1074
+ "über ihre diesbezüglichen Rechte informieren. Sie benötigen möglicherweise "
1075
+ "ein Banner, wenn entweder die DSGVO, CCPA oder ePrivacy für Sie gelten."
1076
+
1077
+ #: views/partials/frontpage_main_box.php:26
1078
+ msgid "This is what you may need to be compliant"
1079
+ msgstr "Das brauchen Sie möglicherweise um gesetzeskonform zu werden"
1080
+
1081
+ #: views/partials/auto_detect_forms.php:29
1082
+ msgid ""
1083
+ "This section lists the forms available for field mapping. The plugin "
1084
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1085
+ "Checkout and WP Forms."
1086
+ msgstr ""
1087
+ "In diesem Abschnitt werden die Formulare aufgelistet, die für die "
1088
+ "Feldzuordnung verfügbar sind. Das Plugin unterstützt und erkennt derzeit: "
1089
+ "WordPress Comment, Contact Form 7, WooCommerce Checkout und WP Forms."
1090
+
1091
+ #: includes/widget/IubendaLegalWidget.php:176
1092
+ msgid "Title:"
1093
+ msgstr "Titel:"
1094
+
1095
+ #: includes/settings.php:905
1096
+ #, php-format
1097
+ msgid ""
1098
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1099
+ "your account</span>. Check your mailbox now and validate your email address, "
1100
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1101
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1102
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1103
+ "notification-alert link-underline\" data-dismiss-"
1104
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1105
+ msgstr ""
1106
+ "Um regelmäßige Scans und vollen Support zu erhalten, <span class=\"text-"
1107
+ "bold\">verifizieren Sie Ihr Konto</span>. Überprüfen Sie jetzt Ihre Mailbox "
1108
+ "und bestätigen Sie Ihre E-Mail-Adresse, oder überprüfen Sie<a href=\"%s\" "
1109
+ "target=\"_blank\" class=\"link-underline\">Ihr Konto</a> auf iubenda.com. "
1110
+ "Wenn Sie dies bereits getan haben, können Sie diese Erinnerung ruhig <a "
1111
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1112
+ "notification-alert link-underline\" data-dismiss-"
1113
+ "key=\"iub_user_needs_to_verify_his_account\">ignorieren.</a>."
1114
+
1115
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1116
+ msgid "Top menu"
1117
+ msgstr "Hauptmenü"
1118
+
1119
+ #: views/partials/modals/modal_no_website_found.php:10
1120
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1121
+ msgid "Try again"
1122
+ msgstr "Erneut versuchen"
1123
+
1124
+ #: includes/settings.php:1154 includes/settings.php:1174
1125
+ msgid "Version"
1126
+ msgstr "Version"
1127
+
1128
+ #: views/partials/header_scanned.php:4
1129
+ msgid "We have analyzed your website in background and this is the result."
1130
+ msgstr ""
1131
+ "Wir haben Ihre Website im Hintergrund analysiert. Hier ist das Ergebnis."
1132
+
1133
+ #: views/partials/buttonPosition.php:28
1134
+ #: views/partials/modals/modal_almost_there.php:62
1135
+ #: views/tc-configuration.php:83
1136
+ #, php-format
1137
+ #| msgid ""
1138
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1139
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1140
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1141
+ msgid ""
1142
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1143
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1144
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1145
+ msgstr ""
1146
+ "Wir waren nicht in der Lage, ein \"Legal\"-Widget in den Footer einzufügen, "
1147
+ "da Ihr Theme inkompatibel ist. Sie können das \"Legal\"-Widget manuell von "
1148
+ "<a href=\"%s\" target=\"_blank\">hier</a> positionieren."
1149
+
1150
+ #: includes/settings.php:931
1151
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1152
+ msgstr "Das tut uns leid. Würden Sie uns bitte ein Feedback geben?"
1153
+
1154
+ #: views/partials/welcomeScreenHeader.php:2
1155
+ msgid "Welcome to iubenda!"
1156
+ msgstr "Willkommen bei iubenda!"
1157
+
1158
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1159
+ #: views/partials/modals/modal_almost_there.php:42
1160
+ msgid "Where can I find this code?"
1161
+ msgstr "Wo kann ich diesen Code finden?"
1162
+
1163
+ #: includes/settings.php:924
1164
+ msgid ""
1165
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1166
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1167
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1168
+ "out."
1169
+ msgstr ""
1170
+ "Puh, was für eine Erleichterung!? Wir haben unzählige Stunden daran "
1171
+ "gearbeitet, dieses Plugin so nützlich wie möglich zu machen - daher sind wir "
1172
+ "sehr froh, dass es Ihnen so gut gefällt. Während Sie hier sind, würden Sie "
1173
+ "uns bitte eine 5-Sterne-Bewertung hinterlassen? Das würde uns wirklich "
1174
+ "helfen."
1175
+
1176
+ #: views/partials/csSimplifiedConfiguration.php:43
1177
+ msgid "Worldwide"
1178
+ msgstr "Weltweit"
1179
+
1180
+ #: includes/settings.php:919
1181
+ msgid "Yes"
1182
+ msgstr "Ja"
1183
+
1184
+ #: includes/settings.php:389
1185
+ msgid "You don't have permission to access this page."
1186
+ msgstr "Sie haben keine Zugriffsberechtigung für diese Seite."
1187
+
1188
+ #: views/partials/csSimplifiedConfiguration.php:92
1189
+ msgid "You should activate this feature if you show ads on your website"
1190
+ msgstr ""
1191
+ "Aktivieren Sie diese Funktion, wenn Sie auf Ihrer Website Anzeigen schalten"
1192
+
1193
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1194
+ msgid "Your embed code"
1195
+ msgstr "Ihr Einbettungs-Code"
1196
+
1197
+ #: views/cons-configuration.php:29
1198
+ msgid "Your iubenda Javascript library public API key"
1199
+ msgstr "Ihr öffentlicher API-Schlüssel für die iubenda Javascript-Bibliothek"
1200
+
1201
+ #: views/partials/modals/modal_pp_created.php:5
1202
+ msgid "Your privacy policy has been created!"
1203
+ msgstr "Ihre Datenschutzerklärung wurde erstellt!"
1204
+
1205
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1206
+ #: views/partials/siteInfo.php:20
1207
+ msgid "Your rating"
1208
+ msgstr "Ihre Punktzahl"
1209
+
1210
+ #: includes/QuickGeneratorService.php:111
1211
+ msgid ""
1212
+ "Your website has been created and your legal documents have been generated. "
1213
+ "Setup your cookie banner and privacy policy button to complete the "
1214
+ "integration."
1215
+ msgstr ""
1216
+ "Ihre Website wurde erstellt und Ihre Rechtsdokumente wurden generiert. "
1217
+ "Richten Sie Ihr Cookie-Banner und die Datenschutzerklärung-Button ein, um "
1218
+ "die Integration zu vervollständigen."
languages/iubenda-es_ES.mo ADDED
Binary file
languages/iubenda-es_ES.po ADDED
@@ -0,0 +1,1211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-06-22 14:50+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:52+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Español\n"
8
+ "Language: es_ES\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(obligatorio)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Un shortcode es un pequeño segmento de código que permite integrar elementos "
31
+ "interactivos o crear complejos diseños de páginas con el mínimo esfuerzo.<br>"
32
+ "Sólo tienes que copiar y pegar el shortcode donde quieras que aparezca el "
33
+ "botón."
34
+
35
+ #: views/cons-configuration.php:17
36
+ msgid "Activate & Configure Consent Solution by"
37
+ msgstr "Activa y configura la Consent Solution"
38
+
39
+ #: views/cons-configuration.php:14
40
+ msgid ""
41
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
42
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
43
+ "your website."
44
+ msgstr ""
45
+ "Activa la <strong>Consent Solution</strong> en tu dashboard de iubenda y "
46
+ "pega aquí la <strong>clave API</strong>para integrarla en tu web."
47
+
48
+ #: views/integrate-setup.php:21
49
+ msgid "Add a cookie banner"
50
+ msgstr "Añadir un banner de cookies"
51
+
52
+ #: views/cons-configuration.php:44
53
+ msgid "Add forms"
54
+ msgstr "Añade los formularios"
55
+
56
+ #: views/cons-single-form.php:268
57
+ msgid "Add New Document"
58
+ msgstr "Añadir nuevo documento"
59
+
60
+ #: views/cons-single-form.php:216
61
+ msgid "Add New Exclude"
62
+ msgstr "Añadir nuevo Excluir"
63
+
64
+ #: views/partials/csGeneralSettings.php:247
65
+ #: views/partials/csPluginSettings.php:133
66
+ msgid "Add New iframe"
67
+ msgstr "Añadir nuevo iframe"
68
+
69
+ #: views/cons-single-form.php:155
70
+ msgid "Add New Preference"
71
+ msgstr "Añadir nueva preferencia"
72
+
73
+ #: views/partials/csGeneralSettings.php:212
74
+ #: views/partials/csPluginSettings.php:98
75
+ msgid "Add New Script"
76
+ msgstr "Añadir nuevo script"
77
+
78
+ #: views/integrate-setup.php:140
79
+ msgid "Add the privacy policy button"
80
+ msgstr "Añadir el botón de la política de privacidad"
81
+
82
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
83
+ msgid "Add to the footer automatically"
84
+ msgstr "Añadir automáticamente al pie de página"
85
+
86
+ #: includes/forms-list-table.php:279
87
+ msgid "All form sources"
88
+ msgstr "Todas las fuentes de los formularios"
89
+
90
+ #: views/cons-single-form.php:250
91
+ msgid "Alternatively, you may add your own custom document identifiers."
92
+ msgstr ""
93
+ "También puedes añadir tus propios identificadores de documentos "
94
+ "personalizados."
95
+
96
+ #: includes/amp.php:281
97
+ msgid "AMP Cookie Consent"
98
+ msgstr "Consentimiento de cookies AMP"
99
+
100
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
101
+ #: views/partials/csGeneralSettings.php:203
102
+ #: views/partials/csGeneralSettings.php:222
103
+ #: views/partials/csGeneralSettings.php:238
104
+ #: views/partials/csPluginSettings.php:73
105
+ #: views/partials/csPluginSettings.php:89
106
+ #: views/partials/csPluginSettings.php:108
107
+ #: views/partials/csPluginSettings.php:124
108
+ msgid "Analytics"
109
+ msgstr "Estadísticas"
110
+
111
+ #: views/partials/frontpage_main_box.php:22
112
+ msgid "Analyzing your website"
113
+ msgstr "Analizar tu sitio web"
114
+
115
+ #: views/cons-configuration.php:53
116
+ msgid "Auto-detect forms"
117
+ msgstr "Detectar automáticamente los formularios"
118
+
119
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
120
+ msgid "Auto-generated configuration file"
121
+ msgstr "Archivo de configuración generado automáticamente"
122
+
123
+ #: views/cons-single-form.php:71
124
+ msgid "Autogenerated"
125
+ msgstr "Generado automáticamente"
126
+
127
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
128
+ #: views/partials/csPluginSettings.php:4
129
+ msgid "Automatically block scripts detected by the plugin"
130
+ msgstr "Bloquear automáticamente los scripts detectados por el plugin"
131
+
132
+ #: views/partials/bannerPosition.php:41
133
+ msgid "Background-overlay"
134
+ msgstr "Superposición de fondo"
135
+
136
+ #: views/partials/csSimplifiedConfiguration.php:68
137
+ msgid "Banner buttons"
138
+ msgstr "Botones del banner"
139
+
140
+ #: includes/settings.php:107
141
+ msgid "Basic interactions & functionalities"
142
+ msgstr "Interacciones y funcionalidades básicas"
143
+
144
+ #: views/partials/csGeneralSettings.php:185
145
+ #: views/partials/csGeneralSettings.php:201
146
+ #: views/partials/csGeneralSettings.php:220
147
+ #: views/partials/csGeneralSettings.php:236
148
+ #: views/partials/csPluginSettings.php:71
149
+ #: views/partials/csPluginSettings.php:87
150
+ #: views/partials/csPluginSettings.php:106
151
+ #: views/partials/csPluginSettings.php:122
152
+ msgid "Basic interactions &amp; functionalities"
153
+ msgstr "Interacciones y funcionalidades básicas"
154
+
155
+ #: views/partials/csGeneralSettings.php:173
156
+ msgid "Blocked domains"
157
+ msgstr "Dominios bloqueados"
158
+
159
+ #: views/partials/csSimplifiedConfiguration.php:22
160
+ msgid "Both"
161
+ msgstr "Ambas"
162
+
163
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
164
+ msgid "Button position"
165
+ msgstr "Posición del botón"
166
+
167
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
168
+ msgid "Button style"
169
+ msgstr "Estilo del botón"
170
+
171
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
172
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
173
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
174
+ msgid "Cancel"
175
+ msgstr "Anular"
176
+
177
+ #: views/partials/csSimplifiedConfiguration.php:18
178
+ msgid "CCPA Only"
179
+ msgstr "Solo CCPA"
180
+
181
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
182
+ #: views/tc-configuration.php:16
183
+ msgid "clicking here"
184
+ msgstr "haciendo clic aquí"
185
+
186
+ #: views/partials/csGeneralSettings.php:2
187
+ msgid "Configuration"
188
+ msgstr "Configuración"
189
+
190
+ #: views/partials/product-card.php:48
191
+ msgid "Configure"
192
+ msgstr "Configurar"
193
+
194
+ #: views/partials/csManualConfiguration.php:5
195
+ msgid "Configure cookie banner by"
196
+ msgstr "Configura tu banner de cookies"
197
+
198
+ #: views/tc-configuration.php:15
199
+ msgid "Configure terms and conditions by"
200
+ msgstr "Configura los términos y condiciones"
201
+
202
+ #: views/partials/csManualConfiguration.php:2
203
+ msgid ""
204
+ "Configure your cookie banner on our website and paste here the embed code to "
205
+ "integrate it to your website."
206
+ msgstr ""
207
+ "Configura tu banner de cookies en nuestro sitio web y pega aquí el código de "
208
+ "integración para integrarlo en tu sitio web."
209
+
210
+ #: views/tc-configuration.php:12
211
+ msgid ""
212
+ "Configure your terms and conditions on our website and paste here the embed "
213
+ "code to integrate the button on your website."
214
+ msgstr ""
215
+ "Configura tus términos y condiciones en nuestro sitio web y pega aquí el "
216
+ "código de integración para insertar el botón en tu sitio web."
217
+
218
+ #: views/cons-configuration.php:31
219
+ msgid "Confirm API"
220
+ msgstr "Confirmar API"
221
+
222
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
223
+ #: includes/settings.php:1182
224
+ msgid "Consent Solution"
225
+ msgstr "Consent Solution"
226
+
227
+ #: views/partials/modals/modal_almost_there.php:37
228
+ msgid "Consent Solution API key"
229
+ msgstr "Clave API de la Consent Solution"
230
+
231
+ #: views/partials/modals/modal_select_language.php:54
232
+ msgid "Continue"
233
+ msgstr "Continuar"
234
+
235
+ #: includes/settings.php:91 includes/settings.php:424
236
+ #: includes/settings.php:1162
237
+ msgid "Cookie Solution"
238
+ msgstr "Cookie Solution"
239
+
240
+ #: includes/QuickGeneratorService.php:625
241
+ #, php-format
242
+ msgid ""
243
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
244
+ ". For instructions on how to fix this, please read <a class=\"link-"
245
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
246
+ msgstr ""
247
+ "Actualmente, no tienes permiso de escritura para <i class=\"text-bold\">"
248
+ "%s</i>. Para saber cómo solucionarlo, consulta <a class=\"link-underline\" "
249
+ "target=\\\"blank\\\" href=\\\"%s\\\">nuestra guía</a>."
250
+
251
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
252
+ msgid "Custom configuration file"
253
+ msgstr "Archivo de configuración personalizado"
254
+
255
+ #: views/partials/csGeneralSettings.php:177
256
+ #: views/partials/csPluginSettings.php:63
257
+ msgid "Custom iframes"
258
+ msgstr "iframes personalizados"
259
+
260
+ #: views/partials/csGeneralSettings.php:176
261
+ #: views/partials/csPluginSettings.php:62
262
+ msgid "Custom scripts"
263
+ msgstr "Scripts personalizados"
264
+
265
+ #: views/partials/csPluginSettings.php:59
266
+ msgid "Custom settings"
267
+ msgstr "Ajustes personalizados"
268
+
269
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
270
+ #: views/tc-configuration.php:50
271
+ msgid "Dark"
272
+ msgstr "Oscuro"
273
+
274
+ #: includes/forms-list-table.php:90
275
+ msgid "Date"
276
+ msgstr "Fecha"
277
+
278
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
279
+ #: views/partials/csGeneralSettings.php:115
280
+ msgid "Default language"
281
+ msgstr "Idioma por defecto"
282
+
283
+ #: includes/forms-list-table.php:160
284
+ msgid "Delete"
285
+ msgstr "Eliminar"
286
+
287
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
288
+ msgid "Delete all plugin data upon deactivation"
289
+ msgstr "Eliminar todos los datos del plugin al desactivarlo"
290
+
291
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
292
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
293
+ msgstr "No ejecutar el plugin dentro del Feed RSS (recomendado)"
294
+
295
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
296
+ msgid "Do not run the plugin on POST requests (recommended)"
297
+ msgstr "No ejecutar el plugin para solicitudes POST (recomendado)"
298
+
299
+ #: views/partials/footer.php:5
300
+ msgid "Documentation"
301
+ msgstr "Documentación"
302
+
303
+ #: includes/forms-list-table.php:159
304
+ msgid "Edit"
305
+ msgstr "Modificar"
306
+
307
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
308
+ msgid "Enable Google AMP support"
309
+ msgstr "Habilitar el soporte para Google AMP"
310
+
311
+ #: views/partials/csSimplifiedConfiguration.php:88
312
+ msgid "Enable IAB Transparency and Consent Framework"
313
+ msgstr "Habilitar el Marco de Transparencia y Consentimiento de IAB"
314
+
315
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
316
+ #: views/partials/csPluginSettings.php:24
317
+ msgid ""
318
+ "Enable this option to improve performance <strong>only</strong> if your site "
319
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
320
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
321
+ "keep this setting disabled"
322
+ msgstr ""
323
+ "Habilita esta opción para mejorar el rendimiento <strong>solo</strong> si tu "
324
+ "sitio web <strong>no</strong> utiliza un sistema de caché o un plugin de "
325
+ "caché y si <strong>no</strong> recopila el consentimiento por categoría. Si "
326
+ "no estás seguro, mantén esta opción deshabilitada"
327
+
328
+ #: includes/settings.php:917
329
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
330
+ msgstr "¿Estás disfrutando del plugin de iubenda Cookie & Consent Solution?"
331
+
332
+ #: views/partials/csGeneralSettings.php:216
333
+ #: views/partials/csGeneralSettings.php:232
334
+ #: views/partials/csPluginSettings.php:102
335
+ #: views/partials/csPluginSettings.php:118
336
+ msgid "Enter custom iframe"
337
+ msgstr "Introducir iframes personalizados"
338
+
339
+ #: views/partials/csGeneralSettings.php:181
340
+ #: views/partials/csGeneralSettings.php:197
341
+ #: views/partials/csPluginSettings.php:67
342
+ #: views/partials/csPluginSettings.php:83
343
+ msgid "Enter custom script"
344
+ msgstr "Introducir scripts personalizados"
345
+
346
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
347
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
348
+ #: views/cons-single-form.php:260
349
+ msgid "Enter field name"
350
+ msgstr "Introducir el nombre del campo"
351
+
352
+ #: views/partials/csSimplifiedConfiguration.php:59
353
+ msgid "EU Only"
354
+ msgstr "Solo UE"
355
+
356
+ #: views/cons-single-form.php:164
357
+ msgid "Exclude field"
358
+ msgstr "Excluir campo"
359
+
360
+ #: views/cons-single-form.php:159
361
+ msgid "Exclude fields"
362
+ msgstr "Excluir campos"
363
+
364
+ #: views/cons-single-form.php:160
365
+ msgid ""
366
+ "Exclude fields allow you to create a list of fields that you would like to "
367
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
368
+ "other fields not related to the consent)."
369
+ msgstr ""
370
+ "Excluir campos te permite crear una lista de campos que te gustaría excluir "
371
+ "de tus pruebas registradas de la Consent Solution (por ejemplo, la "
372
+ "contraseña u otros campos no relacionados con el consentimiento)."
373
+
374
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
375
+ #: views/partials/csGeneralSettings.php:202
376
+ #: views/partials/csGeneralSettings.php:221
377
+ #: views/partials/csGeneralSettings.php:237
378
+ #: views/partials/csPluginSettings.php:72
379
+ #: views/partials/csPluginSettings.php:88
380
+ #: views/partials/csPluginSettings.php:107
381
+ #: views/partials/csPluginSettings.php:123
382
+ msgid "Experience enhancement"
383
+ msgstr "Mejora de la experiencia"
384
+
385
+ #: views/partials/csSimplifiedConfiguration.php:72
386
+ msgid "Explicit Accept and Customize buttons"
387
+ msgstr "Mostrar los botones Aceptar y Personalizar"
388
+
389
+ #: views/partials/csSimplifiedConfiguration.php:77
390
+ msgid "Explicit Reject button"
391
+ msgstr "Mostrar el botón Rechazar"
392
+
393
+ #: views/cons-single-form.php:12
394
+ msgid "Field Mapping"
395
+ msgstr "Asignación de campos"
396
+
397
+ #: includes/forms-list-table.php:89
398
+ msgid "Fields"
399
+ msgstr "Campos"
400
+
401
+ #: includes/forms-list-table.php:260
402
+ msgid "Filter"
403
+ msgstr "Filtrar"
404
+
405
+ #: includes/forms-list-table.php:277
406
+ msgid "Filter by source"
407
+ msgstr "Filtrar por fuente"
408
+
409
+ #: includes/forms.php:579 includes/forms.php:593
410
+ msgid "First name"
411
+ msgstr "Nombre"
412
+
413
+ #: views/partials/modals/modal_sync.php:4
414
+ msgid ""
415
+ "First of all, tell us if you already use our products for this website or if "
416
+ "you want to start from scratch"
417
+ msgstr ""
418
+ "En primer lugar, coméntanos si ya utilizas nuestros productos para este "
419
+ "sitio web o si quieres empezar desde cero"
420
+
421
+ #: includes/forms.php:153
422
+ msgid "Form"
423
+ msgstr "Formulario"
424
+
425
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
426
+ msgid "Form field"
427
+ msgstr "Campo del formulario"
428
+
429
+ #: includes/forms-list-table.php:87
430
+ msgid "Form ID"
431
+ msgstr "ID del formulario"
432
+
433
+ #: includes/settings.php:701
434
+ msgid "Form saving failed. Please fill the Subject fields."
435
+ msgstr ""
436
+ "No se ha podido guardar el formulario. Rellena los campos del interesado."
437
+
438
+ #: includes/forms-list-table.php:88
439
+ msgid "Form Source"
440
+ msgstr "Fuente del formulario"
441
+
442
+ #: includes/forms-list-table.php:86
443
+ msgid "Form Title"
444
+ msgstr "Nombre del formulario"
445
+
446
+ #: includes/forms.php:152
447
+ msgid "Forms"
448
+ msgstr "Formularios"
449
+
450
+ #: views/partials/modals/modal_pp_created.php:7
451
+ msgid ""
452
+ "From here you can customize your privacy policy by adding the services you "
453
+ "use within your website or you can customize the style of the button that "
454
+ "displays your privacy policy."
455
+ msgstr ""
456
+ "Desde aquí puedes personalizar tu política de privacidad añadiendo los "
457
+ "servicios que utilizas en tu sitio web o puedes personalizar el estilo del "
458
+ "botón que muestra tu política de privacidad."
459
+
460
+ #: views/partials/csSimplifiedConfiguration.php:14
461
+ msgid "GDPR Only"
462
+ msgstr "Solo RGPD"
463
+
464
+ #: views/partials/modals/modal_pp_created.php:9
465
+ msgid "Got it"
466
+ msgstr "Entendido"
467
+
468
+ #: views/frontpage.php:9
469
+ msgid "Help me get compliant!"
470
+ msgstr "¡Ayúdame a cumplir con la normativa!"
471
+
472
+ #: views/partials/modals/modal_rating.php:11
473
+ msgid "Here’s how we calculate your rating."
474
+ msgstr "Así es como calculamos tu puntuación."
475
+
476
+ #: views/partials/siteInfo.php:21
477
+ msgid "How is it calculated?"
478
+ msgstr "¿Cómo se calcula?"
479
+
480
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
481
+ msgid "HTML"
482
+ msgstr "HTML"
483
+
484
+ #: views/partials/modals/modal_no_website_found.php:11
485
+ #: views/partials/modals/modal_sync.php:8
486
+ msgid "I want to start from scratch"
487
+ msgstr "Quiero empezar desde cero"
488
+
489
+ #: views/cons-single-form.php:225
490
+ msgid "Identifier"
491
+ msgstr "Identificador"
492
+
493
+ #: views/cons-single-form.php:222
494
+ msgid ""
495
+ "In general, it's important that you declare which legal documents are being "
496
+ "agreed upon when each consent is collected. However, if you use iubenda for "
497
+ "your legal documents, it is *required* that you identify the documents by "
498
+ "selecting them here."
499
+ msgstr ""
500
+ "En general, es fundamental indicar qué documentos legales se han acordado "
501
+ "cuando se recopila cada consentimiento. Sin embargo, si utilizas iubenda "
502
+ "para tus documentos legales, se *requiere* identificar los documentos "
503
+ "seleccionándolos aquí."
504
+
505
+ #: views/partials/integrateFooter.php:4
506
+ msgid "Integrate"
507
+ msgstr "Integrar"
508
+
509
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
510
+ msgid "Integrate manually"
511
+ msgstr "Integrar manualmente"
512
+
513
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
514
+ msgid "Integration"
515
+ msgstr "Integración"
516
+
517
+ #: views/partials/modals/modal_no_website_found.php:8
518
+ msgid ""
519
+ "It seems that it is not possible to access your data with the code you "
520
+ "pasted, do you want to try again or do you prefer to start configuring your "
521
+ "website from scratch?"
522
+ msgstr ""
523
+ "Parece que no es posible acceder a tus datos con el código que has pegado, "
524
+ "¿quieres volver a intentarlo o prefieres empezar a configurar tu web desde "
525
+ "cero?"
526
+
527
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
528
+ msgid ""
529
+ "It seems that it is not possible to access your data with the code you "
530
+ "pasted, do you want to try again."
531
+ msgstr ""
532
+ "Parece que no es posible acceder a tus datos con el código que has pegado, "
533
+ "¿quieres volver a intentarlo?"
534
+
535
+ #: views/products-page.php:15
536
+ msgid ""
537
+ "It seems that you have not activated any of our services, we recommend you "
538
+ "to activate them and increase your level of compliance and avoid risking "
539
+ "fines."
540
+ msgstr ""
541
+ "Parece ser que no has activado ninguno de nuestros servicios, te "
542
+ "recomendamos que los actives para aumentar tu nivel de conformidad y evitar "
543
+ "así el riesgo de multas."
544
+
545
+ #: includes/widget/IubendaLegalWidget.php:18
546
+ msgid "Iubenda legal"
547
+ msgstr "Iubenda legal"
548
+
549
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
550
+ msgid "Iubenda legal block"
551
+ msgstr "Iubenda legal block"
552
+
553
+ #: includes/widget/IubendaLegalWidget.php:21
554
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
555
+ msgstr ""
556
+ "El widget legal de iubenda para la Política de Privacidad y los Términos y "
557
+ "Condiciones"
558
+
559
+ #: views/partials/modals/modal_sync.php:6
560
+ msgid "I’ve already made the set up on iubenda.com"
561
+ msgstr "Ya he hecho la configuración en iubenda.com"
562
+
563
+ #: includes/forms.php:585 includes/forms.php:605
564
+ msgid "Last name"
565
+ msgstr "Apellidos"
566
+
567
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
568
+ msgid "Learn how to fix it"
569
+ msgstr "Así puedes solucionarlo"
570
+
571
+ #: views/partials/csSimplifiedConfiguration.php:88
572
+ #: views/partials/modals/modal_rating.php:22
573
+ msgid "Learn More"
574
+ msgstr "Saber más"
575
+
576
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
577
+ #: views/partials/csPluginSettings.php:22
578
+ msgid ""
579
+ "Leave scripts untouched on the page if the user has already given consent"
580
+ msgstr ""
581
+ "Dejar los scripts intactos en la página si el usuario ya ha prestado su "
582
+ "consentimiento"
583
+
584
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
585
+ #: includes/widget/IubendaLegalWidget.php:167
586
+ msgid "Legal"
587
+ msgstr "Legal"
588
+
589
+ #: views/cons-single-form.php:221
590
+ msgid "Legal documents"
591
+ msgstr "Documentos legales"
592
+
593
+ #: views/partials/csSimplifiedConfiguration.php:9
594
+ msgid "Legislation"
595
+ msgstr "Legislación"
596
+
597
+ #: includes/settings.php:1116 includes/settings.php:1138
598
+ msgid "legislation"
599
+ msgstr "legislación"
600
+
601
+ #: views/frontpage.php:8
602
+ msgid "Let's configure your website for compliance."
603
+ msgstr "Vamos a configurar tu sitio web para que cumpla con la normativa."
604
+
605
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
606
+ #: views/tc-configuration.php:41
607
+ msgid "Light"
608
+ msgstr "Claro"
609
+
610
+ #: views/partials/csGeneralSettings.php:35
611
+ #: views/partials/csGeneralSettings.php:42
612
+ msgid "Manual embed"
613
+ msgstr "Integración manual"
614
+
615
+ #: views/cons-single-form.php:44
616
+ msgid "Map fields"
617
+ msgstr "Asignar campos"
618
+
619
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
620
+ msgid "Menu position"
621
+ msgstr "Posición del menú"
622
+
623
+ #: includes/forms.php:599
624
+ msgid "Middle name"
625
+ msgstr "Segundo nombre"
626
+
627
+ #: views/partials/modals/modal_almost_there.php:5
628
+ msgid "Nice! We are almost there."
629
+ msgstr "¡Muy bien! Ya casi está."
630
+
631
+ #: includes/settings.php:920
632
+ msgid "No"
633
+ msgstr "No"
634
+
635
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
636
+ msgid ""
637
+ "No file available. Save changes to generate iubenda AMP configuration file."
638
+ msgstr ""
639
+ "No hay ningún archivo disponible. Guarda los cambios para generar el archivo "
640
+ "de configuración de iubenda AMP."
641
+
642
+ #: includes/forms-list-table.php:347
643
+ msgid "No forms found."
644
+ msgstr "No se han encontrado formularios."
645
+
646
+ #: includes/settings.php:927 includes/settings.php:934
647
+ msgid "No thanks"
648
+ msgstr "No, gracias"
649
+
650
+ #: views/cons-single-form.php:71
651
+ msgid "None"
652
+ msgstr "Ninguno"
653
+
654
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
655
+ #: views/partials/csGeneralSettings.php:199
656
+ #: views/partials/csGeneralSettings.php:218
657
+ #: views/partials/csGeneralSettings.php:234
658
+ #: views/partials/csPluginSettings.php:69
659
+ #: views/partials/csPluginSettings.php:85
660
+ #: views/partials/csPluginSettings.php:104
661
+ #: views/partials/csPluginSettings.php:120
662
+ msgid "Not set"
663
+ msgstr "Sin especificar"
664
+
665
+ #: views/partials/modals/modal_select_language.php:4
666
+ msgid "Now, select your website language"
667
+ msgstr "Ahora, selecciona el idioma de tu sitio web"
668
+
669
+ #: includes/settings.php:933
670
+ msgid "Ok sure!"
671
+ msgstr "¡Vale, por supuesto!"
672
+
673
+ #: includes/ServiceRating.php:103
674
+ msgid "Only track users that give consent"
675
+ msgstr "Rastrea únicamente a los usuarios que han prestado su consentimiento"
676
+
677
+ #: views/partials/modals/modal_no_website_found.php:6
678
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
679
+ msgid "Ooops! <br> No website found with this embed code."
680
+ msgstr ""
681
+ "¡Ups! <br> No se ha encontrado ningún sitio web con este código de "
682
+ "integración."
683
+
684
+ #: views/partials/modals/modal_sync.php:7
685
+ msgid "or"
686
+ msgstr "o"
687
+
688
+ #: views/partials/csSimplifiedConfiguration.php:83
689
+ msgid "Other options"
690
+ msgstr "Otras opciones"
691
+
692
+ #: views/partials/welcomeScreenHeader.php:3
693
+ msgid "Our plugin will help you to make your website compliant in minutes."
694
+ msgstr ""
695
+ "Nuestro plugin te ayudará a que tu sitio web cumpla con la normativa en "
696
+ "cuestión de minutos."
697
+
698
+ #: includes/QuickGeneratorService.php:137
699
+ msgid ""
700
+ "Our products has been integrated successfully, now customize all products to "
701
+ "increase the compliance rating and make your website fully compliant."
702
+ msgstr ""
703
+ "Nuestros productos se han integrado correctamente, ahora personalízalos para "
704
+ "aumentar el grado de conformidad y hacer que tu sitio web respete totalmente "
705
+ "la normativa."
706
+
707
+ #: views/partials/modals/modal_almost_there.php:39
708
+ msgid "Paste your API key here"
709
+ msgstr "Pega tu clave API aquí"
710
+
711
+ #: views/partials/csManualConfiguration.php:11
712
+ msgid "Paste your cookie solution embed code here"
713
+ msgstr "Pega aquí el código de integración de tu Cookie Solution"
714
+
715
+ #: views/partials/languagesTabs.php:21
716
+ msgid "Paste your embed code here"
717
+ msgstr "Pega tu código de integración aquí"
718
+
719
+ #: views/cons-configuration.php:23
720
+ msgid "Paste your public API key here"
721
+ msgstr "Pega aquí tu clave API pública"
722
+
723
+ #: views/tc-configuration.php:21
724
+ msgid "Paste your terms and conditions embed code here"
725
+ msgstr "Pega aquí el código de integración de tus términos y condiciones"
726
+
727
+ #: includes/settings.php:628
728
+ #, php-format
729
+ msgid ""
730
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
731
+ "target=\"_blank\">Discussion settings</a>."
732
+ msgstr ""
733
+ "Para los comentarios, habilita la posibilidad de activar o desactivar el "
734
+ "almacenamiento de datos personales en una cookie. Para hacerlo, dirígete a "
735
+ "<a href=\"%s\" target=\"_blank\">Ajustes de comentarios</a>."
736
+
737
+ #: views/cons-single-form.php:234
738
+ msgid "Please select each legal document available on your site."
739
+ msgstr "Selecciona cada documento legal disponible en tu sitio web."
740
+
741
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
742
+ msgid "Plugin settings"
743
+ msgstr "Configuración del plugin"
744
+
745
+ #: includes/settings.php:1115 includes/settings.php:1137
746
+ #: includes/settings.php:1156 includes/settings.php:1176
747
+ #: views/partials/bannerPosition.php:20
748
+ msgid "Position"
749
+ msgstr "Posición"
750
+
751
+ #: views/cons-single-form.php:102
752
+ msgid "Preferences field"
753
+ msgstr "Campo de preferencias"
754
+
755
+ #: views/cons-single-form.php:98
756
+ msgid "Preferences fields"
757
+ msgstr "Campos de preferencias"
758
+
759
+ #: views/cons-single-form.php:99
760
+ msgid ""
761
+ "Preferences fields allow you to store a record of the various opt-ins points "
762
+ "at which the user has agreed or given consent, such as fields for agreeing "
763
+ "to terms and conditions, newsletter, profiling, etc."
764
+ msgstr ""
765
+ "Los campos de preferencias te permiten almacenar un registro de los "
766
+ "distintos puntos de decisión de participación en los que el usuario ha "
767
+ "aceptado o dado su consentimiento, como los campos para aceptar los términos "
768
+ "y condiciones, la newsletter, la elaboración de perfiles, etc."
769
+
770
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
771
+ #: views/partials/csPluginSettings.php:10
772
+ msgid "Primary"
773
+ msgstr "Primario"
774
+
775
+ #: includes/settings.php:418 includes/settings.php:1150
776
+ msgid "Privacy and Cookie Policy"
777
+ msgstr "Política de Privacidad y Cookies"
778
+
779
+ #: includes/PrivacyPolicyGenerator.php:23
780
+ msgid "Privacy Policy"
781
+ msgstr "Política de privacidad"
782
+
783
+ #: views/partials/breadcrumb.php:2
784
+ msgid "Products"
785
+ msgstr "Productos"
786
+
787
+ #: views/partials/csGeneralSettings.php:246
788
+ #: views/partials/csPluginSettings.php:132
789
+ msgid ""
790
+ "Provide a list of domains for any custom iframes you'd like to block, and "
791
+ "assign their purposes. To make sure they are blocked correctly, please add "
792
+ "domains in the same format as 'example.com', without any protocols e.g. "
793
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
794
+ "domains or subdomains."
795
+ msgstr ""
796
+ "Proporciona una lista de dominios para cada iframe personalizado que quieras "
797
+ "bloquear y asígnales su finalidad. Para estar seguro de haberlos bloqueado "
798
+ "correctamente, añade los dominios con el mismo formato que 'example.com', "
799
+ "sin ningún protocolo (por ejemplo, 'http://' o 'https://'). También puedes "
800
+ "utilizar metacaracteres (*) para incluir dominios principales o subdominios."
801
+
802
+ #: views/partials/csGeneralSettings.php:211
803
+ #: views/partials/csPluginSettings.php:97
804
+ msgid ""
805
+ "Provide a list of domains for any custom scripts you'd like to block, and "
806
+ "assign their purposes. To make sure they are blocked correctly, please add "
807
+ "domains in the same format as 'example.com', without any protocols e.g. "
808
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
809
+ "domains or subdomains."
810
+ msgstr ""
811
+ "Proporciona una lista de dominios para cada script personalizado que quieras "
812
+ "bloquear y asígnales su finalidad. Para estar seguro de haberlos bloqueado "
813
+ "correctamente, añade los dominios con el mismo formato que 'example.com', "
814
+ "sin ningún protocolo (por ejemplo, 'http://' o 'https://'). También puedes "
815
+ "utilizar metacaracteres (*) para incluir dominios principales o subdominios."
816
+
817
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
818
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
819
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
820
+ msgid "Remove"
821
+ msgstr "Suprimir"
822
+
823
+ #: views/partials/csSimplifiedConfiguration.php:29
824
+ msgid "Require consent from"
825
+ msgstr "Requerir el consentimiento de"
826
+
827
+ #: views/partials/integrateFooter.php:3
828
+ msgid "Reset settings"
829
+ msgstr "Restablecer la configuración"
830
+
831
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
832
+ msgid ""
833
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
834
+ "/ html\" (recommended)"
835
+ msgstr ""
836
+ "Restringir la ejecución del plugin solo para las solicitudes que tienen "
837
+ "“Content-type: text / html” (recomendado)"
838
+
839
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
840
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
841
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
842
+ msgid "Save settings"
843
+ msgstr "Guardar ajustes"
844
+
845
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
846
+ #: views/partials/csPluginSettings.php:14
847
+ msgid "Secondary"
848
+ msgstr "Secundario"
849
+
850
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
851
+ msgid ""
852
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
853
+ "your AMP pages directly?"
854
+ msgstr ""
855
+ "¿Consigues ver el banner de cookies AMP cuando pruebas desde Google pero no "
856
+ "cuando visitas tus páginas AMP directamente?"
857
+
858
+ #: includes/forms-list-table.php:376
859
+ msgid "Select All"
860
+ msgstr "Seleccionar todo"
861
+
862
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
863
+ #: views/partials/csPluginSettings.php:17
864
+ msgid "Select Parsing Engine"
865
+ msgstr "Selecciona el motor de parking"
866
+
867
+ #: views/partials/modals/modal_almost_there.php:13
868
+ msgid "Select products you have already activated"
869
+ msgstr "Selecciona los productos que ya has activado"
870
+
871
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
872
+ msgid "Select the iubenda AMP configuration file location."
873
+ msgstr "Selecciona la ubicación del archivo de configuración AMP de iubenda."
874
+
875
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
876
+ msgid ""
877
+ "Select whether to display iubenda in a top admin menu or the Settings "
878
+ "submenu."
879
+ msgstr ""
880
+ "Elige si quieres visualizar iubenda en el menú principal del panel de "
881
+ "administración o en un submenú de Configuración."
882
+
883
+ #: views/partials/product-card.php:46
884
+ msgid "Service off"
885
+ msgstr "Servicio desactivado"
886
+
887
+ #: views/partials/product-card.php:46
888
+ #| msgid "Service"
889
+ msgid "Service on"
890
+ msgstr "Servicio activado"
891
+
892
+ #: includes/ServiceRating.php:98
893
+ msgid "Set up a cookie banner"
894
+ msgstr "Configura un banner de cookies"
895
+
896
+ #: includes/ServiceRating.php:108
897
+ msgid "Set up a privacy policy"
898
+ msgstr "Configura una política de privacidad"
899
+
900
+ #: includes/ServiceRating.php:113
901
+ msgid "Set up terms and conditions"
902
+ msgstr "Configura un documento de términos y condiciones"
903
+
904
+ #: includes/settings.php:749
905
+ msgid "Settings saved."
906
+ msgstr "Ajustes guardados."
907
+
908
+ #: views/pp-configuration.php:22
909
+ msgid "Setup your privacy and cookie policy on iubenda.com"
910
+ msgstr "Configura tu política de privacidad y cookies en iubenda.com"
911
+
912
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
913
+ msgid "Shortcode"
914
+ msgstr "Shortcode"
915
+
916
+ #: views/partials/csGeneralSettings.php:14
917
+ #: views/partials/csGeneralSettings.php:23
918
+ msgid "Simplified"
919
+ msgstr "Simplificada"
920
+
921
+ #: views/partials/modals/modal_almost_there.php:6
922
+ msgid ""
923
+ "Since you already activated some products for this website, we just ask you "
924
+ "to copy and paste the embedding code of the product you already have to "
925
+ "syncronize your iubenda acount with WP plugin."
926
+ msgstr ""
927
+ "Como ya has activado algunos productos para este sitio web, solo te pedimos "
928
+ "que copies y pegues el código de integración del producto que ya tienes para "
929
+ "sincronizar tu cuenta de iubenda con el plugin de WP."
930
+
931
+ #: views/cons-single-form.php:48
932
+ msgid "Status"
933
+ msgstr "Estado"
934
+
935
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
936
+ #: views/partials/csGeneralSettings.php:200
937
+ #: views/partials/csGeneralSettings.php:219
938
+ #: views/partials/csGeneralSettings.php:235
939
+ #: views/partials/csPluginSettings.php:70
940
+ #: views/partials/csPluginSettings.php:86
941
+ #: views/partials/csPluginSettings.php:105
942
+ #: views/partials/csPluginSettings.php:121
943
+ msgid "Strictly necessary"
944
+ msgstr "Estrictamente necesario"
945
+
946
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
947
+ #: includes/settings.php:78 includes/settings.php:79
948
+ msgid "string"
949
+ msgstr "cadena de caracteres"
950
+
951
+ #: includes/settings.php:1114 includes/settings.php:1136
952
+ #: includes/settings.php:1155 includes/settings.php:1175
953
+ msgid "Style"
954
+ msgstr "Estilo"
955
+
956
+ #: views/cons-single-form.php:65
957
+ msgid "Subject field"
958
+ msgstr "Campos del interesado"
959
+
960
+ #: views/cons-single-form.php:61
961
+ msgid "Subject fields"
962
+ msgstr "Campos del interesado"
963
+
964
+ #: views/cons-single-form.php:62
965
+ msgid ""
966
+ "Subject fields allow you to store a series of identifying values about your "
967
+ "individual subjects/users. Please map the subject field with the "
968
+ "corresponding form fields where applicable."
969
+ msgstr ""
970
+ "Los campos del interesado te permiten almacenar una serie de valores "
971
+ "identificativos sobre tus interesados/usuarios individuales. Asigna el campo "
972
+ "del interesado con los campos del formulario correspondientes cuando sea "
973
+ "aplicable."
974
+
975
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
976
+ msgid "Submenu"
977
+ msgstr "Submenú"
978
+
979
+ #: includes/settings.php:926
980
+ msgid "Sure!"
981
+ msgstr "¡Claro!"
982
+
983
+ #: views/partials/modals/modal_almost_there.php:75
984
+ msgid "Synchronize products"
985
+ msgstr "Sincronizar productos"
986
+
987
+ #: includes/settings.php:110
988
+ msgid "Targeting & Advertising"
989
+ msgstr "Segmentación y Publicidad"
990
+
991
+ #: views/partials/csGeneralSettings.php:188
992
+ #: views/partials/csGeneralSettings.php:204
993
+ #: views/partials/csGeneralSettings.php:223
994
+ #: views/partials/csGeneralSettings.php:239
995
+ #: views/partials/csPluginSettings.php:74
996
+ #: views/partials/csPluginSettings.php:90
997
+ #: views/partials/csPluginSettings.php:109
998
+ #: views/partials/csPluginSettings.php:125
999
+ msgid "Targeting &amp; Advertising"
1000
+ msgstr "Segmentación y Publicidad"
1001
+
1002
+ #: includes/settings.php:412
1003
+ msgid "Terms and condition"
1004
+ msgstr "Términos y condiciones"
1005
+
1006
+ #: includes/settings.php:1170
1007
+ msgid "Terms and Conditions"
1008
+ msgstr "Términos y Condiciones"
1009
+
1010
+ #: views/partials/bannerStyle.php:2
1011
+ msgid "Theme"
1012
+ msgstr "Tema"
1013
+
1014
+ #: includes/ServiceRating.php:109
1015
+ #, php-format
1016
+ msgid ""
1017
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1018
+ "under most privacy laws around the world. This document typically includes "
1019
+ "legally required disclosures about the type of personal data you process, "
1020
+ "why you need to process it, how the processing is done and the user’s rights "
1021
+ "under applicable law."
1022
+ msgstr ""
1023
+ "Este apartado representa el 25&#37; de tu puntuación. La política de "
1024
+ "privacidad es un requisito para la mayoría de las leyes de privacidad "
1025
+ "internacionales. Este documento suele incluir información obligatoria sobre "
1026
+ "el tipo de datos personales tratados, las finalidades y métodos de "
1027
+ "tratamiento y los derechos de los usuarios según la legislación aplicable."
1028
+
1029
+ #: includes/ServiceRating.php:104
1030
+ #, php-format
1031
+ msgid ""
1032
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1033
+ "Europe-based users, you likely need to block cookies from running until you "
1034
+ "receive user consent. To do this, select “Automatically block scripts "
1035
+ "detected by the plugin”."
1036
+ msgstr ""
1037
+ "Este apartado representa el 25&#37; de tu puntuación. Si estás establecido "
1038
+ "en Europa o tienes usuarios que se encuentran en Europa, es probable que "
1039
+ "tengas que bloquear las cookies hasta que recibas el consentimiento del "
1040
+ "usuario. Para ello, selecciona “Bloquear automáticamente los scripts "
1041
+ "detectados por el plugin”."
1042
+
1043
+ #: includes/ServiceRating.php:114
1044
+ #, php-format
1045
+ msgid ""
1046
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1047
+ "protect you, the website owner, from potential liabilities and more. "
1048
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1049
+ "be legally required as Terms typically contain legally mandatory disclosures."
1050
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1051
+ "that they actually fit your specific scenario."
1052
+ msgstr ""
1053
+ "Este apartado representa el 25&#37; de tu puntuación. Los términos y "
1054
+ "condiciones ayudan a proteger al propietario del sitio web de posibles "
1055
+ "responsabilidades legales y de mucho más. Además, si gestionas un sitio web "
1056
+ "o una aplicación de comercio electrónico, este documento puede ser requerido "
1057
+ "por ley, ya que suele contener información legalmente obligatoria. Los "
1058
+ "términos y condiciones son legalmente vinculantes y, por lo tanto, es "
1059
+ "importante asegurarse de que se ajusten a tu caso concreto."
1060
+
1061
+ #: includes/ServiceRating.php:99
1062
+ #, php-format
1063
+ msgid ""
1064
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1065
+ "your users about your use of cookies and similar tracking technologies, and "
1066
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1067
+ "or ePrivacy apply to you."
1068
+ msgstr ""
1069
+ "Este apartado representa el 25&#37; de tu puntuación. El banner de cookies "
1070
+ "debe informar a tus usuarios sobre el uso de cookies y de tecnologías de "
1071
+ "seguimiento similares, así como de sus derechos al respecto. Es posible que "
1072
+ "necesites un banner si se te aplica el RGPD, la CCPA o la Directiva ePrivacy."
1073
+
1074
+ #: views/partials/frontpage_main_box.php:26
1075
+ msgid "This is what you may need to be compliant"
1076
+ msgstr "Puede que necesites esto para cumplir con la ley"
1077
+
1078
+ #: views/partials/auto_detect_forms.php:29
1079
+ msgid ""
1080
+ "This section lists the forms available for field mapping. The plugin "
1081
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1082
+ "Checkout and WP Forms."
1083
+ msgstr ""
1084
+ "Esta sección enumera los formularios disponibles para la asignación de "
1085
+ "campos. El plugin actualmente detecta y es compatible con: WordPress Comment,"
1086
+ " Contact Form 7, WooCommerce Checkout y WP Forms."
1087
+
1088
+ #: includes/widget/IubendaLegalWidget.php:176
1089
+ msgid "Title:"
1090
+ msgstr "Título:"
1091
+
1092
+ #: includes/settings.php:905
1093
+ #, php-format
1094
+ msgid ""
1095
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1096
+ "your account</span>. Check your mailbox now and validate your email address, "
1097
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1098
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1099
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1100
+ "notification-alert link-underline\" data-dismiss-"
1101
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1102
+ msgstr ""
1103
+ "Para garantizar escaneos regulares y un soporte completo, <span class=\"text-"
1104
+ "bold\">verifica tu cuenta</span>. Comprueba tu buzón ahora y valida tu "
1105
+ "dirección de correo electrónico, o comprueba <a href=\"%s\" "
1106
+ "target=\"_blank\" class=\"link-underline\">tu cuenta</a> en iubenda.com. Si "
1107
+ "ya lo has hecho, puedes <a href=\"javascript:void(0)\" class=\"notice-"
1108
+ "dismiss-by-text dismiss-notification-alert link-underline\" data-dismiss-"
1109
+ "key=\"iub_user_needs_to_verify_his_account\">ignorar este recordatorio</a>."
1110
+
1111
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1112
+ msgid "Top menu"
1113
+ msgstr "Menú principal"
1114
+
1115
+ #: views/partials/modals/modal_no_website_found.php:10
1116
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1117
+ msgid "Try again"
1118
+ msgstr "Inténtalo de nuevo"
1119
+
1120
+ #: includes/settings.php:1154 includes/settings.php:1174
1121
+ msgid "Version"
1122
+ msgstr "Versión"
1123
+
1124
+ #: views/partials/header_scanned.php:4
1125
+ msgid "We have analyzed your website in background and this is the result."
1126
+ msgstr "Hemos analizado tu sitio web a fondo y este es el resultado."
1127
+
1128
+ #: views/partials/buttonPosition.php:28
1129
+ #: views/partials/modals/modal_almost_there.php:62
1130
+ #: views/tc-configuration.php:83
1131
+ #, php-format
1132
+ #| msgid ""
1133
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1134
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1135
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1136
+ msgid ""
1137
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1138
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1139
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1140
+ msgstr ""
1141
+ "No hemos podido añadir el widget \"Legal\" al pie de página porque tu tema "
1142
+ "no es compatible, puedes colocar el widget \"Legal\" de forma manual desde "
1143
+ "<a href=\"%s\" target=\"_blank\">aquí</a>."
1144
+
1145
+ #: includes/settings.php:931
1146
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1147
+ msgstr "Lo lamentamos. ¿Te importaría dejarnos un comentario?"
1148
+
1149
+ #: views/partials/welcomeScreenHeader.php:2
1150
+ msgid "Welcome to iubenda!"
1151
+ msgstr "¡Bienvenido a iubenda!"
1152
+
1153
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1154
+ #: views/partials/modals/modal_almost_there.php:42
1155
+ msgid "Where can I find this code?"
1156
+ msgstr "¿Dónde puedo encontrar este código?"
1157
+
1158
+ #: includes/settings.php:924
1159
+ msgid ""
1160
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1161
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1162
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1163
+ "out."
1164
+ msgstr ""
1165
+ "¡Qué alivio! Hemos trabajado muchísimas horas para que este plugin sea lo "
1166
+ "más eficaz posible, por lo que estamos encantados de que lo estés "
1167
+ "disfrutando. Ya que estás aquí, ¿te importaría dejarnos una valoración de 5 "
1168
+ "estrellas? Sería de gran ayuda."
1169
+
1170
+ #: views/partials/csSimplifiedConfiguration.php:43
1171
+ msgid "Worldwide"
1172
+ msgstr "Todo el mundo"
1173
+
1174
+ #: includes/settings.php:919
1175
+ msgid "Yes"
1176
+ msgstr "Sí"
1177
+
1178
+ #: includes/settings.php:389
1179
+ msgid "You don't have permission to access this page."
1180
+ msgstr "No tienes permiso para acceder a esta página."
1181
+
1182
+ #: views/partials/csSimplifiedConfiguration.php:92
1183
+ msgid "You should activate this feature if you show ads on your website"
1184
+ msgstr "Deberías activar esta función si muestras anuncios en tu sitio web"
1185
+
1186
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1187
+ msgid "Your embed code"
1188
+ msgstr "Tu código de integración"
1189
+
1190
+ #: views/cons-configuration.php:29
1191
+ msgid "Your iubenda Javascript library public API key"
1192
+ msgstr "Tu clave API pública de la biblioteca Javascript de iubenda"
1193
+
1194
+ #: views/partials/modals/modal_pp_created.php:5
1195
+ msgid "Your privacy policy has been created!"
1196
+ msgstr "¡Se ha creado tu política de privacidad!"
1197
+
1198
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1199
+ #: views/partials/siteInfo.php:20
1200
+ msgid "Your rating"
1201
+ msgstr "Tu puntuación"
1202
+
1203
+ #: includes/QuickGeneratorService.php:111
1204
+ msgid ""
1205
+ "Your website has been created and your legal documents have been generated. "
1206
+ "Setup your cookie banner and privacy policy button to complete the "
1207
+ "integration."
1208
+ msgstr ""
1209
+ "Se ha creado tu sitio web y se han generado tus documentos legales. "
1210
+ "Configura tu banner de cookies y el botón de la política de privacidad para "
1211
+ "completar la integración."
languages/iubenda-fr_FR.mo ADDED
Binary file
languages/iubenda-fr_FR.po ADDED
@@ -0,0 +1,1226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-06-22 14:50+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:53+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: French (France)\n"
8
+ "Language: fr_FR\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(nécessaire)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Un code court ou \"shortcode\" est un bout de code qui permet d’incorporer "
31
+ "des éléments interactifs ou de simplifier la création de mises en page "
32
+ "élaborées.<br>Il vous suffit de copier le code court et de le coller là où "
33
+ "vous souhaitez que le bouton apparaisse."
34
+
35
+ #: views/cons-configuration.php:17
36
+ msgid "Activate & Configure Consent Solution by"
37
+ msgstr "Activez et configurez la Consent Solution en"
38
+
39
+ #: views/cons-configuration.php:14
40
+ msgid ""
41
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
42
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
43
+ "your website."
44
+ msgstr ""
45
+ "Activez la <strong>Consent Solution</strong> depuis notre site web iubenda "
46
+ "(plus précisément depuis votre tableau de bord) et collez ici la <strong>clé "
47
+ "API</strong> pour intégrer la solution sur votre site web."
48
+
49
+ #: views/integrate-setup.php:21
50
+ msgid "Add a cookie banner"
51
+ msgstr "Ajoutez un bandeau cookies"
52
+
53
+ #: views/cons-configuration.php:44
54
+ msgid "Add forms"
55
+ msgstr "Ajouter des formulaires"
56
+
57
+ #: views/cons-single-form.php:268
58
+ msgid "Add New Document"
59
+ msgstr "Ajouter un nouveau document"
60
+
61
+ #: views/cons-single-form.php:216
62
+ msgid "Add New Exclude"
63
+ msgstr "Ajouter une nouvelle exclusion"
64
+
65
+ #: views/partials/csGeneralSettings.php:247
66
+ #: views/partials/csPluginSettings.php:133
67
+ msgid "Add New iframe"
68
+ msgstr "Ajouter une nouvelle balise iframe"
69
+
70
+ #: views/cons-single-form.php:155
71
+ msgid "Add New Preference"
72
+ msgstr "Ajouter une nouvelle préférence"
73
+
74
+ #: views/partials/csGeneralSettings.php:212
75
+ #: views/partials/csPluginSettings.php:98
76
+ msgid "Add New Script"
77
+ msgstr "Ajouter un nouveau script"
78
+
79
+ #: views/integrate-setup.php:140
80
+ msgid "Add the privacy policy button"
81
+ msgstr "Ajouter le bouton vers la politique de confidentialité"
82
+
83
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
84
+ msgid "Add to the footer automatically"
85
+ msgstr "Ajouter automatiquement au pied de page"
86
+
87
+ #: includes/forms-list-table.php:279
88
+ msgid "All form sources"
89
+ msgstr "Toutes les sources"
90
+
91
+ #: views/cons-single-form.php:250
92
+ msgid "Alternatively, you may add your own custom document identifiers."
93
+ msgstr ""
94
+ "Alternativement, vous pouvez ajouter vos propres identifiants personnalisés "
95
+ "pour les documents."
96
+
97
+ #: includes/amp.php:281
98
+ msgid "AMP Cookie Consent"
99
+ msgstr "Consentement aux cookies sur les pages AMP"
100
+
101
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
102
+ #: views/partials/csGeneralSettings.php:203
103
+ #: views/partials/csGeneralSettings.php:222
104
+ #: views/partials/csGeneralSettings.php:238
105
+ #: views/partials/csPluginSettings.php:73
106
+ #: views/partials/csPluginSettings.php:89
107
+ #: views/partials/csPluginSettings.php:108
108
+ #: views/partials/csPluginSettings.php:124
109
+ msgid "Analytics"
110
+ msgstr "Analyses"
111
+
112
+ #: views/partials/frontpage_main_box.php:22
113
+ msgid "Analyzing your website"
114
+ msgstr "Analyse de votre site web"
115
+
116
+ #: views/cons-configuration.php:53
117
+ msgid "Auto-detect forms"
118
+ msgstr "Détecter automatiquement les formulaires"
119
+
120
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
121
+ msgid "Auto-generated configuration file"
122
+ msgstr "Fichier de configuration généré automatiquement"
123
+
124
+ #: views/cons-single-form.php:71
125
+ msgid "Autogenerated"
126
+ msgstr "Généré automatiquement"
127
+
128
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
129
+ #: views/partials/csPluginSettings.php:4
130
+ msgid "Automatically block scripts detected by the plugin"
131
+ msgstr "Bloquer automatiquement les scripts détectés par le plugin"
132
+
133
+ #: views/partials/bannerPosition.php:41
134
+ msgid "Background-overlay"
135
+ msgstr "Arrière-plan sombre"
136
+
137
+ #: views/partials/csSimplifiedConfiguration.php:68
138
+ msgid "Banner buttons"
139
+ msgstr "Boutons du bandeau cookies"
140
+
141
+ #: includes/settings.php:107
142
+ msgid "Basic interactions & functionalities"
143
+ msgstr "Interactions et fonctionnalités de base"
144
+
145
+ #: views/partials/csGeneralSettings.php:185
146
+ #: views/partials/csGeneralSettings.php:201
147
+ #: views/partials/csGeneralSettings.php:220
148
+ #: views/partials/csGeneralSettings.php:236
149
+ #: views/partials/csPluginSettings.php:71
150
+ #: views/partials/csPluginSettings.php:87
151
+ #: views/partials/csPluginSettings.php:106
152
+ #: views/partials/csPluginSettings.php:122
153
+ msgid "Basic interactions &amp; functionalities"
154
+ msgstr "Interactions et fonctionnalités de base"
155
+
156
+ #: views/partials/csGeneralSettings.php:173
157
+ msgid "Blocked domains"
158
+ msgstr "Domaines bloqués"
159
+
160
+ #: views/partials/csSimplifiedConfiguration.php:22
161
+ msgid "Both"
162
+ msgstr "Les deux"
163
+
164
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
165
+ msgid "Button position"
166
+ msgstr "Emplacement du bouton"
167
+
168
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
169
+ msgid "Button style"
170
+ msgstr "Style du bouton"
171
+
172
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
173
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
174
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
175
+ msgid "Cancel"
176
+ msgstr "Annuler"
177
+
178
+ #: views/partials/csSimplifiedConfiguration.php:18
179
+ msgid "CCPA Only"
180
+ msgstr "CCPA uniquement"
181
+
182
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
183
+ #: views/tc-configuration.php:16
184
+ msgid "clicking here"
185
+ msgstr "cliquant ici"
186
+
187
+ #: views/partials/csGeneralSettings.php:2
188
+ msgid "Configuration"
189
+ msgstr "Configuration"
190
+
191
+ #: views/partials/product-card.php:48
192
+ msgid "Configure"
193
+ msgstr "Configurer"
194
+
195
+ #: views/partials/csManualConfiguration.php:5
196
+ msgid "Configure cookie banner by"
197
+ msgstr "Configurez le bandeau cookies en"
198
+
199
+ #: views/tc-configuration.php:15
200
+ msgid "Configure terms and conditions by"
201
+ msgstr "Configurez vos conditions générales en"
202
+
203
+ #: views/partials/csManualConfiguration.php:2
204
+ msgid ""
205
+ "Configure your cookie banner on our website and paste here the embed code to "
206
+ "integrate it to your website."
207
+ msgstr ""
208
+ "Configurez votre bandeau cookies depuis notre site iubenda et collez ici le "
209
+ "code d’intégration pour installer le bandeau sur votre site web."
210
+
211
+ #: views/tc-configuration.php:12
212
+ msgid ""
213
+ "Configure your terms and conditions on our website and paste here the embed "
214
+ "code to integrate the button on your website."
215
+ msgstr ""
216
+ "Configurez vos conditions générales directement sur notre site web iubenda "
217
+ "puis collez ici le code d’intégration afin d’installer sur votre site le "
218
+ "bouton vers le document."
219
+
220
+ #: views/cons-configuration.php:31
221
+ msgid "Confirm API"
222
+ msgstr "Confirmer l’API"
223
+
224
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
225
+ #: includes/settings.php:1182
226
+ msgid "Consent Solution"
227
+ msgstr "Consent Solution"
228
+
229
+ #: views/partials/modals/modal_almost_there.php:37
230
+ msgid "Consent Solution API key"
231
+ msgstr "Clé API Consent Solution"
232
+
233
+ #: views/partials/modals/modal_select_language.php:54
234
+ msgid "Continue"
235
+ msgstr "Continuer"
236
+
237
+ #: includes/settings.php:91 includes/settings.php:424
238
+ #: includes/settings.php:1162
239
+ msgid "Cookie Solution"
240
+ msgstr "Cookie Solution"
241
+
242
+ #: includes/QuickGeneratorService.php:625
243
+ #, php-format
244
+ msgid ""
245
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
246
+ ". For instructions on how to fix this, please read <a class=\"link-"
247
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
248
+ msgstr ""
249
+ "Pour le moment, vous n’avez pas de droit d’écriture pour <i class=\"text-"
250
+ "bold\">%s</i>. Pour obtenir des instructions sur la façon de résoudre ce "
251
+ "problème, veuillez lire <a class=\"link-underline\" target=\\\"blank\\\" "
252
+ "href=\\\"%s\\\">notre guide</a>."
253
+
254
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
255
+ msgid "Custom configuration file"
256
+ msgstr "Fichier de configuration personnalisé"
257
+
258
+ #: views/partials/csGeneralSettings.php:177
259
+ #: views/partials/csPluginSettings.php:63
260
+ msgid "Custom iframes"
261
+ msgstr "iframes personnalisées"
262
+
263
+ #: views/partials/csGeneralSettings.php:176
264
+ #: views/partials/csPluginSettings.php:62
265
+ msgid "Custom scripts"
266
+ msgstr "Scripts personnalisés"
267
+
268
+ #: views/partials/csPluginSettings.php:59
269
+ msgid "Custom settings"
270
+ msgstr "Paramètres personnalisés"
271
+
272
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
273
+ #: views/tc-configuration.php:50
274
+ msgid "Dark"
275
+ msgstr "Mode sombre"
276
+
277
+ #: includes/forms-list-table.php:90
278
+ msgid "Date"
279
+ msgstr "Date"
280
+
281
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
282
+ #: views/partials/csGeneralSettings.php:115
283
+ msgid "Default language"
284
+ msgstr "Langue par défaut"
285
+
286
+ #: includes/forms-list-table.php:160
287
+ msgid "Delete"
288
+ msgstr "Supprimer"
289
+
290
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
291
+ msgid "Delete all plugin data upon deactivation"
292
+ msgstr "Supprimer toutes les données du plugin lors de la désactivation"
293
+
294
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
295
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
296
+ msgstr "Ne pas faire fonctionner le plugin dans le feed RSS (recommandé)"
297
+
298
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
299
+ msgid "Do not run the plugin on POST requests (recommended)"
300
+ msgstr "Ne pas faire fonctionner le plugin sur les requêtes POST (recommandé)"
301
+
302
+ #: views/partials/footer.php:5
303
+ msgid "Documentation"
304
+ msgstr "Documentation"
305
+
306
+ #: includes/forms-list-table.php:159
307
+ msgid "Edit"
308
+ msgstr "Modifier"
309
+
310
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
311
+ msgid "Enable Google AMP support"
312
+ msgstr "Activer la compatibilité avec Google AMP"
313
+
314
+ #: views/partials/csSimplifiedConfiguration.php:88
315
+ msgid "Enable IAB Transparency and Consent Framework"
316
+ msgstr "Activer le cadre de transparence et de consentement de l’IAB"
317
+
318
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
319
+ #: views/partials/csPluginSettings.php:24
320
+ msgid ""
321
+ "Enable this option to improve performance <strong>only</strong> if your site "
322
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
323
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
324
+ "keep this setting disabled"
325
+ msgstr ""
326
+ "Activez cette option pour améliorer la performance <strong>seulement</strong>"
327
+ " si votre site web n’utilise <strong>pas</strong> de système de cache ou "
328
+ "d’extension de cache et si vous ne collectez <strong>pas</strong> le "
329
+ "consentement par catégorie. En cas de doute, laissez ce paramètre désactivé"
330
+
331
+ #: includes/settings.php:917
332
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
333
+ msgstr "Vous appréciez l’extension Cookie et Consent Solution de iubenda ?"
334
+
335
+ #: views/partials/csGeneralSettings.php:216
336
+ #: views/partials/csGeneralSettings.php:232
337
+ #: views/partials/csPluginSettings.php:102
338
+ #: views/partials/csPluginSettings.php:118
339
+ msgid "Enter custom iframe"
340
+ msgstr "Entrer iframe personnalisé"
341
+
342
+ #: views/partials/csGeneralSettings.php:181
343
+ #: views/partials/csGeneralSettings.php:197
344
+ #: views/partials/csPluginSettings.php:67
345
+ #: views/partials/csPluginSettings.php:83
346
+ msgid "Enter custom script"
347
+ msgstr "Entrer script personnalisé"
348
+
349
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
350
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
351
+ #: views/cons-single-form.php:260
352
+ msgid "Enter field name"
353
+ msgstr "Indiquer le nom du champ"
354
+
355
+ #: views/partials/csSimplifiedConfiguration.php:59
356
+ msgid "EU Only"
357
+ msgstr "Dans l’UE uniquement"
358
+
359
+ #: views/cons-single-form.php:164
360
+ msgid "Exclude field"
361
+ msgstr "Exclure le champ"
362
+
363
+ #: views/cons-single-form.php:159
364
+ msgid "Exclude fields"
365
+ msgstr "Exclure les champs"
366
+
367
+ #: views/cons-single-form.php:160
368
+ msgid ""
369
+ "Exclude fields allow you to create a list of fields that you would like to "
370
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
371
+ "other fields not related to the consent)."
372
+ msgstr ""
373
+ "Cette fonctionnalité vous permet de créer une liste de champs que vous "
374
+ "souhaiteriez exclure des preuves de consentement enregistrées par la Consent "
375
+ "Solution (par ex. un mot de passe ou d’autres champs qui ne sont pas "
376
+ "associés au consentement)."
377
+
378
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
379
+ #: views/partials/csGeneralSettings.php:202
380
+ #: views/partials/csGeneralSettings.php:221
381
+ #: views/partials/csGeneralSettings.php:237
382
+ #: views/partials/csPluginSettings.php:72
383
+ #: views/partials/csPluginSettings.php:88
384
+ #: views/partials/csPluginSettings.php:107
385
+ #: views/partials/csPluginSettings.php:123
386
+ msgid "Experience enhancement"
387
+ msgstr "Amélioration de l’expérience"
388
+
389
+ #: views/partials/csSimplifiedConfiguration.php:72
390
+ msgid "Explicit Accept and Customize buttons"
391
+ msgstr ""
392
+ "Afficher les boutons \"Accepter\" et \"En savoir plus et personnaliser\""
393
+
394
+ #: views/partials/csSimplifiedConfiguration.php:77
395
+ msgid "Explicit Reject button"
396
+ msgstr "Afficher le bouton \"Refuser\""
397
+
398
+ #: views/cons-single-form.php:12
399
+ msgid "Field Mapping"
400
+ msgstr "Cartographie des champs"
401
+
402
+ #: includes/forms-list-table.php:89
403
+ msgid "Fields"
404
+ msgstr "Champs"
405
+
406
+ #: includes/forms-list-table.php:260
407
+ msgid "Filter"
408
+ msgstr "Filtrer"
409
+
410
+ #: includes/forms-list-table.php:277
411
+ msgid "Filter by source"
412
+ msgstr "Filtrer par source"
413
+
414
+ #: includes/forms.php:579 includes/forms.php:593
415
+ msgid "First name"
416
+ msgstr "Prénom"
417
+
418
+ #: views/partials/modals/modal_sync.php:4
419
+ msgid ""
420
+ "First of all, tell us if you already use our products for this website or if "
421
+ "you want to start from scratch"
422
+ msgstr ""
423
+ "Pour commencer, veuillez indiquer si vous utilisez déjà nos produits pour ce "
424
+ "site web ou si vous souhaitez partir de zéro"
425
+
426
+ #: includes/forms.php:153
427
+ msgid "Form"
428
+ msgstr "Formulaire"
429
+
430
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
431
+ msgid "Form field"
432
+ msgstr "Champ du formulaire"
433
+
434
+ #: includes/forms-list-table.php:87
435
+ msgid "Form ID"
436
+ msgstr "ID du formulaire"
437
+
438
+ #: includes/settings.php:701
439
+ msgid "Form saving failed. Please fill the Subject fields."
440
+ msgstr ""
441
+ "La sauvegarde du formulaire a échoué. Veuillez remplir les champs en rapport "
442
+ "à la personne concernée."
443
+
444
+ #: includes/forms-list-table.php:88
445
+ msgid "Form Source"
446
+ msgstr "Source du formulaire"
447
+
448
+ #: includes/forms-list-table.php:86
449
+ msgid "Form Title"
450
+ msgstr "Titre du formulaire"
451
+
452
+ #: includes/forms.php:152
453
+ msgid "Forms"
454
+ msgstr "Formulaires"
455
+
456
+ #: views/partials/modals/modal_pp_created.php:7
457
+ msgid ""
458
+ "From here you can customize your privacy policy by adding the services you "
459
+ "use within your website or you can customize the style of the button that "
460
+ "displays your privacy policy."
461
+ msgstr ""
462
+ "Ici, vous pouvez personnaliser votre politique de confidentialité en "
463
+ "ajoutant les technologies que vous utilisez sur votre site web ou encore "
464
+ "personnaliser le style du bouton qui affichera la politique."
465
+
466
+ #: views/partials/csSimplifiedConfiguration.php:14
467
+ msgid "GDPR Only"
468
+ msgstr "RGPD uniquement"
469
+
470
+ #: views/partials/modals/modal_pp_created.php:9
471
+ msgid "Got it"
472
+ msgstr "C’est compris"
473
+
474
+ #: views/frontpage.php:9
475
+ msgid "Help me get compliant!"
476
+ msgstr "Aidez-moi à mettre mon site en règle !"
477
+
478
+ #: views/partials/modals/modal_rating.php:11
479
+ msgid "Here’s how we calculate your rating."
480
+ msgstr "Voici notre méthode pour calculer votre note."
481
+
482
+ #: views/partials/siteInfo.php:21
483
+ msgid "How is it calculated?"
484
+ msgstr "Comment est-elle calculée ?"
485
+
486
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
487
+ msgid "HTML"
488
+ msgstr "HTML"
489
+
490
+ #: views/partials/modals/modal_no_website_found.php:11
491
+ #: views/partials/modals/modal_sync.php:8
492
+ msgid "I want to start from scratch"
493
+ msgstr "Je veux repartir de zéro"
494
+
495
+ #: views/cons-single-form.php:225
496
+ msgid "Identifier"
497
+ msgstr "Identifiant"
498
+
499
+ #: views/cons-single-form.php:222
500
+ msgid ""
501
+ "In general, it's important that you declare which legal documents are being "
502
+ "agreed upon when each consent is collected. However, if you use iubenda for "
503
+ "your legal documents, it is *required* that you identify the documents by "
504
+ "selecting them here."
505
+ msgstr ""
506
+ "En général, il est important de déclarer quels documents juridiques ont été "
507
+ "acceptés lors de l’obtention de chaque consentement. Cependant, si vous "
508
+ "utilisez iubenda pour vos documents juridiques, il est *nécessaire* "
509
+ "d’identifier les documents en les sélectionnant ici."
510
+
511
+ #: views/partials/integrateFooter.php:4
512
+ msgid "Integrate"
513
+ msgstr "Intégrer"
514
+
515
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
516
+ msgid "Integrate manually"
517
+ msgstr "Installer manuellement"
518
+
519
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
520
+ msgid "Integration"
521
+ msgstr "Intégration"
522
+
523
+ #: views/partials/modals/modal_no_website_found.php:8
524
+ msgid ""
525
+ "It seems that it is not possible to access your data with the code you "
526
+ "pasted, do you want to try again or do you prefer to start configuring your "
527
+ "website from scratch?"
528
+ msgstr ""
529
+ "Il semble qu’il ne soit pas possible d’accéder à vos données grâce au code "
530
+ "indiqué. Voulez-vous réessayer ou préférez-vous configurer votre site web en "
531
+ "repartant de zéro ?"
532
+
533
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
534
+ msgid ""
535
+ "It seems that it is not possible to access your data with the code you "
536
+ "pasted, do you want to try again."
537
+ msgstr ""
538
+ "Il semble qu’il ne soit pas possible d’accéder à vos données grâce au code "
539
+ "indiqué, voulez-vous réessayer ?"
540
+
541
+ #: views/products-page.php:15
542
+ msgid ""
543
+ "It seems that you have not activated any of our services, we recommend you "
544
+ "to activate them and increase your level of compliance and avoid risking "
545
+ "fines."
546
+ msgstr ""
547
+ "Il semble que vous n’ayez activé aucun de nos services. Nous vous "
548
+ "recommandons de les activer afin de renforcer votre niveau de conformité et "
549
+ "d’éviter des sanctions."
550
+
551
+ #: includes/widget/IubendaLegalWidget.php:18
552
+ msgid "Iubenda legal"
553
+ msgstr "Documents juridiques iubenda"
554
+
555
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
556
+ msgid "Iubenda legal block"
557
+ msgstr "Iubenda legal block"
558
+
559
+ #: includes/widget/IubendaLegalWidget.php:21
560
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
561
+ msgstr ""
562
+ "Widget \"Documents juridiques iubenda\" pour Politique de Confidentialité et "
563
+ "Conditions Générales"
564
+
565
+ #: views/partials/modals/modal_sync.php:6
566
+ msgid "I’ve already made the set up on iubenda.com"
567
+ msgstr "J’ai déjà effectué la configuration sur iubenda.com"
568
+
569
+ #: includes/forms.php:585 includes/forms.php:605
570
+ msgid "Last name"
571
+ msgstr "Nom de famille"
572
+
573
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
574
+ msgid "Learn how to fix it"
575
+ msgstr "Voilà comment y remédier"
576
+
577
+ #: views/partials/csSimplifiedConfiguration.php:88
578
+ #: views/partials/modals/modal_rating.php:22
579
+ msgid "Learn More"
580
+ msgstr "En savoir plus"
581
+
582
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
583
+ #: views/partials/csPluginSettings.php:22
584
+ msgid ""
585
+ "Leave scripts untouched on the page if the user has already given consent"
586
+ msgstr ""
587
+ "Laisser les scripts intacts sur la page si l’utilisateur a déjà donné son "
588
+ "consentement"
589
+
590
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
591
+ #: includes/widget/IubendaLegalWidget.php:167
592
+ msgid "Legal"
593
+ msgstr "Documents juridiques"
594
+
595
+ #: views/cons-single-form.php:221
596
+ msgid "Legal documents"
597
+ msgstr "Documents juridiques"
598
+
599
+ #: views/partials/csSimplifiedConfiguration.php:9
600
+ msgid "Legislation"
601
+ msgstr "Législation"
602
+
603
+ #: includes/settings.php:1116 includes/settings.php:1138
604
+ msgid "legislation"
605
+ msgstr "législation"
606
+
607
+ #: views/frontpage.php:8
608
+ msgid "Let's configure your website for compliance."
609
+ msgstr "Configurons ensemble votre site web pour le rendre conforme."
610
+
611
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
612
+ #: views/tc-configuration.php:41
613
+ msgid "Light"
614
+ msgstr "Mode clair"
615
+
616
+ #: views/partials/csGeneralSettings.php:35
617
+ #: views/partials/csGeneralSettings.php:42
618
+ msgid "Manual embed"
619
+ msgstr "Installation manuelle"
620
+
621
+ #: views/cons-single-form.php:44
622
+ msgid "Map fields"
623
+ msgstr "Cartographier les champs"
624
+
625
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
626
+ msgid "Menu position"
627
+ msgstr "Emplacement dans le menu"
628
+
629
+ #: includes/forms.php:599
630
+ msgid "Middle name"
631
+ msgstr "Deuxième prénom"
632
+
633
+ #: views/partials/modals/modal_almost_there.php:5
634
+ msgid "Nice! We are almost there."
635
+ msgstr "Nous y sommes presque !"
636
+
637
+ #: includes/settings.php:920
638
+ msgid "No"
639
+ msgstr "Non"
640
+
641
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
642
+ msgid ""
643
+ "No file available. Save changes to generate iubenda AMP configuration file."
644
+ msgstr ""
645
+ "Aucun fichier trouvé. Enregistrez les modifications afin de générer un "
646
+ "fichier pour la configuration AMP avec iubenda."
647
+
648
+ #: includes/forms-list-table.php:347
649
+ msgid "No forms found."
650
+ msgstr "Aucun formulaire trouvé."
651
+
652
+ #: includes/settings.php:927 includes/settings.php:934
653
+ msgid "No thanks"
654
+ msgstr "Non merci"
655
+
656
+ #: views/cons-single-form.php:71
657
+ msgid "None"
658
+ msgstr "Aucun"
659
+
660
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
661
+ #: views/partials/csGeneralSettings.php:199
662
+ #: views/partials/csGeneralSettings.php:218
663
+ #: views/partials/csGeneralSettings.php:234
664
+ #: views/partials/csPluginSettings.php:69
665
+ #: views/partials/csPluginSettings.php:85
666
+ #: views/partials/csPluginSettings.php:104
667
+ #: views/partials/csPluginSettings.php:120
668
+ msgid "Not set"
669
+ msgstr "Non précisé"
670
+
671
+ #: views/partials/modals/modal_select_language.php:4
672
+ msgid "Now, select your website language"
673
+ msgstr "Maintenant, sélectionnez la langue de votre site web"
674
+
675
+ #: includes/settings.php:933
676
+ msgid "Ok sure!"
677
+ msgstr "Bien sûr !"
678
+
679
+ #: includes/ServiceRating.php:103
680
+ msgid "Only track users that give consent"
681
+ msgstr "Ne faire le suivi que des utilisateurs qui ont donné leur consentement"
682
+
683
+ #: views/partials/modals/modal_no_website_found.php:6
684
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
685
+ msgid "Ooops! <br> No website found with this embed code."
686
+ msgstr "Oups ! <br> Aucun site web lié à ce code d’intégration n’a été trouvé."
687
+
688
+ #: views/partials/modals/modal_sync.php:7
689
+ msgid "or"
690
+ msgstr "ou"
691
+
692
+ #: views/partials/csSimplifiedConfiguration.php:83
693
+ msgid "Other options"
694
+ msgstr "Autres options"
695
+
696
+ #: views/partials/welcomeScreenHeader.php:3
697
+ msgid "Our plugin will help you to make your website compliant in minutes."
698
+ msgstr ""
699
+ "Notre plugin vous aide à rendre votre site web conforme en quelques minutes."
700
+
701
+ #: includes/QuickGeneratorService.php:137
702
+ msgid ""
703
+ "Our products has been integrated successfully, now customize all products to "
704
+ "increase the compliance rating and make your website fully compliant."
705
+ msgstr ""
706
+ "Nos produits ont été installés avec succès. Vous pouvez maintenant "
707
+ "personnaliser l’ensemble des produits pour améliorer votre note de "
708
+ "conformité et rendre votre site web complètement conforme."
709
+
710
+ #: views/partials/modals/modal_almost_there.php:39
711
+ msgid "Paste your API key here"
712
+ msgstr "Collez votre clé API ici"
713
+
714
+ #: views/partials/csManualConfiguration.php:11
715
+ msgid "Paste your cookie solution embed code here"
716
+ msgstr "Collez le code d’intégration généré par la Cookie Solution ici"
717
+
718
+ #: views/partials/languagesTabs.php:21
719
+ msgid "Paste your embed code here"
720
+ msgstr "Collez votre code d’intégration ici"
721
+
722
+ #: views/cons-configuration.php:23
723
+ msgid "Paste your public API key here"
724
+ msgstr "Collez votre clé API publique ici"
725
+
726
+ #: views/tc-configuration.php:21
727
+ msgid "Paste your terms and conditions embed code here"
728
+ msgstr "Collez le code d’intégration de vos conditions générales ici"
729
+
730
+ #: includes/settings.php:628
731
+ #, php-format
732
+ msgid ""
733
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
734
+ "target=\"_blank\">Discussion settings</a>."
735
+ msgstr ""
736
+ "Veuillez activer l’affichage de la case à cocher pour accepter les cookies "
737
+ "sur les commentaires, depuis les <a href=\"%s\" target=\"_blank\">réglages "
738
+ "des commentaires WordPress</a>."
739
+
740
+ #: views/cons-single-form.php:234
741
+ msgid "Please select each legal document available on your site."
742
+ msgstr ""
743
+ "Veuillez sélectionner tous les documents juridiques présents sur votre site "
744
+ "web."
745
+
746
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
747
+ msgid "Plugin settings"
748
+ msgstr "Paramètres du plugin"
749
+
750
+ #: includes/settings.php:1115 includes/settings.php:1137
751
+ #: includes/settings.php:1156 includes/settings.php:1176
752
+ #: views/partials/bannerPosition.php:20
753
+ msgid "Position"
754
+ msgstr "Emplacement"
755
+
756
+ #: views/cons-single-form.php:102
757
+ msgid "Preferences field"
758
+ msgstr "Champ relatif aux préférences"
759
+
760
+ #: views/cons-single-form.php:98
761
+ msgid "Preferences fields"
762
+ msgstr "Champs relatifs aux préférences"
763
+
764
+ #: views/cons-single-form.php:99
765
+ msgid ""
766
+ "Preferences fields allow you to store a record of the various opt-ins points "
767
+ "at which the user has agreed or given consent, such as fields for agreeing "
768
+ "to terms and conditions, newsletter, profiling, etc."
769
+ msgstr ""
770
+ "Les champs relatifs aux préférences vous permettent d’enregistrer ce à quoi "
771
+ "l’utilisateur a donné son consentement, par exemple les champs pour "
772
+ "consentir aux conditions générales, à la newsletter, au profilage, etc."
773
+
774
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
775
+ #: views/partials/csPluginSettings.php:10
776
+ msgid "Primary"
777
+ msgstr "Primaire"
778
+
779
+ #: includes/settings.php:418 includes/settings.php:1150
780
+ msgid "Privacy and Cookie Policy"
781
+ msgstr "Politique de Confidentialité et de Cookies"
782
+
783
+ #: includes/PrivacyPolicyGenerator.php:23
784
+ msgid "Privacy Policy"
785
+ msgstr "Politique de Confidentialité"
786
+
787
+ #: views/partials/breadcrumb.php:2
788
+ msgid "Products"
789
+ msgstr "Produits"
790
+
791
+ #: views/partials/csGeneralSettings.php:246
792
+ #: views/partials/csPluginSettings.php:132
793
+ msgid ""
794
+ "Provide a list of domains for any custom iframes you'd like to block, and "
795
+ "assign their purposes. To make sure they are blocked correctly, please add "
796
+ "domains in the same format as 'example.com', without any protocols e.g. "
797
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
798
+ "domains or subdomains."
799
+ msgstr ""
800
+ "Fournissez une liste de domaines pour toute iframe vous voudriez bloquer, et "
801
+ "assignez leur finalité. Pour être sûr qu’elles soient bloquées correctement, "
802
+ "veuillez ajouter les domaines dans le même format que ‘example.com’, sans "
803
+ "protocoles tel que ‘http://' ou ‘https://'. Vous pouvez également utiliser "
804
+ "le caractère de remplacement (*) pour inclure les domaines parents ou les "
805
+ "sous-domaines."
806
+
807
+ #: views/partials/csGeneralSettings.php:211
808
+ #: views/partials/csPluginSettings.php:97
809
+ msgid ""
810
+ "Provide a list of domains for any custom scripts you'd like to block, and "
811
+ "assign their purposes. To make sure they are blocked correctly, please add "
812
+ "domains in the same format as 'example.com', without any protocols e.g. "
813
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
814
+ "domains or subdomains."
815
+ msgstr ""
816
+ "Fournissez une liste de domaines pour tout script vous voudriez bloquer, et "
817
+ "assignez leur finalité. Pour être sûr qu’ils soient bloqués correctement, "
818
+ "veuillez ajouter les domaines dans le même format que ‘example.com’, sans "
819
+ "protocoles tel que ‘http://' ou ‘https://'. Vous pouvez également utiliser "
820
+ "le caractère de remplacement (*) pour inclure les domaines parents ou les "
821
+ "sous-domaines."
822
+
823
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
824
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
825
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
826
+ msgid "Remove"
827
+ msgstr "Éliminer"
828
+
829
+ #: views/partials/csSimplifiedConfiguration.php:29
830
+ msgid "Require consent from"
831
+ msgstr "Demander le consentement…"
832
+
833
+ #: views/partials/integrateFooter.php:3
834
+ msgid "Reset settings"
835
+ msgstr "Restaurer les paramètres"
836
+
837
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
838
+ msgid ""
839
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
840
+ "/ html\" (recommended)"
841
+ msgstr ""
842
+ "Limiter le fonctionnement du plugin uniquement aux requêtes comportant "
843
+ "\"Content-type: text /html\" (recommandé)"
844
+
845
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
846
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
847
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
848
+ msgid "Save settings"
849
+ msgstr "Enregistrer les paramètres"
850
+
851
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
852
+ #: views/partials/csPluginSettings.php:14
853
+ msgid "Secondary"
854
+ msgstr "Secondaire"
855
+
856
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
857
+ msgid ""
858
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
859
+ "your AMP pages directly?"
860
+ msgstr ""
861
+ "Le bandeau cookies AMP s’affiche en testant depuis Google mais pas en allant "
862
+ "directement sur vos pages AMP ?"
863
+
864
+ #: includes/forms-list-table.php:376
865
+ msgid "Select All"
866
+ msgstr "Tout sélectionner"
867
+
868
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
869
+ #: views/partials/csPluginSettings.php:17
870
+ msgid "Select Parsing Engine"
871
+ msgstr "Sélectionner l’outil d’analyse (\"parsing engine\")"
872
+
873
+ #: views/partials/modals/modal_almost_there.php:13
874
+ msgid "Select products you have already activated"
875
+ msgstr "Sélectionnez les produits que vous avez déjà activés"
876
+
877
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
878
+ msgid "Select the iubenda AMP configuration file location."
879
+ msgstr "Sélectionnez le chemin du fichier de configuration de iubenda AMP."
880
+
881
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
882
+ msgid ""
883
+ "Select whether to display iubenda in a top admin menu or the Settings "
884
+ "submenu."
885
+ msgstr ""
886
+ "Sélectionnez où afficher iubenda dans le menu principal admin ou dans le "
887
+ "sous-menu des paramètres."
888
+
889
+ #: views/partials/product-card.php:46
890
+ msgid "Service off"
891
+ msgstr "Service désactivé"
892
+
893
+ #: views/partials/product-card.php:46
894
+ #| msgid "Service"
895
+ msgid "Service on"
896
+ msgstr "Service activé"
897
+
898
+ #: includes/ServiceRating.php:98
899
+ msgid "Set up a cookie banner"
900
+ msgstr "Mettre un bandeau cookies en place"
901
+
902
+ #: includes/ServiceRating.php:108
903
+ msgid "Set up a privacy policy"
904
+ msgstr "Disposer d’une politique de confidentialité"
905
+
906
+ #: includes/ServiceRating.php:113
907
+ msgid "Set up terms and conditions"
908
+ msgstr "Avoir ses propres conditions générales"
909
+
910
+ #: includes/settings.php:749
911
+ msgid "Settings saved."
912
+ msgstr "Paramètres enregistrés."
913
+
914
+ #: views/pp-configuration.php:22
915
+ msgid "Setup your privacy and cookie policy on iubenda.com"
916
+ msgstr ""
917
+ "Configurez votre politique de confidentialité et de cookies sur iubenda.com"
918
+
919
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
920
+ msgid "Shortcode"
921
+ msgstr "Code court"
922
+
923
+ #: views/partials/csGeneralSettings.php:14
924
+ #: views/partials/csGeneralSettings.php:23
925
+ msgid "Simplified"
926
+ msgstr "Simplifiée"
927
+
928
+ #: views/partials/modals/modal_almost_there.php:6
929
+ msgid ""
930
+ "Since you already activated some products for this website, we just ask you "
931
+ "to copy and paste the embedding code of the product you already have to "
932
+ "syncronize your iubenda acount with WP plugin."
933
+ msgstr ""
934
+ "Comme vous avez déjà activé certains produits pour ce site web, nous vous "
935
+ "demandons simplement de copier et coller le code d’intégration du produit "
936
+ "que vous avez déjà, afin de synchroniser votre compte iubenda avec le plugin "
937
+ "WP."
938
+
939
+ #: views/cons-single-form.php:48
940
+ msgid "Status"
941
+ msgstr "Statut"
942
+
943
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
944
+ #: views/partials/csGeneralSettings.php:200
945
+ #: views/partials/csGeneralSettings.php:219
946
+ #: views/partials/csGeneralSettings.php:235
947
+ #: views/partials/csPluginSettings.php:70
948
+ #: views/partials/csPluginSettings.php:86
949
+ #: views/partials/csPluginSettings.php:105
950
+ #: views/partials/csPluginSettings.php:121
951
+ msgid "Strictly necessary"
952
+ msgstr "Strictement nécessaire"
953
+
954
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
955
+ #: includes/settings.php:78 includes/settings.php:79
956
+ msgid "string"
957
+ msgstr "string"
958
+
959
+ #: includes/settings.php:1114 includes/settings.php:1136
960
+ #: includes/settings.php:1155 includes/settings.php:1175
961
+ msgid "Style"
962
+ msgstr "Style"
963
+
964
+ #: views/cons-single-form.php:65
965
+ msgid "Subject field"
966
+ msgstr "Champ utilisateur"
967
+
968
+ #: views/cons-single-form.php:61
969
+ msgid "Subject fields"
970
+ msgstr "Champs utilisateur"
971
+
972
+ #: views/cons-single-form.php:62
973
+ msgid ""
974
+ "Subject fields allow you to store a series of identifying values about your "
975
+ "individual subjects/users. Please map the subject field with the "
976
+ "corresponding form fields where applicable."
977
+ msgstr ""
978
+ "Les champs utilisateur vous permettent de conserver une série de valeurs "
979
+ "d’identification à propos de chacun de vos utilisateurs. Veuillez "
980
+ "cartographier le champ utilisateur avec les champs correspondants du "
981
+ "formulaire, le cas échéant."
982
+
983
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
984
+ msgid "Submenu"
985
+ msgstr "Sous-menu"
986
+
987
+ #: includes/settings.php:926
988
+ msgid "Sure!"
989
+ msgstr "Avec plaisir !"
990
+
991
+ #: views/partials/modals/modal_almost_there.php:75
992
+ msgid "Synchronize products"
993
+ msgstr "Synchroniser les produits"
994
+
995
+ #: includes/settings.php:110
996
+ msgid "Targeting & Advertising"
997
+ msgstr "Ciblage et publicité"
998
+
999
+ #: views/partials/csGeneralSettings.php:188
1000
+ #: views/partials/csGeneralSettings.php:204
1001
+ #: views/partials/csGeneralSettings.php:223
1002
+ #: views/partials/csGeneralSettings.php:239
1003
+ #: views/partials/csPluginSettings.php:74
1004
+ #: views/partials/csPluginSettings.php:90
1005
+ #: views/partials/csPluginSettings.php:109
1006
+ #: views/partials/csPluginSettings.php:125
1007
+ msgid "Targeting &amp; Advertising"
1008
+ msgstr "Ciblage et publicité"
1009
+
1010
+ #: includes/settings.php:412
1011
+ msgid "Terms and condition"
1012
+ msgstr "Conditions Générales"
1013
+
1014
+ #: includes/settings.php:1170
1015
+ msgid "Terms and Conditions"
1016
+ msgstr "Conditions Générales"
1017
+
1018
+ #: views/partials/bannerStyle.php:2
1019
+ msgid "Theme"
1020
+ msgstr "Thème"
1021
+
1022
+ #: includes/ServiceRating.php:109
1023
+ #, php-format
1024
+ msgid ""
1025
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1026
+ "under most privacy laws around the world. This document typically includes "
1027
+ "legally required disclosures about the type of personal data you process, "
1028
+ "why you need to process it, how the processing is done and the user’s rights "
1029
+ "under applicable law."
1030
+ msgstr ""
1031
+ "Ceci compte pour 25&#37; de votre score. Une politique de confidentialité "
1032
+ "est requise par la plupart des lois sur la confidentialité dans le monde. Ce "
1033
+ "document inclut généralement des informations obligatoires telles que le "
1034
+ "type de données personnelles que vous traitez, pourquoi et comment ce "
1035
+ "traitement est effectué, ainsi que les droits des utilisateurs en vertu de "
1036
+ "la loi applicable."
1037
+
1038
+ #: includes/ServiceRating.php:104
1039
+ #, php-format
1040
+ msgid ""
1041
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1042
+ "Europe-based users, you likely need to block cookies from running until you "
1043
+ "receive user consent. To do this, select “Automatically block scripts "
1044
+ "detected by the plugin”."
1045
+ msgstr ""
1046
+ "Ceci compte pour 25&#37; de votre score. Si vous ou vos utilisateurs êtes "
1047
+ "basés en Europe, vous devez probablement bloquer l’installation de cookies "
1048
+ "avant d’avoir obtenu le consentement de l’utilisateur. Pour ce faire, "
1049
+ "sélectionnez \"Bloquer automatiquement les scripts détectés par le plugin\"."
1050
+
1051
+ #: includes/ServiceRating.php:114
1052
+ #, php-format
1053
+ msgid ""
1054
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1055
+ "protect you, the website owner, from potential liabilities and more. "
1056
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1057
+ "be legally required as Terms typically contain legally mandatory disclosures."
1058
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1059
+ "that they actually fit your specific scenario."
1060
+ msgstr ""
1061
+ "Cela compte pour 25&#37; de votre score. Les conditions générales protègent "
1062
+ "le propriétaire du site web de potentiels engagements de sa responsabilité. "
1063
+ "De plus, si vous gérez un site web ou une application de e-commerce, "
1064
+ "disposer de ce document peut être une obligation au nom de la loi. En effet, "
1065
+ "les conditions générales contiennent généralement des informations légales "
1066
+ "obligatoires. Elles constituent un document juridiquement contraignant et "
1067
+ "doivent donc être adaptées à votre situation spécifique."
1068
+
1069
+ #: includes/ServiceRating.php:99
1070
+ #, php-format
1071
+ msgid ""
1072
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1073
+ "your users about your use of cookies and similar tracking technologies, and "
1074
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1075
+ "or ePrivacy apply to you."
1076
+ msgstr ""
1077
+ "Ceci compte pour 25&#37; de votre score. Votre bandeau cookies doit informer "
1078
+ "vos utilisateurs de l’usage de cookies et autres technologies de suivi "
1079
+ "similaires, et de leurs droits à cet égard. Vous avez probablement besoin "
1080
+ "d’une bannière si vous êtes concerné par le RGPD, le CCPA ou la directive "
1081
+ "ePrivacy."
1082
+
1083
+ #: views/partials/frontpage_main_box.php:26
1084
+ msgid "This is what you may need to be compliant"
1085
+ msgstr "Voici ce dont vous avez sûrement besoin pour vous mettre en conformité"
1086
+
1087
+ #: views/partials/auto_detect_forms.php:29
1088
+ msgid ""
1089
+ "This section lists the forms available for field mapping. The plugin "
1090
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1091
+ "Checkout and WP Forms."
1092
+ msgstr ""
1093
+ "Cette section liste les formulaires disponibles pour la cartographie des "
1094
+ "champs de données. Actuellement, le plugin détecte et est compatible avec : "
1095
+ "WordPress Comment, Contact Form 7, WooCommerce Checkout et WP Forms."
1096
+
1097
+ #: includes/widget/IubendaLegalWidget.php:176
1098
+ msgid "Title:"
1099
+ msgstr "Titre :"
1100
+
1101
+ #: includes/settings.php:905
1102
+ #, php-format
1103
+ msgid ""
1104
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1105
+ "your account</span>. Check your mailbox now and validate your email address, "
1106
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1107
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1108
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1109
+ "notification-alert link-underline\" data-dismiss-"
1110
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1111
+ msgstr ""
1112
+ "Pour assurer des scans réguliers et une assistance complète, veuillez <span "
1113
+ "class=\"text-bold\">vérifier votre compte</span>. Consultez votre boîte de "
1114
+ "réception et confirmer votre adresse e-mail, ou allez sur <a href=\"%s\" "
1115
+ "target=\"_blank\" class=\"link-underline\">votre compte</a> iubenda.com. Si "
1116
+ "c’est déjà fait, veuillez <a href=\"javascript:void(0)\" class=\"notice-"
1117
+ "dismiss-by-text dismiss-notification-alert link-underline\" data-dismiss-"
1118
+ "key=\"iub_user_needs_to_verify_his_account\">ne pas tenir compte de ce "
1119
+ "rappel</a>."
1120
+
1121
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1122
+ msgid "Top menu"
1123
+ msgstr "Menu principal"
1124
+
1125
+ #: views/partials/modals/modal_no_website_found.php:10
1126
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1127
+ msgid "Try again"
1128
+ msgstr "Réessayer"
1129
+
1130
+ #: includes/settings.php:1154 includes/settings.php:1174
1131
+ msgid "Version"
1132
+ msgstr "Version"
1133
+
1134
+ #: views/partials/header_scanned.php:4
1135
+ msgid "We have analyzed your website in background and this is the result."
1136
+ msgstr ""
1137
+ "Nous avons analysé votre site web en arrière-plan et voici le résultat."
1138
+
1139
+ #: views/partials/buttonPosition.php:28
1140
+ #: views/partials/modals/modal_almost_there.php:62
1141
+ #: views/tc-configuration.php:83
1142
+ #, php-format
1143
+ #| msgid ""
1144
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1145
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1146
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1147
+ msgid ""
1148
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1149
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1150
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1151
+ msgstr ""
1152
+ "Nous n’avons pas pu ajouter un widget \"Documents juridiques\" dans le pied "
1153
+ "de page car votre thème n’est pas compatible avec les widgets. Vous pouvez "
1154
+ "insérer le widget \"Documents juridiques\" manuellement <a href=\"%s\" "
1155
+ "target=\"_blank\">par ici</a>."
1156
+
1157
+ #: includes/settings.php:931
1158
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1159
+ msgstr ""
1160
+ "Nous en sommes désolés. Pourriez-vous nous faire part de vos commentaires ?"
1161
+
1162
+ #: views/partials/welcomeScreenHeader.php:2
1163
+ msgid "Welcome to iubenda!"
1164
+ msgstr "Bienvenue chez iubenda !"
1165
+
1166
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1167
+ #: views/partials/modals/modal_almost_there.php:42
1168
+ msgid "Where can I find this code?"
1169
+ msgstr "Où puis-je trouver ce code ?"
1170
+
1171
+ #: includes/settings.php:924
1172
+ msgid ""
1173
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1174
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1175
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1176
+ "out."
1177
+ msgstr ""
1178
+ "Ouf, quel soulagement ! Nous avons travaillé d’arrache-pied pour rendre ce "
1179
+ "plugin le plus utile possible - nous sommes ravis qu’il vous plaise. Tant "
1180
+ "que vous y êtes, pourriez-vous nous laisser une note de 5 étoiles ? Cela "
1181
+ "nous aiderait beaucoup. Merci !"
1182
+
1183
+ #: views/partials/csSimplifiedConfiguration.php:43
1184
+ msgid "Worldwide"
1185
+ msgstr "Dans le monde entier"
1186
+
1187
+ #: includes/settings.php:919
1188
+ msgid "Yes"
1189
+ msgstr "Oui"
1190
+
1191
+ #: includes/settings.php:389
1192
+ msgid "You don't have permission to access this page."
1193
+ msgstr "Vous n’avez pas l’autorisation d’accéder à cette page."
1194
+
1195
+ #: views/partials/csSimplifiedConfiguration.php:92
1196
+ msgid "You should activate this feature if you show ads on your website"
1197
+ msgstr ""
1198
+ "Vous devriez activer cette fonctionnalité dans le cas où vous affichez des "
1199
+ "publicités sur votre site web"
1200
+
1201
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1202
+ msgid "Your embed code"
1203
+ msgstr "Votre code d’intégration"
1204
+
1205
+ #: views/cons-configuration.php:29
1206
+ msgid "Your iubenda Javascript library public API key"
1207
+ msgstr "Votre clé publique d’API de la bibliothèque JavaScript de iubenda"
1208
+
1209
+ #: views/partials/modals/modal_pp_created.php:5
1210
+ msgid "Your privacy policy has been created!"
1211
+ msgstr "Votre politique de confidentialité a bien été créée !"
1212
+
1213
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1214
+ #: views/partials/siteInfo.php:20
1215
+ msgid "Your rating"
1216
+ msgstr "Votre note"
1217
+
1218
+ #: includes/QuickGeneratorService.php:111
1219
+ msgid ""
1220
+ "Your website has been created and your legal documents have been generated. "
1221
+ "Setup your cookie banner and privacy policy button to complete the "
1222
+ "integration."
1223
+ msgstr ""
1224
+ "Votre site web a été créé et vos documents juridiques ont été générés. "
1225
+ "Configurez votre bandeau cookies et le bouton menant vers votre politique de "
1226
+ "confidentialité afin de terminer l’installation."
languages/iubenda-it_IT.mo ADDED
Binary file
languages/iubenda-it_IT.po ADDED
@@ -0,0 +1,1205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-05-17 21:29+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:49+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Italian\n"
8
+ "Language: it_IT\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(consigliato)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Uno shortcode è un piccolo pezzo di codice che consente di inserire elementi "
31
+ "interattivi o di creare layout di pagina complessi con uno sforzo minimo.<br>"
32
+ "Basta copiare e incollare lo shortcode nel punto in cui si desidera che "
33
+ "appaia il pulsante."
34
+
35
+ #: views/cons-configuration.php:17
36
+ msgid "Activate & Configure Consent Solution by"
37
+ msgstr "Attiva e configura la Consent Solution"
38
+
39
+ #: views/cons-configuration.php:14
40
+ msgid ""
41
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
42
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
43
+ "your website."
44
+ msgstr ""
45
+ "Attiva la <strong>Consent Solution</strong> dalla tua dashboard iubenda e "
46
+ "incolla qui la <strong>chiave API</strong> per integrarla sul tuo sito web."
47
+
48
+ #: views/integrate-setup.php:21
49
+ msgid "Add a cookie banner"
50
+ msgstr "Aggiungi un cookie banner"
51
+
52
+ #: views/cons-configuration.php:44
53
+ msgid "Add forms"
54
+ msgstr "Aggiungi form"
55
+
56
+ #: views/cons-single-form.php:268
57
+ msgid "Add New Document"
58
+ msgstr "Aggiungi un nuovo documento"
59
+
60
+ #: views/cons-single-form.php:216
61
+ msgid "Add New Exclude"
62
+ msgstr "Aggiungi una nuova esclusione"
63
+
64
+ #: views/partials/csGeneralSettings.php:247
65
+ #: views/partials/csPluginSettings.php:133
66
+ msgid "Add New iframe"
67
+ msgstr "Aggiungi un nuovo iframe"
68
+
69
+ #: views/cons-single-form.php:155
70
+ msgid "Add New Preference"
71
+ msgstr "Aggiungi nuova preferenza"
72
+
73
+ #: views/partials/csGeneralSettings.php:212
74
+ #: views/partials/csPluginSettings.php:98
75
+ msgid "Add New Script"
76
+ msgstr "Aggiungi un nuovo script"
77
+
78
+ #: views/integrate-setup.php:140
79
+ msgid "Add the privacy policy button"
80
+ msgstr "Aggiungi il pulsante della privacy policy"
81
+
82
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
83
+ msgid "Add to the footer automatically"
84
+ msgstr "Aggiungi automaticamente al footer"
85
+
86
+ #: includes/forms-list-table.php:279
87
+ msgid "All form sources"
88
+ msgstr "Tutte le fonti"
89
+
90
+ #: views/cons-single-form.php:250
91
+ msgid "Alternatively, you may add your own custom document identifiers."
92
+ msgstr "In alternativa, puoi aggiungere degli identificatori personalizzati."
93
+
94
+ #: includes/amp.php:281
95
+ msgid "AMP Cookie Consent"
96
+ msgstr "AMP Cookie Consent"
97
+
98
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
99
+ #: views/partials/csGeneralSettings.php:203
100
+ #: views/partials/csGeneralSettings.php:222
101
+ #: views/partials/csGeneralSettings.php:238
102
+ #: views/partials/csPluginSettings.php:73
103
+ #: views/partials/csPluginSettings.php:89
104
+ #: views/partials/csPluginSettings.php:108
105
+ #: views/partials/csPluginSettings.php:124
106
+ msgid "Analytics"
107
+ msgstr "Statistiche"
108
+
109
+ #: views/partials/frontpage_main_box.php:22
110
+ msgid "Analyzing your website"
111
+ msgstr "Stiamo analizzando il tuo sito"
112
+
113
+ #: views/cons-configuration.php:53
114
+ msgid "Auto-detect forms"
115
+ msgstr "Rileva automaticamente i form"
116
+
117
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
118
+ msgid "Auto-generated configuration file"
119
+ msgstr "File di configurazione generato automaticamente"
120
+
121
+ #: views/cons-single-form.php:71
122
+ msgid "Autogenerated"
123
+ msgstr "Generato automaticamente"
124
+
125
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
126
+ #: views/partials/csPluginSettings.php:4
127
+ msgid "Automatically block scripts detected by the plugin"
128
+ msgstr "Blocca automaticamente gli script rilevati dal plugin"
129
+
130
+ #: views/partials/bannerPosition.php:41
131
+ msgid "Background-overlay"
132
+ msgstr "Oscura sfondo"
133
+
134
+ #: views/partials/csSimplifiedConfiguration.php:68
135
+ msgid "Banner buttons"
136
+ msgstr "Pulsanti del banner"
137
+
138
+ #: includes/settings.php:107
139
+ msgid "Basic interactions & functionalities"
140
+ msgstr "Interazioni e funzionalità semplici"
141
+
142
+ #: views/partials/csGeneralSettings.php:185
143
+ #: views/partials/csGeneralSettings.php:201
144
+ #: views/partials/csGeneralSettings.php:220
145
+ #: views/partials/csGeneralSettings.php:236
146
+ #: views/partials/csPluginSettings.php:71
147
+ #: views/partials/csPluginSettings.php:87
148
+ #: views/partials/csPluginSettings.php:106
149
+ #: views/partials/csPluginSettings.php:122
150
+ msgid "Basic interactions &amp; functionalities"
151
+ msgstr "Interazioni e funzionalità semplici"
152
+
153
+ #: views/partials/csGeneralSettings.php:173
154
+ msgid "Blocked domains"
155
+ msgstr "Domini bloccati"
156
+
157
+ #: views/partials/csSimplifiedConfiguration.php:22
158
+ msgid "Both"
159
+ msgstr "Entrambi"
160
+
161
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
162
+ msgid "Button position"
163
+ msgstr "Posizione del pulsante"
164
+
165
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
166
+ msgid "Button style"
167
+ msgstr "Stile del pulsante"
168
+
169
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
170
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
171
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
172
+ msgid "Cancel"
173
+ msgstr "Annulla"
174
+
175
+ #: views/partials/csSimplifiedConfiguration.php:18
176
+ msgid "CCPA Only"
177
+ msgstr "Solo CCPA"
178
+
179
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
180
+ #: views/tc-configuration.php:16
181
+ msgid "clicking here"
182
+ msgstr "cliccando qui"
183
+
184
+ #: views/partials/csGeneralSettings.php:2
185
+ msgid "Configuration"
186
+ msgstr "Configurazione"
187
+
188
+ #: views/partials/product-card.php:48
189
+ msgid "Configure"
190
+ msgstr "Configura"
191
+
192
+ #: views/partials/csManualConfiguration.php:5
193
+ msgid "Configure cookie banner by"
194
+ msgstr "Configura il tuo cookie banner"
195
+
196
+ #: views/tc-configuration.php:15
197
+ msgid "Configure terms and conditions by"
198
+ msgstr "Configura i termini e condizioni"
199
+
200
+ #: views/partials/csManualConfiguration.php:2
201
+ msgid ""
202
+ "Configure your cookie banner on our website and paste here the embed code to "
203
+ "integrate it to your website."
204
+ msgstr ""
205
+ "Configura il tuo cookie banner dal nostro sito e incolla qui il codice "
206
+ "d’integrazione per integrarlo sul tuo sito Webb."
207
+
208
+ #: views/tc-configuration.php:12
209
+ msgid ""
210
+ "Configure your terms and conditions on our website and paste here the embed "
211
+ "code to integrate the button on your website."
212
+ msgstr ""
213
+ "Configura i tuoi termini e condizioni sul nostro sito e incolla qui il "
214
+ "codice d’integrazione per integrare il pulsante sul tuo sito web."
215
+
216
+ #: views/cons-configuration.php:31
217
+ msgid "Confirm API"
218
+ msgstr "Conferma API"
219
+
220
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
221
+ #: includes/settings.php:1182
222
+ msgid "Consent Solution"
223
+ msgstr "Consent Solution"
224
+
225
+ #: views/partials/modals/modal_almost_there.php:37
226
+ msgid "Consent Solution API key"
227
+ msgstr "Chiave API della Consent Solution"
228
+
229
+ #: views/partials/modals/modal_select_language.php:54
230
+ msgid "Continue"
231
+ msgstr "Continua"
232
+
233
+ #: includes/settings.php:91 includes/settings.php:424
234
+ #: includes/settings.php:1162
235
+ msgid "Cookie Solution"
236
+ msgstr "Cookie Solution"
237
+
238
+ #: includes/QuickGeneratorService.php:625
239
+ #, php-format
240
+ msgid ""
241
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
242
+ ". For instructions on how to fix this, please read <a class=\"link-"
243
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
244
+ msgstr ""
245
+ "Al momento, non disponi del permesso di scrittura per <i class=\"text-bold\">"
246
+ "%s</i>. Per sapere come risolvere, leggi <a class=\"link-underline\" "
247
+ "target=\\\"blank\\\" href=\\\"%s\\\">la nostra guida</a>."
248
+
249
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
250
+ msgid "Custom configuration file"
251
+ msgstr "File di configurazione personalizzato"
252
+
253
+ #: views/partials/csGeneralSettings.php:177
254
+ #: views/partials/csPluginSettings.php:63
255
+ msgid "Custom iframes"
256
+ msgstr "iframe personalizzati"
257
+
258
+ #: views/partials/csGeneralSettings.php:176
259
+ #: views/partials/csPluginSettings.php:62
260
+ msgid "Custom scripts"
261
+ msgstr "Script personalizzati"
262
+
263
+ #: views/partials/csPluginSettings.php:59
264
+ msgid "Custom settings"
265
+ msgstr "Impostazioni personalizzate"
266
+
267
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
268
+ #: views/tc-configuration.php:50
269
+ msgid "Dark"
270
+ msgstr "Scuro"
271
+
272
+ #: includes/forms-list-table.php:90
273
+ msgid "Date"
274
+ msgstr "Data"
275
+
276
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
277
+ #: views/partials/csGeneralSettings.php:115
278
+ msgid "Default language"
279
+ msgstr "Lingua predefinita"
280
+
281
+ #: includes/forms-list-table.php:160
282
+ msgid "Delete"
283
+ msgstr "Elimina"
284
+
285
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
286
+ msgid "Delete all plugin data upon deactivation"
287
+ msgstr "Elimina tutti i dati del plugin al momento della disattivazione"
288
+
289
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
290
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
291
+ msgstr "Non eseguire il plugin all’interno dei Feed RSS (consigliato)"
292
+
293
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
294
+ msgid "Do not run the plugin on POST requests (recommended)"
295
+ msgstr "Non eseguire il plugin per richieste POST (consigliato)"
296
+
297
+ #: views/partials/footer.php:5
298
+ msgid "Documentation"
299
+ msgstr "Documentazione"
300
+
301
+ #: includes/forms-list-table.php:159
302
+ msgid "Edit"
303
+ msgstr "Modifica"
304
+
305
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
306
+ msgid "Enable Google AMP support"
307
+ msgstr "Abilita il supporto per l’AMP di Google"
308
+
309
+ #: views/partials/csSimplifiedConfiguration.php:88
310
+ msgid "Enable IAB Transparency and Consent Framework"
311
+ msgstr "Abilita il Transparency and Consent Framework di IAB"
312
+
313
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
314
+ #: views/partials/csPluginSettings.php:24
315
+ msgid ""
316
+ "Enable this option to improve performance <strong>only</strong> if your site "
317
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
318
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
319
+ "keep this setting disabled"
320
+ msgstr ""
321
+ "Abilita quest’opzione per migliorare la performance <strong>solo</strong> se "
322
+ "il tuo sito <strong>non</strong> utilizza un sistema di cache o un plugin di "
323
+ "cache e se <strong>non</strong> raccogli il consenso per categoria. Se non "
324
+ "sei sicuro, mantieni quest’opzione disabilitata"
325
+
326
+ #: includes/settings.php:917
327
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
328
+ msgstr "Ti piace il plugin per la Cookie & Consent Solution di iubenda?"
329
+
330
+ #: views/partials/csGeneralSettings.php:216
331
+ #: views/partials/csGeneralSettings.php:232
332
+ #: views/partials/csPluginSettings.php:102
333
+ #: views/partials/csPluginSettings.php:118
334
+ msgid "Enter custom iframe"
335
+ msgstr "Inserisci iframe personalizzati"
336
+
337
+ #: views/partials/csGeneralSettings.php:181
338
+ #: views/partials/csGeneralSettings.php:197
339
+ #: views/partials/csPluginSettings.php:67
340
+ #: views/partials/csPluginSettings.php:83
341
+ msgid "Enter custom script"
342
+ msgstr "Inserisci script personalizzati "
343
+
344
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
345
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
346
+ #: views/cons-single-form.php:260
347
+ msgid "Enter field name"
348
+ msgstr "Aggiungi il nome di un campo"
349
+
350
+ #: views/partials/csSimplifiedConfiguration.php:59
351
+ msgid "EU Only"
352
+ msgstr "Solo UE"
353
+
354
+ #: views/cons-single-form.php:164
355
+ msgid "Exclude field"
356
+ msgstr "Campi esclusi"
357
+
358
+ #: views/cons-single-form.php:159
359
+ msgid "Exclude fields"
360
+ msgstr "Esclusioni"
361
+
362
+ #: views/cons-single-form.php:160
363
+ msgid ""
364
+ "Exclude fields allow you to create a list of fields that you would like to "
365
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
366
+ "other fields not related to the consent)."
367
+ msgstr ""
368
+ "Qui puoi creare una lista dei campi che desideri escludere dalle prove del "
369
+ "consenso memorizzate dalla Consent Solution (ad esempio, password o altri "
370
+ "campi non correlati)."
371
+
372
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
373
+ #: views/partials/csGeneralSettings.php:202
374
+ #: views/partials/csGeneralSettings.php:221
375
+ #: views/partials/csGeneralSettings.php:237
376
+ #: views/partials/csPluginSettings.php:72
377
+ #: views/partials/csPluginSettings.php:88
378
+ #: views/partials/csPluginSettings.php:107
379
+ #: views/partials/csPluginSettings.php:123
380
+ msgid "Experience enhancement"
381
+ msgstr "Miglioramento dell’esperienza"
382
+
383
+ #: views/partials/csSimplifiedConfiguration.php:72
384
+ msgid "Explicit Accept and Customize buttons"
385
+ msgstr "Mostra i pulsanti Accetta e Personalizza"
386
+
387
+ #: views/partials/csSimplifiedConfiguration.php:77
388
+ msgid "Explicit Reject button"
389
+ msgstr "Mostra il pulsante Rifiuta"
390
+
391
+ #: views/cons-single-form.php:12
392
+ msgid "Field Mapping"
393
+ msgstr "Mapping dei campi"
394
+
395
+ #: includes/forms-list-table.php:89
396
+ msgid "Fields"
397
+ msgstr "Campi"
398
+
399
+ #: includes/forms-list-table.php:260
400
+ msgid "Filter"
401
+ msgstr "Filtra"
402
+
403
+ #: includes/forms-list-table.php:277
404
+ msgid "Filter by source"
405
+ msgstr "Filtra per fonte"
406
+
407
+ #: includes/forms.php:579 includes/forms.php:593
408
+ msgid "First name"
409
+ msgstr "Nome"
410
+
411
+ #: views/partials/modals/modal_sync.php:4
412
+ msgid ""
413
+ "First of all, tell us if you already use our products for this website or if "
414
+ "you want to start from scratch"
415
+ msgstr ""
416
+ "Per prima cosa, dicci se utilizzi già i nostri prodotti per questo sito o se "
417
+ "desideri iniziare da zero"
418
+
419
+ #: includes/forms.php:153
420
+ msgid "Form"
421
+ msgstr "Form"
422
+
423
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
424
+ msgid "Form field"
425
+ msgstr "Campo del form"
426
+
427
+ #: includes/forms-list-table.php:87
428
+ msgid "Form ID"
429
+ msgstr "ID del form"
430
+
431
+ #: includes/settings.php:701
432
+ msgid "Form saving failed. Please fill the Subject fields."
433
+ msgstr "Salvataggio del form fallito. Compila i campi Utente e Preferenze."
434
+
435
+ #: includes/forms-list-table.php:88
436
+ msgid "Form Source"
437
+ msgstr "Fonte"
438
+
439
+ #: includes/forms-list-table.php:86
440
+ msgid "Form Title"
441
+ msgstr "Nome del form"
442
+
443
+ #: includes/forms.php:152
444
+ msgid "Forms"
445
+ msgstr "Form"
446
+
447
+ #: views/partials/modals/modal_pp_created.php:7
448
+ msgid ""
449
+ "From here you can customize your privacy policy by adding the services you "
450
+ "use within your website or you can customize the style of the button that "
451
+ "displays your privacy policy."
452
+ msgstr ""
453
+ "Da qui, puoi personalizzare la tua privacy policy aggiungendo i servizi che "
454
+ "utilizzi per il tuo sito web, o puoi personalizzare lo stile del pulsante "
455
+ "che mostra la tua privacy policy."
456
+
457
+ #: views/partials/csSimplifiedConfiguration.php:14
458
+ msgid "GDPR Only"
459
+ msgstr "Solo GDPR"
460
+
461
+ #: views/partials/modals/modal_pp_created.php:9
462
+ msgid "Got it"
463
+ msgstr "Capito"
464
+
465
+ #: views/frontpage.php:9
466
+ msgid "Help me get compliant!"
467
+ msgstr "Aiutami a diventare conforme!"
468
+
469
+ #: views/partials/modals/modal_rating.php:11
470
+ msgid "Here’s how we calculate your rating."
471
+ msgstr "Ecco come calcoliamo il tuo indice di conformità."
472
+
473
+ #: views/partials/siteInfo.php:21
474
+ msgid "How is it calculated?"
475
+ msgstr "Come viene calcolato?"
476
+
477
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
478
+ msgid "HTML"
479
+ msgstr "HTML"
480
+
481
+ #: views/partials/modals/modal_no_website_found.php:11
482
+ #: views/partials/modals/modal_sync.php:8
483
+ msgid "I want to start from scratch"
484
+ msgstr "Voglio iniziare da zero"
485
+
486
+ #: views/cons-single-form.php:225
487
+ msgid "Identifier"
488
+ msgstr "Identificatore"
489
+
490
+ #: views/cons-single-form.php:222
491
+ msgid ""
492
+ "In general, it's important that you declare which legal documents are being "
493
+ "agreed upon when each consent is collected. However, if you use iubenda for "
494
+ "your legal documents, it is *required* that you identify the documents by "
495
+ "selecting them here."
496
+ msgstr ""
497
+ "In generale, è importante dichiarare quali documenti legali vengono "
498
+ "accettati al momento del conferimento del consenso. Se usi iubenda per le "
499
+ "tue informative, *devi* identificare tali documenti selezionandoli qui."
500
+
501
+ #: views/partials/integrateFooter.php:4
502
+ msgid "Integrate"
503
+ msgstr "Integra"
504
+
505
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
506
+ msgid "Integrate manually"
507
+ msgstr "Integra manualmente"
508
+
509
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
510
+ msgid "Integration"
511
+ msgstr "Integrazione"
512
+
513
+ #: views/partials/modals/modal_no_website_found.php:8
514
+ msgid ""
515
+ "It seems that it is not possible to access your data with the code you "
516
+ "pasted, do you want to try again or do you prefer to start configuring your "
517
+ "website from scratch?"
518
+ msgstr ""
519
+ "Sembra che non sia possibile accedere ai tuoi dati con il codice che hai "
520
+ "inserito. Vuoi provare un’altra volta o preferisci iniziare a configurare il "
521
+ "tuo sito web da zero?"
522
+
523
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
524
+ msgid ""
525
+ "It seems that it is not possible to access your data with the code you "
526
+ "pasted, do you want to try again."
527
+ msgstr ""
528
+ "Sembra che non sia possibile accedere ai tuoi dati con il codice che hai "
529
+ "inserito. Vuoi provare un’altra volta?"
530
+
531
+ #: views/products-page.php:15
532
+ msgid ""
533
+ "It seems that you have not activated any of our services, we recommend you "
534
+ "to activate them and increase your level of compliance and avoid risking "
535
+ "fines."
536
+ msgstr ""
537
+ "Sembra che tu non abbia attivato nessuno dei nostri servizi. Ti consigliamo "
538
+ "di attivarli per aumentare il tuo tasso di conformità ed evitare di esporti "
539
+ "a sanzioni."
540
+
541
+ #: includes/widget/IubendaLegalWidget.php:18
542
+ msgid "Iubenda legal"
543
+ msgstr "Documenti iubenda"
544
+
545
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
546
+ msgid "Iubenda legal block"
547
+ msgstr "Iubenda legal block"
548
+
549
+ #: includes/widget/IubendaLegalWidget.php:21
550
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
551
+ msgstr "Il widget legale di iubenda per privacy policy e termini e condizioni"
552
+
553
+ #: views/partials/modals/modal_sync.php:6
554
+ msgid "I’ve already made the set up on iubenda.com"
555
+ msgstr "Ho già effettuato la configurazione su iubenda.com"
556
+
557
+ #: includes/forms.php:585 includes/forms.php:605
558
+ msgid "Last name"
559
+ msgstr "Cognome"
560
+
561
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
562
+ msgid "Learn how to fix it"
563
+ msgstr "Ecco come risolvere"
564
+
565
+ #: views/partials/csSimplifiedConfiguration.php:88
566
+ #: views/partials/modals/modal_rating.php:22
567
+ msgid "Learn More"
568
+ msgstr "Scopri di più"
569
+
570
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
571
+ #: views/partials/csPluginSettings.php:22
572
+ msgid ""
573
+ "Leave scripts untouched on the page if the user has already given consent"
574
+ msgstr ""
575
+ "Lascia gli script intatti sulla pagina se l’utente ha già prestato il "
576
+ "consenso"
577
+
578
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
579
+ #: includes/widget/IubendaLegalWidget.php:167
580
+ msgid "Legal"
581
+ msgstr "Documenti e contatti"
582
+
583
+ #: views/cons-single-form.php:221
584
+ msgid "Legal documents"
585
+ msgstr "Documenti legali"
586
+
587
+ #: views/partials/csSimplifiedConfiguration.php:9
588
+ msgid "Legislation"
589
+ msgstr "Legislazione"
590
+
591
+ #: includes/settings.php:1116 includes/settings.php:1138
592
+ msgid "legislation"
593
+ msgstr "legislazione"
594
+
595
+ #: views/frontpage.php:8
596
+ msgid "Let's configure your website for compliance."
597
+ msgstr "Rendiamo il tuo sito conforme."
598
+
599
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
600
+ #: views/tc-configuration.php:41
601
+ msgid "Light"
602
+ msgstr "Chiaro"
603
+
604
+ #: views/partials/csGeneralSettings.php:35
605
+ #: views/partials/csGeneralSettings.php:42
606
+ msgid "Manual embed"
607
+ msgstr "Integrazione manuale"
608
+
609
+ #: views/cons-single-form.php:44
610
+ msgid "Map fields"
611
+ msgstr "Mappa i campi"
612
+
613
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
614
+ msgid "Menu position"
615
+ msgstr "Posizione menù"
616
+
617
+ #: includes/forms.php:599
618
+ msgid "Middle name"
619
+ msgstr "Secondo nome"
620
+
621
+ #: views/partials/modals/modal_almost_there.php:5
622
+ msgid "Nice! We are almost there."
623
+ msgstr "Perfetto! Ci siamo quasi."
624
+
625
+ #: includes/settings.php:920
626
+ msgid "No"
627
+ msgstr "No"
628
+
629
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
630
+ msgid ""
631
+ "No file available. Save changes to generate iubenda AMP configuration file."
632
+ msgstr ""
633
+ "Nessun file disponibile. Salva le modifiche per generare un file di "
634
+ "configurazione per l’AMP di iubenda."
635
+
636
+ #: includes/forms-list-table.php:347
637
+ msgid "No forms found."
638
+ msgstr "Nessun form trovato."
639
+
640
+ #: includes/settings.php:927 includes/settings.php:934
641
+ msgid "No thanks"
642
+ msgstr "No, grazie"
643
+
644
+ #: views/cons-single-form.php:71
645
+ msgid "None"
646
+ msgstr "Nessuno"
647
+
648
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
649
+ #: views/partials/csGeneralSettings.php:199
650
+ #: views/partials/csGeneralSettings.php:218
651
+ #: views/partials/csGeneralSettings.php:234
652
+ #: views/partials/csPluginSettings.php:69
653
+ #: views/partials/csPluginSettings.php:85
654
+ #: views/partials/csPluginSettings.php:104
655
+ #: views/partials/csPluginSettings.php:120
656
+ msgid "Not set"
657
+ msgstr "Non specificata"
658
+
659
+ #: views/partials/modals/modal_select_language.php:4
660
+ msgid "Now, select your website language"
661
+ msgstr "Ora seleziona la lingua del tuo sito"
662
+
663
+ #: includes/settings.php:933
664
+ msgid "Ok sure!"
665
+ msgstr "Certo!"
666
+
667
+ #: includes/ServiceRating.php:103
668
+ msgid "Only track users that give consent"
669
+ msgstr "Traccia solo gli utenti che hanno prestato il consenso"
670
+
671
+ #: views/partials/modals/modal_no_website_found.php:6
672
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
673
+ msgid "Ooops! <br> No website found with this embed code."
674
+ msgstr ""
675
+ "Ops! <br> Non abbiamo trovato nessun sito con questo codice d’integrazione."
676
+
677
+ #: views/partials/modals/modal_sync.php:7
678
+ msgid "or"
679
+ msgstr "o"
680
+
681
+ #: views/partials/csSimplifiedConfiguration.php:83
682
+ msgid "Other options"
683
+ msgstr "Altre opzioni"
684
+
685
+ #: views/partials/welcomeScreenHeader.php:3
686
+ msgid "Our plugin will help you to make your website compliant in minutes."
687
+ msgstr ""
688
+ "Il nostro plugin ti aiuterà a rendere il tuo sito conforme in pochi minuti."
689
+
690
+ #: includes/QuickGeneratorService.php:137
691
+ msgid ""
692
+ "Our products has been integrated successfully, now customize all products to "
693
+ "increase the compliance rating and make your website fully compliant."
694
+ msgstr ""
695
+ "I nostri prodotti sono stati integrati correttamente. Ora personalizzali, "
696
+ "per aumentare il tasso di conformità e rendere il tuo sito pienamente "
697
+ "conforme."
698
+
699
+ #: views/partials/modals/modal_almost_there.php:39
700
+ msgid "Paste your API key here"
701
+ msgstr "Incolla la tua chiave API qui"
702
+
703
+ #: views/partials/csManualConfiguration.php:11
704
+ msgid "Paste your cookie solution embed code here"
705
+ msgstr "Incolla qui il codice d’integrazione della tua Cookie Solution"
706
+
707
+ #: views/partials/languagesTabs.php:21
708
+ msgid "Paste your embed code here"
709
+ msgstr "Incolla qui il tuo codice d’integrazione"
710
+
711
+ #: views/cons-configuration.php:23
712
+ msgid "Paste your public API key here"
713
+ msgstr "Incolla qui la tua chiave API pubblica"
714
+
715
+ #: views/tc-configuration.php:21
716
+ msgid "Paste your terms and conditions embed code here"
717
+ msgstr "Incolla qui il codice d’integrazione dei tuoi termini e condizioni"
718
+
719
+ #: includes/settings.php:628
720
+ #, php-format
721
+ msgid ""
722
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
723
+ "target=\"_blank\">Discussion settings</a>."
724
+ msgstr ""
725
+ "Abilita per i commenti la possibilità di attivare o disattivare la "
726
+ "memorizzazione dei dati personali in un cookie. Per farlo, vai su <a "
727
+ "href=\"%s\" target=\"_blank\">Impostazioni discussione</a>."
728
+
729
+ #: views/cons-single-form.php:234
730
+ msgid "Please select each legal document available on your site."
731
+ msgstr "Seleziona tutti i documenti legali presenti sul tuo sito."
732
+
733
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
734
+ msgid "Plugin settings"
735
+ msgstr "Impostazioni del plugin"
736
+
737
+ #: includes/settings.php:1115 includes/settings.php:1137
738
+ #: includes/settings.php:1156 includes/settings.php:1176
739
+ #: views/partials/bannerPosition.php:20
740
+ msgid "Position"
741
+ msgstr "Posizione"
742
+
743
+ #: views/cons-single-form.php:102
744
+ msgid "Preferences field"
745
+ msgstr "Campo delle preferenze"
746
+
747
+ #: views/cons-single-form.php:98
748
+ msgid "Preferences fields"
749
+ msgstr "Preferenze"
750
+
751
+ #: views/cons-single-form.php:99
752
+ msgid ""
753
+ "Preferences fields allow you to store a record of the various opt-ins points "
754
+ "at which the user has agreed or given consent, such as fields for agreeing "
755
+ "to terms and conditions, newsletter, profiling, etc."
756
+ msgstr ""
757
+ "Questi campi ti permettono di memorizzare a cosa l’utente ha prestato il "
758
+ "proprio consenso, come ad esempio i termini e condizioni, la newsletter la "
759
+ "profilazione, ecc."
760
+
761
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
762
+ #: views/partials/csPluginSettings.php:10
763
+ msgid "Primary"
764
+ msgstr "Primario"
765
+
766
+ #: includes/settings.php:418 includes/settings.php:1150
767
+ msgid "Privacy and Cookie Policy"
768
+ msgstr "Privacy e Cookie Policy"
769
+
770
+ #: includes/PrivacyPolicyGenerator.php:23
771
+ msgid "Privacy Policy"
772
+ msgstr "Privacy policy"
773
+
774
+ #: views/partials/breadcrumb.php:2
775
+ msgid "Products"
776
+ msgstr "Prodotti"
777
+
778
+ #: views/partials/csGeneralSettings.php:246
779
+ #: views/partials/csPluginSettings.php:132
780
+ msgid ""
781
+ "Provide a list of domains for any custom iframes you'd like to block, and "
782
+ "assign their purposes. To make sure they are blocked correctly, please add "
783
+ "domains in the same format as 'example.com', without any protocols e.g. "
784
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
785
+ "domains or subdomains."
786
+ msgstr ""
787
+ "Fornisci una lista di domini per ogni iframe personalizzato che desideri "
788
+ "bloccare e assegna loro una finalità. Per assicurarti di averli bloccati "
789
+ "correttamente, inserisci i domini nello stesso formato di 'exmpale.com', "
790
+ "senza alcun protocollo (ad esempio, 'http://' o 'https://'). Puoi anche "
791
+ "utilizzare dei metacaratteri (*) per includere i domini principali o i "
792
+ "sottodomini."
793
+
794
+ #: views/partials/csGeneralSettings.php:211
795
+ #: views/partials/csPluginSettings.php:97
796
+ msgid ""
797
+ "Provide a list of domains for any custom scripts you'd like to block, and "
798
+ "assign their purposes. To make sure they are blocked correctly, please add "
799
+ "domains in the same format as 'example.com', without any protocols e.g. "
800
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
801
+ "domains or subdomains."
802
+ msgstr ""
803
+ "Fornisci una lista di domini per ogni script personalizzato che desideri "
804
+ "bloccare e assegna loro una finalità. Per assicurarti di averli bloccati "
805
+ "correttamente, inserisci i domini nello stesso formato di 'example.com', "
806
+ "senza alcun protocollo (ad esempio, 'http://' o 'https://'). Puoi anche "
807
+ "utilizzare dei metacaratteri (*) per includere i domini principali o i "
808
+ "sottodomini."
809
+
810
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
811
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
812
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
813
+ msgid "Remove"
814
+ msgstr "Elimina"
815
+
816
+ #: views/partials/csSimplifiedConfiguration.php:29
817
+ msgid "Require consent from"
818
+ msgstr "Richiedi il consenso da"
819
+
820
+ #: views/partials/integrateFooter.php:3
821
+ msgid "Reset settings"
822
+ msgstr "Ripristina le impostazioni"
823
+
824
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
825
+ msgid ""
826
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
827
+ "/ html\" (recommended)"
828
+ msgstr ""
829
+ "Restringi l’esecuzione del plugin alle sole richieste che presentano "
830
+ "“Content-type: text/html” (consigliato)"
831
+
832
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
833
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
834
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
835
+ msgid "Save settings"
836
+ msgstr "Salva le impostazioni"
837
+
838
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
839
+ #: views/partials/csPluginSettings.php:14
840
+ msgid "Secondary"
841
+ msgstr "Secondario"
842
+
843
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
844
+ msgid ""
845
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
846
+ "your AMP pages directly?"
847
+ msgstr ""
848
+ "Riesci a vedere il cookie banner AMP effettuando dei test da Google ma non "
849
+ "quando visiti la tua pagina AMP direttamente?"
850
+
851
+ #: includes/forms-list-table.php:376
852
+ msgid "Select All"
853
+ msgstr "Seleziona tutto"
854
+
855
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
856
+ #: views/partials/csPluginSettings.php:17
857
+ msgid "Select Parsing Engine"
858
+ msgstr "Seleziona il motore di parsing"
859
+
860
+ #: views/partials/modals/modal_almost_there.php:13
861
+ msgid "Select products you have already activated"
862
+ msgstr "Seleziona i prodotti che hai già attivato"
863
+
864
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
865
+ msgid "Select the iubenda AMP configuration file location."
866
+ msgstr "Seleziona la posizione del file della configurazione AMP di iubenda."
867
+
868
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
869
+ msgid ""
870
+ "Select whether to display iubenda in a top admin menu or the Settings "
871
+ "submenu."
872
+ msgstr ""
873
+ "Scegli se visualizzare iubenda in una voce di menù principale del pannello "
874
+ "admin o in un sottomenù della scheda Impostazioni."
875
+
876
+ #: views/partials/product-card.php:46
877
+ msgid "Service off"
878
+ msgstr "Servizio disattivo "
879
+
880
+ #: views/partials/product-card.php:46
881
+ #| msgid "Service"
882
+ msgid "Service on"
883
+ msgstr "Servizio attivo"
884
+
885
+ #: includes/ServiceRating.php:98
886
+ msgid "Set up a cookie banner"
887
+ msgstr "Configura un cookie banner"
888
+
889
+ #: includes/ServiceRating.php:108
890
+ msgid "Set up a privacy policy"
891
+ msgstr "Configura una privacy policy"
892
+
893
+ #: includes/ServiceRating.php:113
894
+ msgid "Set up terms and conditions"
895
+ msgstr "Configura termini e condizioni"
896
+
897
+ #: includes/settings.php:749
898
+ msgid "Settings saved."
899
+ msgstr "Impostazioni salvate."
900
+
901
+ #: views/pp-configuration.php:22
902
+ msgid "Setup your privacy and cookie policy on iubenda.com"
903
+ msgstr "Configura la tua privacy e cookie policy su iubenda.com"
904
+
905
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
906
+ msgid "Shortcode"
907
+ msgstr "Shortcode"
908
+
909
+ #: views/partials/csGeneralSettings.php:14
910
+ #: views/partials/csGeneralSettings.php:23
911
+ msgid "Simplified"
912
+ msgstr "Semplificata"
913
+
914
+ #: views/partials/modals/modal_almost_there.php:6
915
+ msgid ""
916
+ "Since you already activated some products for this website, we just ask you "
917
+ "to copy and paste the embedding code of the product you already have to "
918
+ "syncronize your iubenda acount with WP plugin."
919
+ msgstr ""
920
+ "Visto che hai già attivato alcuni prodotti per questo sito web, ti chiediamo "
921
+ "di copiare e incollare il codice d’integrazione del prodotto che hai già "
922
+ "attivato per sincronizzare il tuo account iubenda con il plugin WP."
923
+
924
+ #: views/cons-single-form.php:48
925
+ msgid "Status"
926
+ msgstr "Stato"
927
+
928
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
929
+ #: views/partials/csGeneralSettings.php:200
930
+ #: views/partials/csGeneralSettings.php:219
931
+ #: views/partials/csGeneralSettings.php:235
932
+ #: views/partials/csPluginSettings.php:70
933
+ #: views/partials/csPluginSettings.php:86
934
+ #: views/partials/csPluginSettings.php:105
935
+ #: views/partials/csPluginSettings.php:121
936
+ msgid "Strictly necessary"
937
+ msgstr "Strettamente necessari"
938
+
939
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
940
+ #: includes/settings.php:78 includes/settings.php:79
941
+ msgid "string"
942
+ msgstr "stringa"
943
+
944
+ #: includes/settings.php:1114 includes/settings.php:1136
945
+ #: includes/settings.php:1155 includes/settings.php:1175
946
+ msgid "Style"
947
+ msgstr "Stile"
948
+
949
+ #: views/cons-single-form.php:65
950
+ msgid "Subject field"
951
+ msgstr "Attributo"
952
+
953
+ #: views/cons-single-form.php:61
954
+ msgid "Subject fields"
955
+ msgstr "Utente"
956
+
957
+ #: views/cons-single-form.php:62
958
+ msgid ""
959
+ "Subject fields allow you to store a series of identifying values about your "
960
+ "individual subjects/users. Please map the subject field with the "
961
+ "corresponding form fields where applicable."
962
+ msgstr ""
963
+ "Questi campi ti permettono di memorizzare una serie di valori identificativi "
964
+ "dell’utente. Associa gli attributi dell’utente ai corrispondenti campi del "
965
+ "form (quando applicabile)."
966
+
967
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
968
+ msgid "Submenu"
969
+ msgstr "Sottomenù"
970
+
971
+ #: includes/settings.php:926
972
+ msgid "Sure!"
973
+ msgstr "Certo!"
974
+
975
+ #: views/partials/modals/modal_almost_there.php:75
976
+ msgid "Synchronize products"
977
+ msgstr "Sincronizza i prodotti"
978
+
979
+ #: includes/settings.php:110
980
+ msgid "Targeting & Advertising"
981
+ msgstr "Targeting e Pubblicità"
982
+
983
+ #: views/partials/csGeneralSettings.php:188
984
+ #: views/partials/csGeneralSettings.php:204
985
+ #: views/partials/csGeneralSettings.php:223
986
+ #: views/partials/csGeneralSettings.php:239
987
+ #: views/partials/csPluginSettings.php:74
988
+ #: views/partials/csPluginSettings.php:90
989
+ #: views/partials/csPluginSettings.php:109
990
+ #: views/partials/csPluginSettings.php:125
991
+ msgid "Targeting &amp; Advertising"
992
+ msgstr "Targeting e Pubblicità"
993
+
994
+ #: includes/settings.php:412
995
+ msgid "Terms and condition"
996
+ msgstr "Termini e condizioni"
997
+
998
+ #: includes/settings.php:1170
999
+ msgid "Terms and Conditions"
1000
+ msgstr "Termini e Condizioni"
1001
+
1002
+ #: views/partials/bannerStyle.php:2
1003
+ msgid "Theme"
1004
+ msgstr "Tema"
1005
+
1006
+ #: includes/ServiceRating.php:109
1007
+ #, php-format
1008
+ msgid ""
1009
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1010
+ "under most privacy laws around the world. This document typically includes "
1011
+ "legally required disclosures about the type of personal data you process, "
1012
+ "why you need to process it, how the processing is done and the user’s rights "
1013
+ "under applicable law."
1014
+ msgstr ""
1015
+ "Questa voce rappresenta il 25&#37; del tuo punteggio. La privacy policy è un "
1016
+ "requisito di molte leggi sulla privacy internazionali. Questo documento di "
1017
+ "solito include le informazioni obbligatorie sul tipo di dati personali "
1018
+ "trattati, le finalità e le modalità di trattamento e i diritti degli utenti "
1019
+ "secondo la legge applicabile."
1020
+
1021
+ #: includes/ServiceRating.php:104
1022
+ #, php-format
1023
+ msgid ""
1024
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1025
+ "Europe-based users, you likely need to block cookies from running until you "
1026
+ "receive user consent. To do this, select “Automatically block scripts "
1027
+ "detected by the plugin”."
1028
+ msgstr ""
1029
+ "Questa voce rappresenta il 25&#37; del tuo punteggio. Se hai sede in Europa "
1030
+ "o ti rivolgi a utenti che hanno sede in Europa, probabilmente dovrai "
1031
+ "bloccare i cookie prima di aver ricevuto il consenso dell’utente. Per farlo, "
1032
+ "seleziona “Blocca automaticamente gli script rilevati dal plugin”."
1033
+
1034
+ #: includes/ServiceRating.php:114
1035
+ #, php-format
1036
+ msgid ""
1037
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1038
+ "protect you, the website owner, from potential liabilities and more. "
1039
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1040
+ "be legally required as Terms typically contain legally mandatory disclosures."
1041
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1042
+ "that they actually fit your specific scenario."
1043
+ msgstr ""
1044
+ "Questa voce rappresenta il 25&#37; del tuo punteggio. Termini e condizioni "
1045
+ "aiutano a proteggere il proprietario del sito web da potenziali "
1046
+ "responsabilità legali e molto altro. Inoltre, se sei il titolare di un sito "
1047
+ "o un’app di e-commerce, questo documento potrebbe essere richiesto dalla "
1048
+ "legge, visto che i Termini contengono in genere informazioni obbligatorie. I "
1049
+ "termini e condizioni sono giuridicamente vincolanti ed è quindi importante "
1050
+ "assicurarsi che si adattino al tuo scenario specifico."
1051
+
1052
+ #: includes/ServiceRating.php:99
1053
+ #, php-format
1054
+ msgid ""
1055
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1056
+ "your users about your use of cookies and similar tracking technologies, and "
1057
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1058
+ "or ePrivacy apply to you."
1059
+ msgstr ""
1060
+ "Questa voce rappresenta il 25&#37; del tuo punteggio. Il cookie banner deve "
1061
+ "informare gli utenti sull’uso dei cookie e di strumenti di tracciamento "
1062
+ "simili e sui loro diritti al riguardo. Potrebbe essere necessario un banner "
1063
+ "se si applica il GDPR, il CCPA o la direttiva ePrivacy."
1064
+
1065
+ #: views/partials/frontpage_main_box.php:26
1066
+ msgid "This is what you may need to be compliant"
1067
+ msgstr "Ecco cosa potrebbe servirti per essere conforme"
1068
+
1069
+ #: views/partials/auto_detect_forms.php:29
1070
+ msgid ""
1071
+ "This section lists the forms available for field mapping. The plugin "
1072
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1073
+ "Checkout and WP Forms."
1074
+ msgstr ""
1075
+ "Questa sezione elenca i form disponibili al mapping. Al momento il plugin "
1076
+ "supporta e rileva: Commenti WordPress, Contact Form 7, WooCommerce Checkout "
1077
+ "e WP Forms."
1078
+
1079
+ #: includes/widget/IubendaLegalWidget.php:176
1080
+ msgid "Title:"
1081
+ msgstr "Nome:"
1082
+
1083
+ #: includes/settings.php:905
1084
+ #, php-format
1085
+ msgid ""
1086
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1087
+ "your account</span>. Check your mailbox now and validate your email address, "
1088
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1089
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1090
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1091
+ "notification-alert link-underline\" data-dismiss-"
1092
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1093
+ msgstr ""
1094
+ "Per garantire scansioni regolari e un supporto completo, <span class=\"text-"
1095
+ "bold\">verifica il tuo account</span>. Controlla la tua casella di posta "
1096
+ "elettronica e conferma il tuo indirizzo e-mail, oppure controlla <a "
1097
+ "href=\"%s\" target=\"_blank\" class=\"link-underline\">il tuo account</a> su "
1098
+ "iubenda.com. Se lo hai già fatto, puoi <a href=\"javascript:void(0)\" "
1099
+ "class=\"notice-dismiss-by-text dismiss-notification-alert link-underline\" "
1100
+ "data-dismiss-key=\"iub_user_needs_to_verify_his_account\"> nascondere questo "
1101
+ "avviso</a>."
1102
+
1103
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1104
+ msgid "Top menu"
1105
+ msgstr "Menù principale"
1106
+
1107
+ #: views/partials/modals/modal_no_website_found.php:10
1108
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1109
+ msgid "Try again"
1110
+ msgstr "Riprova"
1111
+
1112
+ #: includes/settings.php:1154 includes/settings.php:1174
1113
+ msgid "Version"
1114
+ msgstr "Versione"
1115
+
1116
+ #: views/partials/header_scanned.php:4
1117
+ msgid "We have analyzed your website in background and this is the result."
1118
+ msgstr "Abbiamo analizzato il tuo sito web e questo è il risultato."
1119
+
1120
+ #: views/partials/buttonPosition.php:28
1121
+ #: views/partials/modals/modal_almost_there.php:62
1122
+ #: views/tc-configuration.php:83
1123
+ #, php-format
1124
+ #| msgid ""
1125
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1126
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1127
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1128
+ msgid ""
1129
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1130
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1131
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1132
+ msgstr ""
1133
+ "Non siamo riusciti ad aggiungere il widget “Documenti e contatti” al footer, "
1134
+ "dal momento che il tuo tema non è compatibile. Puoi posizionare il widget "
1135
+ "“Documenti e contatti” manualmente da <a href=\"%s\" target=\"_blank\">"
1136
+ "qui</a>."
1137
+
1138
+ #: includes/settings.php:931
1139
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1140
+ msgstr "Ci dispiace. Che ne dici di lasciarci un feedback?"
1141
+
1142
+ #: views/partials/welcomeScreenHeader.php:2
1143
+ msgid "Welcome to iubenda!"
1144
+ msgstr "Benvenuto su iubenda!"
1145
+
1146
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1147
+ #: views/partials/modals/modal_almost_there.php:42
1148
+ msgid "Where can I find this code?"
1149
+ msgstr "Dove posso trovare questo codice?"
1150
+
1151
+ #: includes/settings.php:924
1152
+ msgid ""
1153
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1154
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1155
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1156
+ "out."
1157
+ msgstr ""
1158
+ "Che sollievo! Abbiamo lavorato tantissimo per rendere questo plugin il più "
1159
+ "utile possibile, quindi siamo molto contenti che ti piaccia. Ormai che sei "
1160
+ "qui, che ne dici di lasciarci 5 stelle?? Ci aiuterebbe davvero."
1161
+
1162
+ #: views/partials/csSimplifiedConfiguration.php:43
1163
+ msgid "Worldwide"
1164
+ msgstr "Tutto il mondo"
1165
+
1166
+ #: includes/settings.php:919
1167
+ msgid "Yes"
1168
+ msgstr "Sì"
1169
+
1170
+ #: includes/settings.php:389
1171
+ msgid "You don't have permission to access this page."
1172
+ msgstr "Non sei autorizzato ad accedere a questa pagina."
1173
+
1174
+ #: views/partials/csSimplifiedConfiguration.php:92
1175
+ msgid "You should activate this feature if you show ads on your website"
1176
+ msgstr ""
1177
+ "Dovresti attivare questa funzionalità se mostri annunci pubblicitari sul tuo "
1178
+ "sito web"
1179
+
1180
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1181
+ msgid "Your embed code"
1182
+ msgstr "Il tuo codice d’integrazione"
1183
+
1184
+ #: views/cons-configuration.php:29
1185
+ msgid "Your iubenda Javascript library public API key"
1186
+ msgstr "La tua chiave API pubblica per la libreria JavaScript di iubenda"
1187
+
1188
+ #: views/partials/modals/modal_pp_created.php:5
1189
+ msgid "Your privacy policy has been created!"
1190
+ msgstr "La tua privacy policy è stata creata!"
1191
+
1192
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1193
+ #: views/partials/siteInfo.php:20
1194
+ msgid "Your rating"
1195
+ msgstr "La tua valutazione"
1196
+
1197
+ #: includes/QuickGeneratorService.php:111
1198
+ msgid ""
1199
+ "Your website has been created and your legal documents have been generated. "
1200
+ "Setup your cookie banner and privacy policy button to complete the "
1201
+ "integration."
1202
+ msgstr ""
1203
+ "Il tuo sito è stato creato e i tuoi documenti legali generati. Configura il "
1204
+ "tuo cookie banner e il pulsante della privacy policy per completare "
1205
+ "l’integrazione."
languages/iubenda-nl_NL.mo ADDED
Binary file
languages/iubenda-nl_NL.po ADDED
@@ -0,0 +1,1224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-06-22 14:50+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:54+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Dutch\n"
8
+ "Language: nl_NL\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(verplicht)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Een shortcode is een klein stukje code waarmee je moeiteloos interactieve "
31
+ "elementen kunt insluiten of complexe pagina-opmaak kunt maken.<br>Plak de "
32
+ "shortcode gewoon waar je wilt dat de knop wordt getoond."
33
+
34
+ #: views/cons-configuration.php:17
35
+ msgid "Activate & Configure Consent Solution by"
36
+ msgstr "Activeer en configureer de Consent Solution door"
37
+
38
+ #: views/cons-configuration.php:14
39
+ msgid ""
40
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
41
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
42
+ "your website."
43
+ msgstr ""
44
+ "Activeer de <strong>Consent Solution</strong> via je iubenda-dashboard op "
45
+ "onze website en plak de <strong>API-sleutel</strong> hier om die op je "
46
+ "website te integreren."
47
+
48
+ #: views/integrate-setup.php:21
49
+ msgid "Add a cookie banner"
50
+ msgstr "Voeg een cookiebanner toe"
51
+
52
+ #: views/cons-configuration.php:44
53
+ msgid "Add forms"
54
+ msgstr "Formulieren toevoegen"
55
+
56
+ #: views/cons-single-form.php:268
57
+ msgid "Add New Document"
58
+ msgstr "Nieuw document toevoegen"
59
+
60
+ #: views/cons-single-form.php:216
61
+ msgid "Add New Exclude"
62
+ msgstr "Nieuw uitsluitveld toevoegen"
63
+
64
+ #: views/partials/csGeneralSettings.php:247
65
+ #: views/partials/csPluginSettings.php:133
66
+ msgid "Add New iframe"
67
+ msgstr "Nieuw iframe toevoegen"
68
+
69
+ #: views/cons-single-form.php:155
70
+ msgid "Add New Preference"
71
+ msgstr "Nieuwe voorkeur toevoegen"
72
+
73
+ #: views/partials/csGeneralSettings.php:212
74
+ #: views/partials/csPluginSettings.php:98
75
+ msgid "Add New Script"
76
+ msgstr "Nieuw script toevoegen"
77
+
78
+ #: views/integrate-setup.php:140
79
+ msgid "Add the privacy policy button"
80
+ msgstr "Voeg de knop voor het privacybeleid toe"
81
+
82
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
83
+ msgid "Add to the footer automatically"
84
+ msgstr "Automatisch toevoegen aan de voettekst"
85
+
86
+ #: includes/forms-list-table.php:279
87
+ msgid "All form sources"
88
+ msgstr "Alle bronnen"
89
+
90
+ #: views/cons-single-form.php:250
91
+ msgid "Alternatively, you may add your own custom document identifiers."
92
+ msgstr "Je kunt ook je eigen aangepaste identificatoren toevoegen."
93
+
94
+ #: includes/amp.php:281
95
+ msgid "AMP Cookie Consent"
96
+ msgstr "AMP Cookietoestemming"
97
+
98
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
99
+ #: views/partials/csGeneralSettings.php:203
100
+ #: views/partials/csGeneralSettings.php:222
101
+ #: views/partials/csGeneralSettings.php:238
102
+ #: views/partials/csPluginSettings.php:73
103
+ #: views/partials/csPluginSettings.php:89
104
+ #: views/partials/csPluginSettings.php:108
105
+ #: views/partials/csPluginSettings.php:124
106
+ msgid "Analytics"
107
+ msgstr "Statistieken"
108
+
109
+ #: views/partials/frontpage_main_box.php:22
110
+ msgid "Analyzing your website"
111
+ msgstr "Je website analyseren"
112
+
113
+ #: views/cons-configuration.php:53
114
+ msgid "Auto-detect forms"
115
+ msgstr "Formulieren automatisch detecteren"
116
+
117
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
118
+ msgid "Auto-generated configuration file"
119
+ msgstr "Automatisch gegenereerd configuratiebestand"
120
+
121
+ #: views/cons-single-form.php:71
122
+ msgid "Autogenerated"
123
+ msgstr "Automatisch gegenereerd"
124
+
125
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
126
+ #: views/partials/csPluginSettings.php:4
127
+ msgid "Automatically block scripts detected by the plugin"
128
+ msgstr "Door de plug-in gedetecteerde scripts automatisch blokkeren"
129
+
130
+ #: views/partials/bannerPosition.php:41
131
+ msgid "Background-overlay"
132
+ msgstr "Achtergrondoverlay"
133
+
134
+ #: views/partials/csSimplifiedConfiguration.php:68
135
+ msgid "Banner buttons"
136
+ msgstr "Bannerknoppen"
137
+
138
+ #: includes/settings.php:107
139
+ msgid "Basic interactions & functionalities"
140
+ msgstr "Basisinteracties en functionaliteiten"
141
+
142
+ #: views/partials/csGeneralSettings.php:185
143
+ #: views/partials/csGeneralSettings.php:201
144
+ #: views/partials/csGeneralSettings.php:220
145
+ #: views/partials/csGeneralSettings.php:236
146
+ #: views/partials/csPluginSettings.php:71
147
+ #: views/partials/csPluginSettings.php:87
148
+ #: views/partials/csPluginSettings.php:106
149
+ #: views/partials/csPluginSettings.php:122
150
+ msgid "Basic interactions &amp; functionalities"
151
+ msgstr "Basisinteracties en functionaliteiten"
152
+
153
+ #: views/partials/csGeneralSettings.php:173
154
+ msgid "Blocked domains"
155
+ msgstr "Geblokkeerde domeinen"
156
+
157
+ #: views/partials/csSimplifiedConfiguration.php:22
158
+ msgid "Both"
159
+ msgstr "Beide"
160
+
161
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
162
+ msgid "Button position"
163
+ msgstr "Positie knop"
164
+
165
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
166
+ msgid "Button style"
167
+ msgstr "Stijl knop"
168
+
169
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
170
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
171
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
172
+ msgid "Cancel"
173
+ msgstr "Annuleren"
174
+
175
+ #: views/partials/csSimplifiedConfiguration.php:18
176
+ msgid "CCPA Only"
177
+ msgstr "Enkel CCPA"
178
+
179
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
180
+ #: views/tc-configuration.php:16
181
+ msgid "clicking here"
182
+ msgstr "hier te klikken"
183
+
184
+ #: views/partials/csGeneralSettings.php:2
185
+ msgid "Configuration"
186
+ msgstr "Configuratie"
187
+
188
+ #: views/partials/product-card.php:48
189
+ msgid "Configure"
190
+ msgstr "Configureren"
191
+
192
+ #: views/partials/csManualConfiguration.php:5
193
+ msgid "Configure cookie banner by"
194
+ msgstr "Configureer je cookiebanner door"
195
+
196
+ #: views/tc-configuration.php:15
197
+ msgid "Configure terms and conditions by"
198
+ msgstr "Configureer je algemene voorwaarden door"
199
+
200
+ #: views/partials/csManualConfiguration.php:2
201
+ msgid ""
202
+ "Configure your cookie banner on our website and paste here the embed code to "
203
+ "integrate it to your website."
204
+ msgstr ""
205
+ "Configureer je cookiebanner op onze website en plak de insluitcode hier om "
206
+ "die op jouw website te integreren."
207
+
208
+ #: views/tc-configuration.php:12
209
+ msgid ""
210
+ "Configure your terms and conditions on our website and paste here the embed "
211
+ "code to integrate the button on your website."
212
+ msgstr ""
213
+ "Configureer je algemene voorwaarden op onze website en plak de insluitcode "
214
+ "hier om de knop op jouw website te integreren."
215
+
216
+ #: views/cons-configuration.php:31
217
+ msgid "Confirm API"
218
+ msgstr "API bevestigen"
219
+
220
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
221
+ #: includes/settings.php:1182
222
+ msgid "Consent Solution"
223
+ msgstr "Consent Solution"
224
+
225
+ #: views/partials/modals/modal_almost_there.php:37
226
+ msgid "Consent Solution API key"
227
+ msgstr "API-sleutel Consent Solution"
228
+
229
+ #: views/partials/modals/modal_select_language.php:54
230
+ msgid "Continue"
231
+ msgstr "Doorgaan"
232
+
233
+ #: includes/settings.php:91 includes/settings.php:424
234
+ #: includes/settings.php:1162
235
+ msgid "Cookie Solution"
236
+ msgstr "Cookie Solution"
237
+
238
+ #: includes/QuickGeneratorService.php:625
239
+ #, php-format
240
+ msgid ""
241
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
242
+ ". For instructions on how to fix this, please read <a class=\"link-"
243
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
244
+ msgstr ""
245
+ "Je hebt momenteel geen schrijfmachtiging voor <i class=\"text-bold\">%s</i>. "
246
+ "Instructies over hoe je dit kunt oplossen, vind je in <a class=\"link-"
247
+ "underline\" target=\\\"_blank\\\" href=\\\"%s\\\">onze gids</a>."
248
+
249
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
250
+ msgid "Custom configuration file"
251
+ msgstr "Aangepast configuratiebestand"
252
+
253
+ #: views/partials/csGeneralSettings.php:177
254
+ #: views/partials/csPluginSettings.php:63
255
+ msgid "Custom iframes"
256
+ msgstr "Aangepaste iframes"
257
+
258
+ #: views/partials/csGeneralSettings.php:176
259
+ #: views/partials/csPluginSettings.php:62
260
+ msgid "Custom scripts"
261
+ msgstr "Aangepaste scripts"
262
+
263
+ #: views/partials/csPluginSettings.php:59
264
+ msgid "Custom settings"
265
+ msgstr "Aangepaste instellingen"
266
+
267
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
268
+ #: views/tc-configuration.php:50
269
+ msgid "Dark"
270
+ msgstr "Donker"
271
+
272
+ #: includes/forms-list-table.php:90
273
+ msgid "Date"
274
+ msgstr "Datum"
275
+
276
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
277
+ #: views/partials/csGeneralSettings.php:115
278
+ msgid "Default language"
279
+ msgstr "Standaardtaal"
280
+
281
+ #: includes/forms-list-table.php:160
282
+ msgid "Delete"
283
+ msgstr "Wissen"
284
+
285
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
286
+ msgid "Delete all plugin data upon deactivation"
287
+ msgstr "Verwijder alle gegevens van de plug-in bij deactivering"
288
+
289
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
290
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
291
+ msgstr "Gebruik de plug-in niet binnen de RSS-feed (aanbevolen)"
292
+
293
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
294
+ msgid "Do not run the plugin on POST requests (recommended)"
295
+ msgstr "Gebruik de plug-in niet bij POST-aanvragen (aanbevolen)"
296
+
297
+ #: views/partials/footer.php:5
298
+ msgid "Documentation"
299
+ msgstr "Documentatie"
300
+
301
+ #: includes/forms-list-table.php:159
302
+ msgid "Edit"
303
+ msgstr "Bewerken"
304
+
305
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
306
+ msgid "Enable Google AMP support"
307
+ msgstr "Ondersteuning Google AMP inschakelen"
308
+
309
+ #: views/partials/csSimplifiedConfiguration.php:88
310
+ msgid "Enable IAB Transparency and Consent Framework"
311
+ msgstr "IAB Transparency and Consent Framework inschakelen"
312
+
313
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
314
+ #: views/partials/csPluginSettings.php:24
315
+ msgid ""
316
+ "Enable this option to improve performance <strong>only</strong> if your site "
317
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
318
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
319
+ "keep this setting disabled"
320
+ msgstr ""
321
+ "Schakel deze optie in voor betere prestaties, <strong>enkel</strong> indien "
322
+ "je website <strong>geen</strong> cache-systeem of cache-plug-in gebruikt en "
323
+ "je <strong>geen</strong> toestemming per categorie verzamelt. Als je het "
324
+ "niet zeker weet, laat deze instelling dan uitgeschakeld."
325
+
326
+ #: includes/settings.php:917
327
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
328
+ msgstr "Blij met de iubenda plug-in voor cookies en toestemmingen?"
329
+
330
+ #: views/partials/csGeneralSettings.php:216
331
+ #: views/partials/csGeneralSettings.php:232
332
+ #: views/partials/csPluginSettings.php:102
333
+ #: views/partials/csPluginSettings.php:118
334
+ msgid "Enter custom iframe"
335
+ msgstr "Voer aangepast iframe in"
336
+
337
+ #: views/partials/csGeneralSettings.php:181
338
+ #: views/partials/csGeneralSettings.php:197
339
+ #: views/partials/csPluginSettings.php:67
340
+ #: views/partials/csPluginSettings.php:83
341
+ msgid "Enter custom script"
342
+ msgstr "Voer aangepast script in"
343
+
344
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
345
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
346
+ #: views/cons-single-form.php:260
347
+ msgid "Enter field name"
348
+ msgstr "Veldnaam invoeren"
349
+
350
+ #: views/partials/csSimplifiedConfiguration.php:59
351
+ msgid "EU Only"
352
+ msgstr "Alleen gebruikers in de EU"
353
+
354
+ #: views/cons-single-form.php:164
355
+ msgid "Exclude field"
356
+ msgstr "Uitsluitveld"
357
+
358
+ #: views/cons-single-form.php:159
359
+ msgid "Exclude fields"
360
+ msgstr "Uitsluitvelden"
361
+
362
+ #: views/cons-single-form.php:160
363
+ msgid ""
364
+ "Exclude fields allow you to create a list of fields that you would like to "
365
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
366
+ "other fields not related to the consent)."
367
+ msgstr ""
368
+ "Met uitsluitvelden kun je een lijst maken van velden die worden uitgesloten "
369
+ "van de documentatie die door de Consent Solution wordt bijgehouden (bv. "
370
+ "wachtwoorden of andere velden die geen verband houden met toestemming)."
371
+
372
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
373
+ #: views/partials/csGeneralSettings.php:202
374
+ #: views/partials/csGeneralSettings.php:221
375
+ #: views/partials/csGeneralSettings.php:237
376
+ #: views/partials/csPluginSettings.php:72
377
+ #: views/partials/csPluginSettings.php:88
378
+ #: views/partials/csPluginSettings.php:107
379
+ #: views/partials/csPluginSettings.php:123
380
+ msgid "Experience enhancement"
381
+ msgstr "Verbetering van de ervaring"
382
+
383
+ #: views/partials/csSimplifiedConfiguration.php:72
384
+ msgid "Explicit Accept and Customize buttons"
385
+ msgstr "Knoppen voor uitdrukkelijk accepteren en aanpassen"
386
+
387
+ #: views/partials/csSimplifiedConfiguration.php:77
388
+ msgid "Explicit Reject button"
389
+ msgstr "Knop voor uitdrukkelijk weigeren"
390
+
391
+ #: views/cons-single-form.php:12
392
+ msgid "Field Mapping"
393
+ msgstr "Veldtoewijzing"
394
+
395
+ #: includes/forms-list-table.php:89
396
+ msgid "Fields"
397
+ msgstr "Velden"
398
+
399
+ #: includes/forms-list-table.php:260
400
+ msgid "Filter"
401
+ msgstr "Filter"
402
+
403
+ #: includes/forms-list-table.php:277
404
+ msgid "Filter by source"
405
+ msgstr "Filteren op bron"
406
+
407
+ #: includes/forms.php:579 includes/forms.php:593
408
+ msgid "First name"
409
+ msgstr "Voornaam"
410
+
411
+ #: views/partials/modals/modal_sync.php:4
412
+ msgid ""
413
+ "First of all, tell us if you already use our products for this website or if "
414
+ "you want to start from scratch"
415
+ msgstr ""
416
+ "Maak je al gebruik van onze producten voor deze website, of wil je vanaf nul "
417
+ "beginnen?"
418
+
419
+ #: includes/forms.php:153
420
+ msgid "Form"
421
+ msgstr "Formulier"
422
+
423
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
424
+ msgid "Form field"
425
+ msgstr "Formulierveld"
426
+
427
+ #: includes/forms-list-table.php:87
428
+ msgid "Form ID"
429
+ msgstr "ID formulier"
430
+
431
+ #: includes/settings.php:701
432
+ msgid "Form saving failed. Please fill the Subject fields."
433
+ msgstr "Formulier niet opgeslagen. Vul de onderwerp-velden in."
434
+
435
+ #: includes/forms-list-table.php:88
436
+ msgid "Form Source"
437
+ msgstr "Bron formulier"
438
+
439
+ #: includes/forms-list-table.php:86
440
+ msgid "Form Title"
441
+ msgstr "Titel formulier"
442
+
443
+ #: includes/forms.php:152
444
+ msgid "Forms"
445
+ msgstr "Formulieren"
446
+
447
+ #: views/partials/modals/modal_pp_created.php:7
448
+ msgid ""
449
+ "From here you can customize your privacy policy by adding the services you "
450
+ "use within your website or you can customize the style of the button that "
451
+ "displays your privacy policy."
452
+ msgstr ""
453
+ "Hier kun je je privacybeleid aanpassen door diensten toe te voegen die je op "
454
+ "je website gebruikt. Je kunt ook de stijl aanpassen van de knop waarmee je "
455
+ "privacybeleid wordt weergegeven."
456
+
457
+ #: views/partials/csSimplifiedConfiguration.php:14
458
+ msgid "GDPR Only"
459
+ msgstr "Enkel AVG"
460
+
461
+ #: views/partials/modals/modal_pp_created.php:9
462
+ msgid "Got it"
463
+ msgstr "Begrepen"
464
+
465
+ #: views/frontpage.php:9
466
+ msgid "Help me get compliant!"
467
+ msgstr "Help me om aan de regelgeving te voldoen!"
468
+
469
+ #: views/partials/modals/modal_rating.php:11
470
+ msgid "Here’s how we calculate your rating."
471
+ msgstr "Zo wordt je score berekend."
472
+
473
+ #: views/partials/siteInfo.php:21
474
+ msgid "How is it calculated?"
475
+ msgstr "Hoe dit wordt berekend"
476
+
477
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
478
+ msgid "HTML"
479
+ msgstr "HTML"
480
+
481
+ #: views/partials/modals/modal_no_website_found.php:11
482
+ #: views/partials/modals/modal_sync.php:8
483
+ msgid "I want to start from scratch"
484
+ msgstr "Vanaf nul beginnen"
485
+
486
+ #: views/cons-single-form.php:225
487
+ msgid "Identifier"
488
+ msgstr "Identificator"
489
+
490
+ #: views/cons-single-form.php:222
491
+ msgid ""
492
+ "In general, it's important that you declare which legal documents are being "
493
+ "agreed upon when each consent is collected. However, if you use iubenda for "
494
+ "your legal documents, it is *required* that you identify the documents by "
495
+ "selecting them here."
496
+ msgstr ""
497
+ "Het is belangrijk dat je bij het verzamelen van toestemming aangeeft met "
498
+ "welke juridische documenten een gebruiker akkoord is gegaan. Als je iubenda "
499
+ "gebruikt voor je juridische documenten, moet je de documenten *verplicht* "
500
+ "hier selecteren."
501
+
502
+ #: views/partials/integrateFooter.php:4
503
+ msgid "Integrate"
504
+ msgstr "Integreren"
505
+
506
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
507
+ msgid "Integrate manually"
508
+ msgstr "Manueel integreren"
509
+
510
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
511
+ msgid "Integration"
512
+ msgstr "Integratie"
513
+
514
+ #: views/partials/modals/modal_no_website_found.php:8
515
+ msgid ""
516
+ "It seems that it is not possible to access your data with the code you "
517
+ "pasted, do you want to try again or do you prefer to start configuring your "
518
+ "website from scratch?"
519
+ msgstr ""
520
+ "Het lijkt erop dat het niet mogelijk is om je gegevens op te halen met de "
521
+ "code die je hebt ingevoerd. Probeer het opnieuw, of configureer je website "
522
+ "vanaf het begin."
523
+
524
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
525
+ msgid ""
526
+ "It seems that it is not possible to access your data with the code you "
527
+ "pasted, do you want to try again."
528
+ msgstr ""
529
+ "Het lijkt erop dat het niet mogelijk is om je gegevens op te halen met de "
530
+ "code die je hebt ingevoerd. Probeer het opnieuw."
531
+
532
+ #: views/products-page.php:15
533
+ msgid ""
534
+ "It seems that you have not activated any of our services, we recommend you "
535
+ "to activate them and increase your level of compliance and avoid risking "
536
+ "fines."
537
+ msgstr ""
538
+ "Het lijkt erop dat je geen enkele van onze diensten hebt geactiveerd. "
539
+ "Verbeter je compliance en verminder het risico op boetes door ze in te "
540
+ "schakelen."
541
+
542
+ #: includes/widget/IubendaLegalWidget.php:18
543
+ msgid "Iubenda legal"
544
+ msgstr "Iubenda juridisch"
545
+
546
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
547
+ msgid "Iubenda legal block"
548
+ msgstr "Iubenda legal block"
549
+
550
+ #: includes/widget/IubendaLegalWidget.php:21
551
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
552
+ msgstr "Iubenda juridische widget voor privacybeleid en algemene voorwaarden"
553
+
554
+ #: views/partials/modals/modal_sync.php:6
555
+ msgid "I’ve already made the set up on iubenda.com"
556
+ msgstr "Ik heb alles al ingesteld op iubenda.com"
557
+
558
+ #: includes/forms.php:585 includes/forms.php:605
559
+ msgid "Last name"
560
+ msgstr "Achternaam"
561
+
562
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
563
+ msgid "Learn how to fix it"
564
+ msgstr "Zo los je dit op"
565
+
566
+ #: views/partials/csSimplifiedConfiguration.php:88
567
+ #: views/partials/modals/modal_rating.php:22
568
+ msgid "Learn More"
569
+ msgstr "Meer informatie"
570
+
571
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
572
+ #: views/partials/csPluginSettings.php:22
573
+ msgid ""
574
+ "Leave scripts untouched on the page if the user has already given consent"
575
+ msgstr ""
576
+ "Laat scripts op de pagina ongemoeid indien de gebruiker al toestemming heeft "
577
+ "gegeven"
578
+
579
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
580
+ #: includes/widget/IubendaLegalWidget.php:167
581
+ msgid "Legal"
582
+ msgstr "Juridisch"
583
+
584
+ #: views/cons-single-form.php:221
585
+ msgid "Legal documents"
586
+ msgstr "Juridische documenten"
587
+
588
+ #: views/partials/csSimplifiedConfiguration.php:9
589
+ msgid "Legislation"
590
+ msgstr "Wetgeving"
591
+
592
+ #: includes/settings.php:1116 includes/settings.php:1138
593
+ msgid "legislation"
594
+ msgstr "wetgeving"
595
+
596
+ #: views/frontpage.php:8
597
+ msgid "Let's configure your website for compliance."
598
+ msgstr "Tijd om je website compliant te maken."
599
+
600
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
601
+ #: views/tc-configuration.php:41
602
+ msgid "Light"
603
+ msgstr "Licht"
604
+
605
+ #: views/partials/csGeneralSettings.php:35
606
+ #: views/partials/csGeneralSettings.php:42
607
+ msgid "Manual embed"
608
+ msgstr "Manueel insluiten"
609
+
610
+ #: views/cons-single-form.php:44
611
+ msgid "Map fields"
612
+ msgstr "Wijs velden toe"
613
+
614
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
615
+ msgid "Menu position"
616
+ msgstr "Plaats in het menu"
617
+
618
+ #: includes/forms.php:599
619
+ msgid "Middle name"
620
+ msgstr "Tweede voornaam"
621
+
622
+ #: views/partials/modals/modal_almost_there.php:5
623
+ msgid "Nice! We are almost there."
624
+ msgstr "Bijna klaar!"
625
+
626
+ #: includes/settings.php:920
627
+ msgid "No"
628
+ msgstr "Nee"
629
+
630
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
631
+ msgid ""
632
+ "No file available. Save changes to generate iubenda AMP configuration file."
633
+ msgstr ""
634
+ "Geen bestand beschikbaar. Sla je wijzigingen op om een AMP-"
635
+ "configuratiebestand te genereren."
636
+
637
+ #: includes/forms-list-table.php:347
638
+ msgid "No forms found."
639
+ msgstr "Geen formulieren gevonden."
640
+
641
+ #: includes/settings.php:927 includes/settings.php:934
642
+ msgid "No thanks"
643
+ msgstr "Nee, bedankt"
644
+
645
+ #: views/cons-single-form.php:71
646
+ msgid "None"
647
+ msgstr "Geen"
648
+
649
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
650
+ #: views/partials/csGeneralSettings.php:199
651
+ #: views/partials/csGeneralSettings.php:218
652
+ #: views/partials/csGeneralSettings.php:234
653
+ #: views/partials/csPluginSettings.php:69
654
+ #: views/partials/csPluginSettings.php:85
655
+ #: views/partials/csPluginSettings.php:104
656
+ #: views/partials/csPluginSettings.php:120
657
+ msgid "Not set"
658
+ msgstr "Niet ingesteld"
659
+
660
+ #: views/partials/modals/modal_select_language.php:4
661
+ msgid "Now, select your website language"
662
+ msgstr "Kies nu de taal van je website"
663
+
664
+ #: includes/settings.php:933
665
+ msgid "Ok sure!"
666
+ msgstr "Natuurlijk!"
667
+
668
+ #: includes/ServiceRating.php:103
669
+ msgid "Only track users that give consent"
670
+ msgstr "Volg alleen gebruikers die daarvoor toestemming geven"
671
+
672
+ #: views/partials/modals/modal_no_website_found.php:6
673
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
674
+ msgid "Ooops! <br> No website found with this embed code."
675
+ msgstr "Oeps! <br> Geen website gevonden met deze insluitcode."
676
+
677
+ #: views/partials/modals/modal_sync.php:7
678
+ msgid "or"
679
+ msgstr "of"
680
+
681
+ #: views/partials/csSimplifiedConfiguration.php:83
682
+ msgid "Other options"
683
+ msgstr "Andere opties"
684
+
685
+ #: views/partials/welcomeScreenHeader.php:3
686
+ msgid "Our plugin will help you to make your website compliant in minutes."
687
+ msgstr "Met onze plug-in kun je je website snel compliant maken."
688
+
689
+ #: includes/QuickGeneratorService.php:137
690
+ msgid ""
691
+ "Our products has been integrated successfully, now customize all products to "
692
+ "increase the compliance rating and make your website fully compliant."
693
+ msgstr ""
694
+ "Onze producten zijn geïntegreerd. Je kunt ze nu aanpassen om een betere "
695
+ "compliancescore te behalen en je website volledig in orde te brengen."
696
+
697
+ #: views/partials/modals/modal_almost_there.php:39
698
+ msgid "Paste your API key here"
699
+ msgstr "Plak je API-sleutel hier"
700
+
701
+ #: views/partials/csManualConfiguration.php:11
702
+ msgid "Paste your cookie solution embed code here"
703
+ msgstr "Plak je insluitcode van de Cookie Solution hier"
704
+
705
+ #: views/partials/languagesTabs.php:21
706
+ msgid "Paste your embed code here"
707
+ msgstr "Plak je insluitcode hier"
708
+
709
+ #: views/cons-configuration.php:23
710
+ msgid "Paste your public API key here"
711
+ msgstr "Plak je publieke API-sleutel hier"
712
+
713
+ #: views/tc-configuration.php:21
714
+ msgid "Paste your terms and conditions embed code here"
715
+ msgstr "Plak je insluitcode van je algemene voorwaarden hier"
716
+
717
+ #: includes/settings.php:628
718
+ #, php-format
719
+ msgid ""
720
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
721
+ "target=\"_blank\">Discussion settings</a>."
722
+ msgstr ""
723
+ "Schakel het tonen van een cookies opt-in selectievakje in via de <a "
724
+ "href=\"%s\" target=\"_blank\">Discussie-instellingen</a>."
725
+
726
+ #: views/cons-single-form.php:234
727
+ msgid "Please select each legal document available on your site."
728
+ msgstr "Selecteer elk juridisch document dat op je website beschikbaar is."
729
+
730
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
731
+ msgid "Plugin settings"
732
+ msgstr "Instellingen plug-in"
733
+
734
+ #: includes/settings.php:1115 includes/settings.php:1137
735
+ #: includes/settings.php:1156 includes/settings.php:1176
736
+ #: views/partials/bannerPosition.php:20
737
+ msgid "Position"
738
+ msgstr "Positie"
739
+
740
+ #: views/cons-single-form.php:102
741
+ msgid "Preferences field"
742
+ msgstr "Veld voorkeuren"
743
+
744
+ #: views/cons-single-form.php:98
745
+ msgid "Preferences fields"
746
+ msgstr "Velden voor voorkeuren"
747
+
748
+ #: views/cons-single-form.php:99
749
+ msgid ""
750
+ "Preferences fields allow you to store a record of the various opt-ins points "
751
+ "at which the user has agreed or given consent, such as fields for agreeing "
752
+ "to terms and conditions, newsletter, profiling, etc."
753
+ msgstr ""
754
+ "Met velden voor voorkeuren kun je een register bijhouden van de "
755
+ "verschillende opt-ins waarmee de gebruiker heeft ingestemd of waarvoor hij "
756
+ "of zij toestemming heeft gegeven, zoals velden om in te stemmen met algemene "
757
+ "voorwaarden, nieuwsbrieven, profilering enz."
758
+
759
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
760
+ #: views/partials/csPluginSettings.php:10
761
+ msgid "Primary"
762
+ msgstr "Primair"
763
+
764
+ #: includes/settings.php:418 includes/settings.php:1150
765
+ msgid "Privacy and Cookie Policy"
766
+ msgstr "Privacy- en cookiebeleid"
767
+
768
+ #: includes/PrivacyPolicyGenerator.php:23
769
+ msgid "Privacy Policy"
770
+ msgstr "Privacybeleid"
771
+
772
+ #: views/partials/breadcrumb.php:2
773
+ msgid "Products"
774
+ msgstr "Producten"
775
+
776
+ #: views/partials/csGeneralSettings.php:246
777
+ #: views/partials/csPluginSettings.php:132
778
+ msgid ""
779
+ "Provide a list of domains for any custom iframes you'd like to block, and "
780
+ "assign their purposes. To make sure they are blocked correctly, please add "
781
+ "domains in the same format as 'example.com', without any protocols e.g. "
782
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
783
+ "domains or subdomains."
784
+ msgstr ""
785
+ "Geef een lijst van domeinen op voor alle aangepaste iframes die je wilt "
786
+ "blokkeren, en wijs hun doelen toe. Om ervoor te zorgen dat ze correct worden "
787
+ "geblokkeerd, moet je domeinen toevoegen in de indeling 'voorbeeld.com', "
788
+ "zonder protocollen als 'http://' of 'https://'. Je kunt ook wildcards (*) "
789
+ "gebruiken om bovenliggende domeinen of subdomeinen op te nemen."
790
+
791
+ #: views/partials/csGeneralSettings.php:211
792
+ #: views/partials/csPluginSettings.php:97
793
+ msgid ""
794
+ "Provide a list of domains for any custom scripts you'd like to block, and "
795
+ "assign their purposes. To make sure they are blocked correctly, please add "
796
+ "domains in the same format as 'example.com', without any protocols e.g. "
797
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
798
+ "domains or subdomains."
799
+ msgstr ""
800
+ "Geef een lijst van domeinen op voor alle aangepaste scripts die je wilt "
801
+ "blokkeren, en wijs hun doelen toe. Om ervoor te zorgen dat ze correct worden "
802
+ "geblokkeerd, moet je domeinen toevoegen in de indeling 'voorbeeld.com', "
803
+ "zonder protocollen als 'http://' of 'https://'. Je kunt ook wildcards (*) "
804
+ "gebruiken om bovenliggende domeinen of subdomeinen op te nemen."
805
+
806
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
807
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
808
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
809
+ msgid "Remove"
810
+ msgstr "Verwijderen"
811
+
812
+ #: views/partials/csSimplifiedConfiguration.php:29
813
+ msgid "Require consent from"
814
+ msgstr "Toestemming vereisen"
815
+
816
+ #: views/partials/integrateFooter.php:3
817
+ msgid "Reset settings"
818
+ msgstr "Instellingen terugzetten"
819
+
820
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
821
+ msgid ""
822
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
823
+ "/ html\" (recommended)"
824
+ msgstr ""
825
+ "Sta de plug-in alleen toe om verzoeken uit te voeren met \"Content-type: "
826
+ "text / html\" (aanbevolen)"
827
+
828
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
829
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
830
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
831
+ msgid "Save settings"
832
+ msgstr "Instellingen opslaan"
833
+
834
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
835
+ #: views/partials/csPluginSettings.php:14
836
+ msgid "Secondary"
837
+ msgstr "Secondair"
838
+
839
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
840
+ msgid ""
841
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
842
+ "your AMP pages directly?"
843
+ msgstr ""
844
+ "Zie je de AMP-cookiemelding wel als je met Google test, maar niet als je je "
845
+ "AMP-pagina's direct bezoekt?"
846
+
847
+ #: includes/forms-list-table.php:376
848
+ msgid "Select All"
849
+ msgstr "Alles selecteren"
850
+
851
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
852
+ #: views/partials/csPluginSettings.php:17
853
+ msgid "Select Parsing Engine"
854
+ msgstr "Parsing-engine selecteren"
855
+
856
+ #: views/partials/modals/modal_almost_there.php:13
857
+ msgid "Select products you have already activated"
858
+ msgstr "Selecteer de producten die je al hebt geactiveerd"
859
+
860
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
861
+ msgid "Select the iubenda AMP configuration file location."
862
+ msgstr "Selecteer waar het AMP-configuratiebestand te vinden is."
863
+
864
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
865
+ msgid ""
866
+ "Select whether to display iubenda in a top admin menu or the Settings "
867
+ "submenu."
868
+ msgstr ""
869
+ "Kies of je iubenda wilt weergeven in een hoofdmenu of in het submenu "
870
+ "Instellingen"
871
+
872
+ #: views/partials/product-card.php:46
873
+ msgid "Service off"
874
+ msgstr "Dienst uit"
875
+
876
+ #: views/partials/product-card.php:46
877
+ #| msgid "Service"
878
+ msgid "Service on"
879
+ msgstr "Dienst aan"
880
+
881
+ #: includes/ServiceRating.php:98
882
+ msgid "Set up a cookie banner"
883
+ msgstr "Stel een cookiebanner in"
884
+
885
+ #: includes/ServiceRating.php:108
886
+ msgid "Set up a privacy policy"
887
+ msgstr "Maak een privacybeleid"
888
+
889
+ #: includes/ServiceRating.php:113
890
+ msgid "Set up terms and conditions"
891
+ msgstr "Maak algemene voorwaarden"
892
+
893
+ #: includes/settings.php:749
894
+ msgid "Settings saved."
895
+ msgstr "Instellingen opgeslagen."
896
+
897
+ #: views/pp-configuration.php:22
898
+ msgid "Setup your privacy and cookie policy on iubenda.com"
899
+ msgstr "Stel je privacybeleid en cookiebeleid in op iubenda.com"
900
+
901
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
902
+ msgid "Shortcode"
903
+ msgstr "Shortcode"
904
+
905
+ #: views/partials/csGeneralSettings.php:14
906
+ #: views/partials/csGeneralSettings.php:23
907
+ msgid "Simplified"
908
+ msgstr "Vereenvoudigd"
909
+
910
+ #: views/partials/modals/modal_almost_there.php:6
911
+ msgid ""
912
+ "Since you already activated some products for this website, we just ask you "
913
+ "to copy and paste the embedding code of the product you already have to "
914
+ "syncronize your iubenda acount with WP plugin."
915
+ msgstr ""
916
+ "Omdat je al een aantal producten hebt geactiveerd voor deze website, vragen "
917
+ "we je om de insluitcode van het product dat je al hebt te kopiëren en zo je "
918
+ "iubenda-account te synchroniseren met de WP-plug-in."
919
+
920
+ #: views/cons-single-form.php:48
921
+ msgid "Status"
922
+ msgstr "Status"
923
+
924
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
925
+ #: views/partials/csGeneralSettings.php:200
926
+ #: views/partials/csGeneralSettings.php:219
927
+ #: views/partials/csGeneralSettings.php:235
928
+ #: views/partials/csPluginSettings.php:70
929
+ #: views/partials/csPluginSettings.php:86
930
+ #: views/partials/csPluginSettings.php:105
931
+ #: views/partials/csPluginSettings.php:121
932
+ msgid "Strictly necessary"
933
+ msgstr "Strikt noodzakelijk"
934
+
935
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
936
+ #: includes/settings.php:78 includes/settings.php:79
937
+ msgid "string"
938
+ msgstr "tekenreeks"
939
+
940
+ #: includes/settings.php:1114 includes/settings.php:1136
941
+ #: includes/settings.php:1155 includes/settings.php:1175
942
+ msgid "Style"
943
+ msgstr "Stijl"
944
+
945
+ #: views/cons-single-form.php:65
946
+ msgid "Subject field"
947
+ msgstr "Veld betrokkene"
948
+
949
+ #: views/cons-single-form.php:61
950
+ msgid "Subject fields"
951
+ msgstr "Velden voor betrokkenen"
952
+
953
+ #: views/cons-single-form.php:62
954
+ msgid ""
955
+ "Subject fields allow you to store a series of identifying values about your "
956
+ "individual subjects/users. Please map the subject field with the "
957
+ "corresponding form fields where applicable."
958
+ msgstr ""
959
+ "Velden voor betrokkenen laten toe een reeks identificerende waarden over je "
960
+ "individuele betrokkenen of gebruikers op te slaan. Wijs velden toe aan de "
961
+ "overeenkomstige formuliervelden waar dat relevant is."
962
+
963
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
964
+ msgid "Submenu"
965
+ msgstr "Submenu"
966
+
967
+ #: includes/settings.php:926
968
+ msgid "Sure!"
969
+ msgstr "Natuurlijk!"
970
+
971
+ #: views/partials/modals/modal_almost_there.php:75
972
+ msgid "Synchronize products"
973
+ msgstr "Producten synchroniseren"
974
+
975
+ #: includes/settings.php:110
976
+ msgid "Targeting & Advertising"
977
+ msgstr "Targeting en advertenties"
978
+
979
+ #: views/partials/csGeneralSettings.php:188
980
+ #: views/partials/csGeneralSettings.php:204
981
+ #: views/partials/csGeneralSettings.php:223
982
+ #: views/partials/csGeneralSettings.php:239
983
+ #: views/partials/csPluginSettings.php:74
984
+ #: views/partials/csPluginSettings.php:90
985
+ #: views/partials/csPluginSettings.php:109
986
+ #: views/partials/csPluginSettings.php:125
987
+ msgid "Targeting &amp; Advertising"
988
+ msgstr "Targeting en advertenties"
989
+
990
+ #: includes/settings.php:412
991
+ msgid "Terms and condition"
992
+ msgstr "Algemene voorwaarden"
993
+
994
+ #: includes/settings.php:1170
995
+ msgid "Terms and Conditions"
996
+ msgstr "Algemene voorwaarden"
997
+
998
+ #: views/partials/bannerStyle.php:2
999
+ msgid "Theme"
1000
+ msgstr "Thema"
1001
+
1002
+ #: includes/ServiceRating.php:109
1003
+ #, php-format
1004
+ #| msgid ""
1005
+ #| "This accounts for 25% of your score. A privacy policy is a requirement "
1006
+ #| "under most privacy laws around the world. This document typically "
1007
+ #| "includes legally required disclosures about the type of personal data you "
1008
+ #| "process, why you need to process it, how the processing is done and the "
1009
+ #| "user’s rights under applicable law."
1010
+ msgid ""
1011
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1012
+ "under most privacy laws around the world. This document typically includes "
1013
+ "legally required disclosures about the type of personal data you process, "
1014
+ "why you need to process it, how the processing is done and the user’s rights "
1015
+ "under applicable law."
1016
+ msgstr ""
1017
+ "Dit is goed voor 25&#37; van je score. Een privacybeleid wordt door de "
1018
+ "meeste privacywetten wereldwijd verplicht gesteld. Dit document bevat "
1019
+ "meestal juridisch vereiste informatie over wat voor persoonsgegevens je "
1020
+ "verwerkt, waarom en hoe je die verwerkt, en welke rechten gebruikers in dat "
1021
+ "verband kunnen laten gelden."
1022
+
1023
+ #: includes/ServiceRating.php:104
1024
+ #, php-format
1025
+ #| msgid ""
1026
+ #| "This accounts for 25% of your score. If you’re based in Europe or have "
1027
+ #| "Europe-based users, you likely need to block cookies from running until "
1028
+ #| "you receive user consent. To do this, select “Automatically block scripts "
1029
+ #| "detected by the plugin”."
1030
+ msgid ""
1031
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1032
+ "Europe-based users, you likely need to block cookies from running until you "
1033
+ "receive user consent. To do this, select “Automatically block scripts "
1034
+ "detected by the plugin”."
1035
+ msgstr ""
1036
+ "Dit is goed voor 25&#37; van je score. Als je in Europa gevestigd bent of "
1037
+ "gebruikers in Europa bereikt, mag je waarschijnlijk geen cookies uitvoeren "
1038
+ "zolang een gebruiker daar geen toestemming voor heeft gegeven. Selecteer "
1039
+ "daarvoor de optie \"Door de plug-in gedetecteerde scripts automatisch "
1040
+ "blokkeren\"."
1041
+
1042
+ #: includes/ServiceRating.php:114
1043
+ #, php-format
1044
+ #| msgid ""
1045
+ #| "This accounts for 25% of your score. Terms and conditions help to protect "
1046
+ #| "you, the website owner, from potential liabilities and more. Furthermore, "
1047
+ #| "if you run an e-commerce site or app, having this document may be legally "
1048
+ #| "required as Terms typically contain legally mandatory disclosures. Terms "
1049
+ #| "are legally binding documents, and therefore it’s important to ensure "
1050
+ #| "that they actually fit your specific scenario."
1051
+ msgid ""
1052
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1053
+ "protect you, the website owner, from potential liabilities and more. "
1054
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1055
+ "be legally required as Terms typically contain legally mandatory disclosures."
1056
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1057
+ "that they actually fit your specific scenario."
1058
+ msgstr ""
1059
+ "Dit is goed voor 25&#37; van je score. Algemene voorwaarden kunnen jou als "
1060
+ "eigenaar van de website beschermen tegen onder andere mogelijke "
1061
+ "aansprakelijkheid. Als je een e-commerce website of app hebt, kan het hebben "
1062
+ "van algemene voorwaarden zelfs verplicht zijn, omdat je er bepaalde "
1063
+ "informatie in moet opnemen. Algemene voorwaarden zijn juridisch bindend. Je "
1064
+ "moet er dus voor zorgen dat ze passen bij jouw specifieke situatie."
1065
+
1066
+ #: includes/ServiceRating.php:99
1067
+ #, php-format
1068
+ #| msgid ""
1069
+ #| "This accounts for 25% of your score. Your cookie banner should inform "
1070
+ #| "your users about your use of cookies and similar tracking technologies, "
1071
+ #| "and their rights in this regard. You may need a banner if either the GDPR,"
1072
+ #| " CCPA or ePrivacy apply to you."
1073
+ msgid ""
1074
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1075
+ "your users about your use of cookies and similar tracking technologies, and "
1076
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1077
+ "or ePrivacy apply to you."
1078
+ msgstr ""
1079
+ "Dit is goed voor 25&#37; van je score. In je cookiebanner moet je informatie "
1080
+ "geven over hoe je cookies en andere tracking-technologieën gebruikt, en over "
1081
+ "welke rechten gebruikers in dit verband hebben. Je hebt een banner nodig als "
1082
+ "de GDPR, CCPA of ePrivacy-wetgeving voor jou van toepassing zijn."
1083
+
1084
+ #: views/partials/frontpage_main_box.php:26
1085
+ msgid "This is what you may need to be compliant"
1086
+ msgstr "Dit kan vereist zijn voor compliance"
1087
+
1088
+ #: views/partials/auto_detect_forms.php:29
1089
+ msgid ""
1090
+ "This section lists the forms available for field mapping. The plugin "
1091
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1092
+ "Checkout and WP Forms."
1093
+ msgstr ""
1094
+ "In dit onderdeel vind je alle formulieren die je kunt gebruiken voor "
1095
+ "veldtoewijzing. De plug-in ondersteunt en detecteert: WordPress Comment, "
1096
+ "Contact Form 7, WooCommerce Checkout en WP Forms."
1097
+
1098
+ #: includes/widget/IubendaLegalWidget.php:176
1099
+ msgid "Title:"
1100
+ msgstr "Titel:"
1101
+
1102
+ #: includes/settings.php:905
1103
+ #, php-format
1104
+ msgid ""
1105
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1106
+ "your account</span>. Check your mailbox now and validate your email address, "
1107
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1108
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1109
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1110
+ "notification-alert link-underline\" data-dismiss-"
1111
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1112
+ msgstr ""
1113
+ "<span class=\"text-bold\">Verifieer je account</span> om regelmatige scans "
1114
+ "en volledige ondersteuning te verzekeren. Kijk in je inbox en bevestig je e-"
1115
+ "mailadres, of controleer <a href=\"%s\" target=\"_blank\" class=\"link-"
1116
+ "underline\">je account</a> op iubenda.com. Heb je dat al gedaan? Dan kun je "
1117
+ "<a href='javascript:void(0)' class=\"notice-dismiss-by-text link-underline\" "
1118
+ "data-dismiss-key=\"iub_user_needs_to_verify_his_account\">deze melding "
1119
+ "negeren</a>."
1120
+
1121
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1122
+ msgid "Top menu"
1123
+ msgstr "Hoofdmenu"
1124
+
1125
+ #: views/partials/modals/modal_no_website_found.php:10
1126
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1127
+ msgid "Try again"
1128
+ msgstr "Opnieuw proberen"
1129
+
1130
+ #: includes/settings.php:1154 includes/settings.php:1174
1131
+ msgid "Version"
1132
+ msgstr "Versie"
1133
+
1134
+ #: views/partials/header_scanned.php:4
1135
+ msgid "We have analyzed your website in background and this is the result."
1136
+ msgstr ""
1137
+ "We hebben je website op de achtergrond geanalyseerd. Dit is het resultaat."
1138
+
1139
+ #: views/partials/buttonPosition.php:28
1140
+ #: views/partials/modals/modal_almost_there.php:62
1141
+ #: views/tc-configuration.php:83
1142
+ #, php-format
1143
+ #| msgid ""
1144
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1145
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1146
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1147
+ msgid ""
1148
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1149
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1150
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1151
+ msgstr ""
1152
+ "Er kon geen widget met juridische informatie aan de voettekst worden "
1153
+ "toegevoegd omdat je thema dat niet toestaat. Je kunt de widget <a "
1154
+ "href=\"%s\" target=\"_blank\">hier</a> manueel plaatsen."
1155
+
1156
+ #: includes/settings.php:931
1157
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1158
+ msgstr "Jammer. Wil je ons wat feedback geven?"
1159
+
1160
+ #: views/partials/welcomeScreenHeader.php:2
1161
+ msgid "Welcome to iubenda!"
1162
+ msgstr "Welkom bij iubenda!"
1163
+
1164
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1165
+ #: views/partials/modals/modal_almost_there.php:42
1166
+ msgid "Where can I find this code?"
1167
+ msgstr "Waar vind ik deze code?"
1168
+
1169
+ #: includes/settings.php:924
1170
+ msgid ""
1171
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1172
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1173
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1174
+ "out."
1175
+ msgstr ""
1176
+ "Dank je! We hebben er hard aan gewerkt om deze plug-in zo nuttig mogelijk te "
1177
+ "maken, dus we zijn blij dat er iets aan hebt. Wil je ons meteen ook 5 "
1178
+ "sterren geven? Dat helpt ons echt om de plug-in onder de aandacht te brengen."
1179
+
1180
+ #: views/partials/csSimplifiedConfiguration.php:43
1181
+ msgid "Worldwide"
1182
+ msgstr "Wereldwijd"
1183
+
1184
+ #: includes/settings.php:919
1185
+ msgid "Yes"
1186
+ msgstr "Ja"
1187
+
1188
+ #: includes/settings.php:389
1189
+ msgid "You don't have permission to access this page."
1190
+ msgstr ""
1191
+ "Je beschikt niet over de nodige toestemmingen om deze pagina te bekijken."
1192
+
1193
+ #: views/partials/csSimplifiedConfiguration.php:92
1194
+ msgid "You should activate this feature if you show ads on your website"
1195
+ msgstr ""
1196
+ "Als je advertenties op je website hebt staan, moet je moet deze functie "
1197
+ "activeren"
1198
+
1199
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1200
+ msgid "Your embed code"
1201
+ msgstr "Je insluitcode"
1202
+
1203
+ #: views/cons-configuration.php:29
1204
+ msgid "Your iubenda Javascript library public API key"
1205
+ msgstr "Je iubenda publieke API-sleutel voor de JavaScript-bibliotheek"
1206
+
1207
+ #: views/partials/modals/modal_pp_created.php:5
1208
+ msgid "Your privacy policy has been created!"
1209
+ msgstr "Je privacybeleid is klaar!"
1210
+
1211
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1212
+ #: views/partials/siteInfo.php:20
1213
+ msgid "Your rating"
1214
+ msgstr "Jouw score"
1215
+
1216
+ #: includes/QuickGeneratorService.php:111
1217
+ msgid ""
1218
+ "Your website has been created and your legal documents have been generated. "
1219
+ "Setup your cookie banner and privacy policy button to complete the "
1220
+ "integration."
1221
+ msgstr ""
1222
+ "Je website is gemaakt en je juridische documenten zijn gegenereerd. Stel je "
1223
+ "cookiebanner en je knop voor je privacybeleid in om de integratie te "
1224
+ "voltooien."
languages/iubenda-pt_BR.mo ADDED
Binary file
languages/iubenda-pt_BR.po ADDED
@@ -0,0 +1,1201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: \n"
4
+ "POT-Creation-Date: 2022-06-22 14:50+0200\n"
5
+ "PO-Revision-Date: 2022-08-05 18:52+0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Portuguese (Brazil)\n"
8
+ "Language: pt_BR\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-KeywordsList: _e;__\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+ "Report-Msgid-Bugs-To: \n"
18
+ "X-Loco-Version: 2.6.2; wp-6.0.1"
19
+
20
+ #: views/partials/modals/modal_almost_there.php:25
21
+ msgid "(required)"
22
+ msgstr "(Obrigatório)"
23
+
24
+ #: views/partials/buttonPosition.php:74
25
+ msgid ""
26
+ "A shortcode is a tiny bit of code that allows embedding interactive elements "
27
+ "or creating complex page layouts with a minimal effort.<br>Just copy and "
28
+ "paste the shortcode where you want the button to appear."
29
+ msgstr ""
30
+ "Um shortcode é um pequeno código que permite incorporar elementos "
31
+ "interativos ou criar layouts de página complexos sem esforço.<br>Basta "
32
+ "copiar e colar o shortcode onde você deseja que o botão apareça."
33
+
34
+ #: views/cons-configuration.php:17
35
+ msgid "Activate & Configure Consent Solution by"
36
+ msgstr "Ativar e configurar a Consent Solution"
37
+
38
+ #: views/cons-configuration.php:14
39
+ msgid ""
40
+ "Activate <strong>Consent Solution</strong> on our website in your iubenda "
41
+ "dashboard and paste here the <strong>API key</strong> to integrate it on "
42
+ "your website."
43
+ msgstr ""
44
+ "Ative a <strong>Consent Solution</strong> no nosso site pelo seu dashboard "
45
+ "da iubenda e cole aqui a <strong>chave API</strong> para integrá-la em seu "
46
+ "site."
47
+
48
+ #: views/integrate-setup.php:21
49
+ msgid "Add a cookie banner"
50
+ msgstr "Adicionar um banner de cookies"
51
+
52
+ #: views/cons-configuration.php:44
53
+ msgid "Add forms"
54
+ msgstr "Adicionar formulários"
55
+
56
+ #: views/cons-single-form.php:268
57
+ msgid "Add New Document"
58
+ msgstr "Adicionar Novo Documento"
59
+
60
+ #: views/cons-single-form.php:216
61
+ msgid "Add New Exclude"
62
+ msgstr "Adicionar nova exclusão"
63
+
64
+ #: views/partials/csGeneralSettings.php:247
65
+ #: views/partials/csPluginSettings.php:133
66
+ msgid "Add New iframe"
67
+ msgstr "Adicionar Novo iframe"
68
+
69
+ #: views/cons-single-form.php:155
70
+ msgid "Add New Preference"
71
+ msgstr "Adicionar Nova Preferência"
72
+
73
+ #: views/partials/csGeneralSettings.php:212
74
+ #: views/partials/csPluginSettings.php:98
75
+ msgid "Add New Script"
76
+ msgstr "Adicionar Novo Script"
77
+
78
+ #: views/integrate-setup.php:140
79
+ msgid "Add the privacy policy button"
80
+ msgstr "Adicione o botão da política de privacidade"
81
+
82
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
83
+ msgid "Add to the footer automatically"
84
+ msgstr "Adicionar automaticamente ao rodapé"
85
+
86
+ #: includes/forms-list-table.php:279
87
+ msgid "All form sources"
88
+ msgstr "Todos os tipos de formulários"
89
+
90
+ #: views/cons-single-form.php:250
91
+ msgid "Alternatively, you may add your own custom document identifiers."
92
+ msgstr ""
93
+ "Em alternativa, você pode adicionar os seus próprios identificadores de "
94
+ "documentos personalizados."
95
+
96
+ #: includes/amp.php:281
97
+ msgid "AMP Cookie Consent"
98
+ msgstr "Consentimento de Cookies AMP"
99
+
100
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
101
+ #: views/partials/csGeneralSettings.php:203
102
+ #: views/partials/csGeneralSettings.php:222
103
+ #: views/partials/csGeneralSettings.php:238
104
+ #: views/partials/csPluginSettings.php:73
105
+ #: views/partials/csPluginSettings.php:89
106
+ #: views/partials/csPluginSettings.php:108
107
+ #: views/partials/csPluginSettings.php:124
108
+ msgid "Analytics"
109
+ msgstr "Analytics"
110
+
111
+ #: views/partials/frontpage_main_box.php:22
112
+ msgid "Analyzing your website"
113
+ msgstr "Analisando o seu site"
114
+
115
+ #: views/cons-configuration.php:53
116
+ msgid "Auto-detect forms"
117
+ msgstr "Auto-detectar formulários"
118
+
119
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
120
+ msgid "Auto-generated configuration file"
121
+ msgstr "Arquivo de configuração gerado automaticamente"
122
+
123
+ #: views/cons-single-form.php:71
124
+ msgid "Autogenerated"
125
+ msgstr "Geração automática"
126
+
127
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
128
+ #: views/partials/csPluginSettings.php:4
129
+ msgid "Automatically block scripts detected by the plugin"
130
+ msgstr "Bloqueie automaticamente scripts detectados pelo plugin"
131
+
132
+ #: views/partials/bannerPosition.php:41
133
+ msgid "Background-overlay"
134
+ msgstr "Sobreposição de fundo"
135
+
136
+ #: views/partials/csSimplifiedConfiguration.php:68
137
+ msgid "Banner buttons"
138
+ msgstr "Botões do banner"
139
+
140
+ #: includes/settings.php:107
141
+ msgid "Basic interactions & functionalities"
142
+ msgstr "Interações e funcionalidades básicas"
143
+
144
+ #: views/partials/csGeneralSettings.php:185
145
+ #: views/partials/csGeneralSettings.php:201
146
+ #: views/partials/csGeneralSettings.php:220
147
+ #: views/partials/csGeneralSettings.php:236
148
+ #: views/partials/csPluginSettings.php:71
149
+ #: views/partials/csPluginSettings.php:87
150
+ #: views/partials/csPluginSettings.php:106
151
+ #: views/partials/csPluginSettings.php:122
152
+ msgid "Basic interactions &amp; functionalities"
153
+ msgstr "Interações básicas &amp; funcionalidades"
154
+
155
+ #: views/partials/csGeneralSettings.php:173
156
+ msgid "Blocked domains"
157
+ msgstr "Domínios bloqueados"
158
+
159
+ #: views/partials/csSimplifiedConfiguration.php:22
160
+ msgid "Both"
161
+ msgstr "Ambos"
162
+
163
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
164
+ msgid "Button position"
165
+ msgstr "Posição do botão"
166
+
167
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
168
+ msgid "Button style"
169
+ msgstr "Estilo do botão"
170
+
171
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
172
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
173
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
174
+ msgid "Cancel"
175
+ msgstr "Cancelar"
176
+
177
+ #: views/partials/csSimplifiedConfiguration.php:18
178
+ msgid "CCPA Only"
179
+ msgstr "Apenas CCPA"
180
+
181
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
182
+ #: views/tc-configuration.php:16
183
+ msgid "clicking here"
184
+ msgstr "clicando aqui"
185
+
186
+ #: views/partials/csGeneralSettings.php:2
187
+ msgid "Configuration"
188
+ msgstr "Configuração"
189
+
190
+ #: views/partials/product-card.php:48
191
+ msgid "Configure"
192
+ msgstr "Configurar"
193
+
194
+ #: views/partials/csManualConfiguration.php:5
195
+ msgid "Configure cookie banner by"
196
+ msgstr "Configurar banner de cookies"
197
+
198
+ #: views/tc-configuration.php:15
199
+ msgid "Configure terms and conditions by"
200
+ msgstr "Configure os termos e condições"
201
+
202
+ #: views/partials/csManualConfiguration.php:2
203
+ msgid ""
204
+ "Configure your cookie banner on our website and paste here the embed code to "
205
+ "integrate it to your website."
206
+ msgstr ""
207
+ "Configure o seu banner de cookies no nosso site e cole aqui o código de "
208
+ "incorporação para integrá-lo ao seu site."
209
+
210
+ #: views/tc-configuration.php:12
211
+ msgid ""
212
+ "Configure your terms and conditions on our website and paste here the embed "
213
+ "code to integrate the button on your website."
214
+ msgstr ""
215
+ "Configure os seus termos e condições no nosso site e cole aqui o código de "
216
+ "incorporação para integrar o botão em seu site."
217
+
218
+ #: views/cons-configuration.php:31
219
+ msgid "Confirm API"
220
+ msgstr "Confirmar API"
221
+
222
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
223
+ #: includes/settings.php:1182
224
+ msgid "Consent Solution"
225
+ msgstr "Consent Solution"
226
+
227
+ #: views/partials/modals/modal_almost_there.php:37
228
+ msgid "Consent Solution API key"
229
+ msgstr "Chave API da Consent Solution"
230
+
231
+ #: views/partials/modals/modal_select_language.php:54
232
+ msgid "Continue"
233
+ msgstr "Continuar"
234
+
235
+ #: includes/settings.php:91 includes/settings.php:424
236
+ #: includes/settings.php:1162
237
+ msgid "Cookie Solution"
238
+ msgstr "Cookie Solution"
239
+
240
+ #: includes/QuickGeneratorService.php:625
241
+ #, php-format
242
+ msgid ""
243
+ "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>"
244
+ ". For instructions on how to fix this, please read <a class=\"link-"
245
+ "underline\" target=\"_blank\" href=\"%s\">our guide</a>."
246
+ msgstr ""
247
+ "Atualmente, você não tem permissão de escrita para <i class=\"text-bold\">"
248
+ "%s</i>. Para saber como resolver, leia o <a class=\"link-underline\" "
249
+ "target=\\\"blank\\\" href=\\\"%s\\\">nosso guia</a>."
250
+
251
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
252
+ msgid "Custom configuration file"
253
+ msgstr "Arquivo de configuração personalizado"
254
+
255
+ #: views/partials/csGeneralSettings.php:177
256
+ #: views/partials/csPluginSettings.php:63
257
+ msgid "Custom iframes"
258
+ msgstr "Iframes personalizados"
259
+
260
+ #: views/partials/csGeneralSettings.php:176
261
+ #: views/partials/csPluginSettings.php:62
262
+ msgid "Custom scripts"
263
+ msgstr "Scripts personalizados"
264
+
265
+ #: views/partials/csPluginSettings.php:59
266
+ msgid "Custom settings"
267
+ msgstr "Configurações personalizadas"
268
+
269
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
270
+ #: views/tc-configuration.php:50
271
+ msgid "Dark"
272
+ msgstr "Versão em preto"
273
+
274
+ #: includes/forms-list-table.php:90
275
+ msgid "Date"
276
+ msgstr "Data"
277
+
278
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
279
+ #: views/partials/csGeneralSettings.php:115
280
+ msgid "Default language"
281
+ msgstr "Idioma padrão"
282
+
283
+ #: includes/forms-list-table.php:160
284
+ msgid "Delete"
285
+ msgstr "Deletar"
286
+
287
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
288
+ msgid "Delete all plugin data upon deactivation"
289
+ msgstr "Excluir todos os dados do plugin após a desativação"
290
+
291
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
292
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
293
+ msgstr "Não execute o plugin dentro do feed RSS (recomendado)"
294
+
295
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
296
+ msgid "Do not run the plugin on POST requests (recommended)"
297
+ msgstr "Não execute o plugin em solicitações POST (recomendado)"
298
+
299
+ #: views/partials/footer.php:5
300
+ msgid "Documentation"
301
+ msgstr "Documentação"
302
+
303
+ #: includes/forms-list-table.php:159
304
+ msgid "Edit"
305
+ msgstr "Editar"
306
+
307
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
308
+ msgid "Enable Google AMP support"
309
+ msgstr "Ativar o suporte do Google AMP"
310
+
311
+ #: views/partials/csSimplifiedConfiguration.php:88
312
+ msgid "Enable IAB Transparency and Consent Framework"
313
+ msgstr "Habilitar IAB Transparency & Consent Framework"
314
+
315
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
316
+ #: views/partials/csPluginSettings.php:24
317
+ msgid ""
318
+ "Enable this option to improve performance <strong>only</strong> if your site "
319
+ "does <strong>not</strong> use a cache system or a cache plugin and if you're "
320
+ "<strong>not</strong> collecting per-category consent. If you're in doubt, "
321
+ "keep this setting disabled"
322
+ msgstr ""
323
+ "Ative esta opção para melhorar o desempenho <strong>somente</strong> se seu "
324
+ "site <strong>não</strong> usar um sistema de cache ou um plugin de cache e "
325
+ "se você <strong>não</strong> coletar dados consentimento da categoria. Caso "
326
+ "esteja em dúvida, mantenha esta configuração desativada"
327
+
328
+ #: includes/settings.php:917
329
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
330
+ msgstr "Está gostando do plugin de Cookie & Consent Solution da iubenda?"
331
+
332
+ #: views/partials/csGeneralSettings.php:216
333
+ #: views/partials/csGeneralSettings.php:232
334
+ #: views/partials/csPluginSettings.php:102
335
+ #: views/partials/csPluginSettings.php:118
336
+ msgid "Enter custom iframe"
337
+ msgstr "Insira o iframe personalizado"
338
+
339
+ #: views/partials/csGeneralSettings.php:181
340
+ #: views/partials/csGeneralSettings.php:197
341
+ #: views/partials/csPluginSettings.php:67
342
+ #: views/partials/csPluginSettings.php:83
343
+ msgid "Enter custom script"
344
+ msgstr "Insira o script personalizado"
345
+
346
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
347
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
348
+ #: views/cons-single-form.php:260
349
+ msgid "Enter field name"
350
+ msgstr "Insira nome do campo"
351
+
352
+ #: views/partials/csSimplifiedConfiguration.php:59
353
+ msgid "EU Only"
354
+ msgstr "Apenas UE"
355
+
356
+ #: views/cons-single-form.php:164
357
+ msgid "Exclude field"
358
+ msgstr "Excluir campo"
359
+
360
+ #: views/cons-single-form.php:159
361
+ msgid "Exclude fields"
362
+ msgstr "Excluir campos"
363
+
364
+ #: views/cons-single-form.php:160
365
+ msgid ""
366
+ "Exclude fields allow you to create a list of fields that you would like to "
367
+ "exclude from your Consent Solution recorded proofs (for e.g. password or "
368
+ "other fields not related to the consent)."
369
+ msgstr ""
370
+ "Os campos de exclusão permitem que você crie uma lista de campos que você "
371
+ "gostaria de excluir das suas provas registradas da Consent Solution (ex: "
372
+ "senha ou outros campos não relacionados ao consentimento)."
373
+
374
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
375
+ #: views/partials/csGeneralSettings.php:202
376
+ #: views/partials/csGeneralSettings.php:221
377
+ #: views/partials/csGeneralSettings.php:237
378
+ #: views/partials/csPluginSettings.php:72
379
+ #: views/partials/csPluginSettings.php:88
380
+ #: views/partials/csPluginSettings.php:107
381
+ #: views/partials/csPluginSettings.php:123
382
+ msgid "Experience enhancement"
383
+ msgstr "Melhoria da experiência"
384
+
385
+ #: views/partials/csSimplifiedConfiguration.php:72
386
+ msgid "Explicit Accept and Customize buttons"
387
+ msgstr "Botões Aceitar e Personalizar explícitos"
388
+
389
+ #: views/partials/csSimplifiedConfiguration.php:77
390
+ msgid "Explicit Reject button"
391
+ msgstr "Botão de Recusar explícito"
392
+
393
+ #: views/cons-single-form.php:12
394
+ msgid "Field Mapping"
395
+ msgstr "Mapeamento de Campo"
396
+
397
+ #: includes/forms-list-table.php:89
398
+ msgid "Fields"
399
+ msgstr "Campos"
400
+
401
+ #: includes/forms-list-table.php:260
402
+ msgid "Filter"
403
+ msgstr "Filtrar"
404
+
405
+ #: includes/forms-list-table.php:277
406
+ msgid "Filter by source"
407
+ msgstr "Filtrar por tipo de formulário"
408
+
409
+ #: includes/forms.php:579 includes/forms.php:593
410
+ msgid "First name"
411
+ msgstr "Primeiro nome"
412
+
413
+ #: views/partials/modals/modal_sync.php:4
414
+ msgid ""
415
+ "First of all, tell us if you already use our products for this website or if "
416
+ "you want to start from scratch"
417
+ msgstr ""
418
+ "Antes de tudo, nos diga se você já usa os nossos produtos para este site ou "
419
+ "se deseja começar do zero"
420
+
421
+ #: includes/forms.php:153
422
+ msgid "Form"
423
+ msgstr "Formulário"
424
+
425
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
426
+ msgid "Form field"
427
+ msgstr "Campo do Formulário"
428
+
429
+ #: includes/forms-list-table.php:87
430
+ msgid "Form ID"
431
+ msgstr "ID do Formulário"
432
+
433
+ #: includes/settings.php:701
434
+ msgid "Form saving failed. Please fill the Subject fields."
435
+ msgstr "Falha ao salvar o formulário. Preencha o campo Titular."
436
+
437
+ #: includes/forms-list-table.php:88
438
+ msgid "Form Source"
439
+ msgstr "Fonte do Formulário"
440
+
441
+ #: includes/forms-list-table.php:86
442
+ msgid "Form Title"
443
+ msgstr "Título do Formulário"
444
+
445
+ #: includes/forms.php:152
446
+ msgid "Forms"
447
+ msgstr "Formulários"
448
+
449
+ #: views/partials/modals/modal_pp_created.php:7
450
+ msgid ""
451
+ "From here you can customize your privacy policy by adding the services you "
452
+ "use within your website or you can customize the style of the button that "
453
+ "displays your privacy policy."
454
+ msgstr ""
455
+ "A partir daqui, você pode personalizar sua política de privacidade "
456
+ "adicionando os serviços que usa no seu site ou pode personalizar o estilo do "
457
+ "botão que exibe a sua política de privacidade."
458
+
459
+ #: views/partials/csSimplifiedConfiguration.php:14
460
+ msgid "GDPR Only"
461
+ msgstr "Apenas GDPR"
462
+
463
+ #: views/partials/modals/modal_pp_created.php:9
464
+ msgid "Got it"
465
+ msgstr "Entendi"
466
+
467
+ #: views/frontpage.php:9
468
+ msgid "Help me get compliant!"
469
+ msgstr "Me ajude a ficar em conformidade!"
470
+
471
+ #: views/partials/modals/modal_rating.php:11
472
+ msgid "Here’s how we calculate your rating."
473
+ msgstr "Veja como calculamos a sua avaliação."
474
+
475
+ #: views/partials/siteInfo.php:21
476
+ msgid "How is it calculated?"
477
+ msgstr "Como é calculado?"
478
+
479
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
480
+ msgid "HTML"
481
+ msgstr "HTML"
482
+
483
+ #: views/partials/modals/modal_no_website_found.php:11
484
+ #: views/partials/modals/modal_sync.php:8
485
+ msgid "I want to start from scratch"
486
+ msgstr "Quero começar do zero"
487
+
488
+ #: views/cons-single-form.php:225
489
+ msgid "Identifier"
490
+ msgstr "Identificador"
491
+
492
+ #: views/cons-single-form.php:222
493
+ msgid ""
494
+ "In general, it's important that you declare which legal documents are being "
495
+ "agreed upon when each consent is collected. However, if you use iubenda for "
496
+ "your legal documents, it is *required* that you identify the documents by "
497
+ "selecting them here."
498
+ msgstr ""
499
+ "Em geral, é importante que você declare quais documentos legais estão sendo "
500
+ "acordados quando cada consentimento é coletado. No entanto, se você usar a "
501
+ "iubenda para os seus documentos legais, é *obrigatório* identificar os "
502
+ "documentos selecionando-os aqui."
503
+
504
+ #: views/partials/integrateFooter.php:4
505
+ msgid "Integrate"
506
+ msgstr "Integrar"
507
+
508
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
509
+ msgid "Integrate manually"
510
+ msgstr "Integrar manualmente"
511
+
512
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
513
+ msgid "Integration"
514
+ msgstr "Integração"
515
+
516
+ #: views/partials/modals/modal_no_website_found.php:8
517
+ msgid ""
518
+ "It seems that it is not possible to access your data with the code you "
519
+ "pasted, do you want to try again or do you prefer to start configuring your "
520
+ "website from scratch?"
521
+ msgstr ""
522
+ "Parece que não é possível acessar os seus dados com o código que você colou, "
523
+ "deseja tentar novamente ou prefere começar a configurar o seu site do zero?"
524
+
525
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
526
+ msgid ""
527
+ "It seems that it is not possible to access your data with the code you "
528
+ "pasted, do you want to try again."
529
+ msgstr ""
530
+ "Parece que não é possível acessar os seus dados com o código que você colou, "
531
+ "deseja tentar novamente?"
532
+
533
+ #: views/products-page.php:15
534
+ msgid ""
535
+ "It seems that you have not activated any of our services, we recommend you "
536
+ "to activate them and increase your level of compliance and avoid risking "
537
+ "fines."
538
+ msgstr ""
539
+ "Parece que você não ativou nenhum dos nossos serviços. Recomendamos que você "
540
+ "os ative para aumentar o seu nível de conformidade com as leis e evitar o "
541
+ "risco de receber multas."
542
+
543
+ #: includes/widget/IubendaLegalWidget.php:18
544
+ msgid "Iubenda legal"
545
+ msgstr "Iubenda legal"
546
+
547
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
548
+ msgid "Iubenda legal block"
549
+ msgstr "Iubenda legal block"
550
+
551
+ #: includes/widget/IubendaLegalWidget.php:21
552
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
553
+ msgstr ""
554
+ "Widget legal da iubenda para Política de Privacidade e Termos e Condições"
555
+
556
+ #: views/partials/modals/modal_sync.php:6
557
+ msgid "I’ve already made the set up on iubenda.com"
558
+ msgstr "Eu já fiz a configuração em iubenda.com"
559
+
560
+ #: includes/forms.php:585 includes/forms.php:605
561
+ msgid "Last name"
562
+ msgstr "Sobrenome"
563
+
564
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
565
+ msgid "Learn how to fix it"
566
+ msgstr "Saiba como consertar"
567
+
568
+ #: views/partials/csSimplifiedConfiguration.php:88
569
+ #: views/partials/modals/modal_rating.php:22
570
+ msgid "Learn More"
571
+ msgstr "Saber mais"
572
+
573
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
574
+ #: views/partials/csPluginSettings.php:22
575
+ msgid ""
576
+ "Leave scripts untouched on the page if the user has already given consent"
577
+ msgstr ""
578
+ "Deixe os scripts intocados na página se o usuário já tiver dado consentimento"
579
+
580
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
581
+ #: includes/widget/IubendaLegalWidget.php:167
582
+ msgid "Legal"
583
+ msgstr "Jurídico"
584
+
585
+ #: views/cons-single-form.php:221
586
+ msgid "Legal documents"
587
+ msgstr "Documentos legais"
588
+
589
+ #: views/partials/csSimplifiedConfiguration.php:9
590
+ msgid "Legislation"
591
+ msgstr "Legislação"
592
+
593
+ #: includes/settings.php:1116 includes/settings.php:1138
594
+ msgid "legislation"
595
+ msgstr "legislação"
596
+
597
+ #: views/frontpage.php:8
598
+ msgid "Let's configure your website for compliance."
599
+ msgstr "Vamos configurar o seu site para conformidade."
600
+
601
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
602
+ #: views/tc-configuration.php:41
603
+ msgid "Light"
604
+ msgstr "Versão em branco"
605
+
606
+ #: views/partials/csGeneralSettings.php:35
607
+ #: views/partials/csGeneralSettings.php:42
608
+ msgid "Manual embed"
609
+ msgstr "Incorporação manual"
610
+
611
+ #: views/cons-single-form.php:44
612
+ msgid "Map fields"
613
+ msgstr "Campos do Mapa"
614
+
615
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
616
+ msgid "Menu position"
617
+ msgstr "Posição do menu"
618
+
619
+ #: includes/forms.php:599
620
+ msgid "Middle name"
621
+ msgstr "Segundo nome"
622
+
623
+ #: views/partials/modals/modal_almost_there.php:5
624
+ msgid "Nice! We are almost there."
625
+ msgstr "Muito bom! Estamos quase lá."
626
+
627
+ #: includes/settings.php:920
628
+ msgid "No"
629
+ msgstr "Não"
630
+
631
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
632
+ msgid ""
633
+ "No file available. Save changes to generate iubenda AMP configuration file."
634
+ msgstr ""
635
+ "Nenhum arquivo disponível. Salve as alterações para gerar o arquivo de "
636
+ "configuração iubenda AMP."
637
+
638
+ #: includes/forms-list-table.php:347
639
+ msgid "No forms found."
640
+ msgstr "Nenhum formulário encontrado."
641
+
642
+ #: includes/settings.php:927 includes/settings.php:934
643
+ msgid "No thanks"
644
+ msgstr "Não obrigado(a)"
645
+
646
+ #: views/cons-single-form.php:71
647
+ msgid "None"
648
+ msgstr "Nenhum"
649
+
650
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
651
+ #: views/partials/csGeneralSettings.php:199
652
+ #: views/partials/csGeneralSettings.php:218
653
+ #: views/partials/csGeneralSettings.php:234
654
+ #: views/partials/csPluginSettings.php:69
655
+ #: views/partials/csPluginSettings.php:85
656
+ #: views/partials/csPluginSettings.php:104
657
+ #: views/partials/csPluginSettings.php:120
658
+ msgid "Not set"
659
+ msgstr "Não configurado"
660
+
661
+ #: views/partials/modals/modal_select_language.php:4
662
+ msgid "Now, select your website language"
663
+ msgstr "Agora, selecione o idioma do seu site"
664
+
665
+ #: includes/settings.php:933
666
+ msgid "Ok sure!"
667
+ msgstr "Ok, claro!"
668
+
669
+ #: includes/ServiceRating.php:103
670
+ msgid "Only track users that give consent"
671
+ msgstr "Rastrear somente usuários que dão consentimento"
672
+
673
+ #: views/partials/modals/modal_no_website_found.php:6
674
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
675
+ msgid "Ooops! <br> No website found with this embed code."
676
+ msgstr "Ops! <br> Nenhum site encontrado com este código de incorporação."
677
+
678
+ #: views/partials/modals/modal_sync.php:7
679
+ msgid "or"
680
+ msgstr "ou"
681
+
682
+ #: views/partials/csSimplifiedConfiguration.php:83
683
+ msgid "Other options"
684
+ msgstr "Outras opções"
685
+
686
+ #: views/partials/welcomeScreenHeader.php:3
687
+ msgid "Our plugin will help you to make your website compliant in minutes."
688
+ msgstr "Nosso plugin irá ajudá-lo a tornar o seu site compatível em minutos."
689
+
690
+ #: includes/QuickGeneratorService.php:137
691
+ msgid ""
692
+ "Our products has been integrated successfully, now customize all products to "
693
+ "increase the compliance rating and make your website fully compliant."
694
+ msgstr ""
695
+ "Os nossos produtos foram integrados com sucesso, agora personalize todos os "
696
+ "produtos para aumentar a classificação de conformidade e tornar o seu site "
697
+ "compatível por completo."
698
+
699
+ #: views/partials/modals/modal_almost_there.php:39
700
+ msgid "Paste your API key here"
701
+ msgstr "Cole a sua chave API aqui"
702
+
703
+ #: views/partials/csManualConfiguration.php:11
704
+ msgid "Paste your cookie solution embed code here"
705
+ msgstr "Cole o código de incorporação da Cookie Solution aqui"
706
+
707
+ #: views/partials/languagesTabs.php:21
708
+ msgid "Paste your embed code here"
709
+ msgstr "Cole o seu código de incorporação aqui"
710
+
711
+ #: views/cons-configuration.php:23
712
+ msgid "Paste your public API key here"
713
+ msgstr "Cole aqui a sua chave API pública"
714
+
715
+ #: views/tc-configuration.php:21
716
+ msgid "Paste your terms and conditions embed code here"
717
+ msgstr "Cole o código de incorporação dos termos e condições aqui"
718
+
719
+ #: includes/settings.php:628
720
+ #, php-format
721
+ msgid ""
722
+ "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" "
723
+ "target=\"_blank\">Discussion settings</a>."
724
+ msgstr ""
725
+ "Habilite a caixa de seleção de cookies de comentários nas <a href=\"%s\" "
726
+ "target=\"_blank\">configurações de Discussion</a>."
727
+
728
+ #: views/cons-single-form.php:234
729
+ msgid "Please select each legal document available on your site."
730
+ msgstr "Selecione cada documento legal disponível em seu site."
731
+
732
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
733
+ msgid "Plugin settings"
734
+ msgstr "Configurações do plugin"
735
+
736
+ #: includes/settings.php:1115 includes/settings.php:1137
737
+ #: includes/settings.php:1156 includes/settings.php:1176
738
+ #: views/partials/bannerPosition.php:20
739
+ msgid "Position"
740
+ msgstr "Posição"
741
+
742
+ #: views/cons-single-form.php:102
743
+ msgid "Preferences field"
744
+ msgstr "Campo de preferências"
745
+
746
+ #: views/cons-single-form.php:98
747
+ msgid "Preferences fields"
748
+ msgstr "Campos de preferências"
749
+
750
+ #: views/cons-single-form.php:99
751
+ msgid ""
752
+ "Preferences fields allow you to store a record of the various opt-ins points "
753
+ "at which the user has agreed or given consent, such as fields for agreeing "
754
+ "to terms and conditions, newsletter, profiling, etc."
755
+ msgstr ""
756
+ "Os campos de preferências permitem que você armazene um registro dos vários "
757
+ "pontos de opt-ins nos quais o usuário concordou ou deu consentimento, como "
758
+ "campos para concordar com os termos e condições, boletim informativo, "
759
+ "perfilamento, etc."
760
+
761
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
762
+ #: views/partials/csPluginSettings.php:10
763
+ msgid "Primary"
764
+ msgstr "Primário"
765
+
766
+ #: includes/settings.php:418 includes/settings.php:1150
767
+ msgid "Privacy and Cookie Policy"
768
+ msgstr "Política de Privacidade e Cookies"
769
+
770
+ #: includes/PrivacyPolicyGenerator.php:23
771
+ msgid "Privacy Policy"
772
+ msgstr "Política de Privacidade"
773
+
774
+ #: views/partials/breadcrumb.php:2
775
+ msgid "Products"
776
+ msgstr "Produtos"
777
+
778
+ #: views/partials/csGeneralSettings.php:246
779
+ #: views/partials/csPluginSettings.php:132
780
+ msgid ""
781
+ "Provide a list of domains for any custom iframes you'd like to block, and "
782
+ "assign their purposes. To make sure they are blocked correctly, please add "
783
+ "domains in the same format as 'example.com', without any protocols e.g. "
784
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
785
+ "domains or subdomains."
786
+ msgstr ""
787
+ "Forneça uma lista de domínios para todos os iframes personalizados que você "
788
+ "deseja bloquear e atribua suas finalidades. Para garantir que eles sejam "
789
+ "bloqueados corretamente, adicione domínios no mesmo formato de ‘example.com’,"
790
+ " sem nenhum protocolo, por exemplo, ‘http://' ou ‘https://‘. Você também "
791
+ "pode usar wildcards (*) para incluir domínios ou subdomínios."
792
+
793
+ #: views/partials/csGeneralSettings.php:211
794
+ #: views/partials/csPluginSettings.php:97
795
+ msgid ""
796
+ "Provide a list of domains for any custom scripts you'd like to block, and "
797
+ "assign their purposes. To make sure they are blocked correctly, please add "
798
+ "domains in the same format as 'example.com', without any protocols e.g. "
799
+ "'http://' or 'https://'. You may also use wildcards (*) to include parent "
800
+ "domains or subdomains."
801
+ msgstr ""
802
+ "Forneça uma lista de domínios para qualquer script personalizado que você "
803
+ "gostaria de bloquear e atribua suas finalidades. Para garantir que eles "
804
+ "sejam bloqueados corretamente, adicione domínios no mesmo formato de "
805
+ "‘example.com’, sem nenhum protocolo, por exemplo, ‘http://' ou ‘https://‘. "
806
+ "Você também pode usar wildcards (*) para incluir domínios ou subdomínios."
807
+
808
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
809
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
810
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
811
+ msgid "Remove"
812
+ msgstr "Remover"
813
+
814
+ #: views/partials/csSimplifiedConfiguration.php:29
815
+ msgid "Require consent from"
816
+ msgstr "Exigir consentimento"
817
+
818
+ #: views/partials/integrateFooter.php:3
819
+ msgid "Reset settings"
820
+ msgstr "Redefinir as configurações"
821
+
822
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
823
+ msgid ""
824
+ "Restrict the plugin to run only for requests that have \"Content-type: text "
825
+ "/ html\" (recommended)"
826
+ msgstr ""
827
+ "Restringir o plugin para ser executado apenas para solicitações que tenham "
828
+ "“Content-type: text / html” (recomendado)"
829
+
830
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
831
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
832
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
833
+ msgid "Save settings"
834
+ msgstr "Salvar configurações"
835
+
836
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
837
+ #: views/partials/csPluginSettings.php:14
838
+ msgid "Secondary"
839
+ msgstr "Secundário"
840
+
841
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
842
+ msgid ""
843
+ "Seeing the AMP cookie notice when testing from Google but not when visiting "
844
+ "your AMP pages directly?"
845
+ msgstr ""
846
+ "Está vendo o aviso de cookie AMP ao testar no Google, mas não ao visitar as "
847
+ "suas páginas AMP diretamente?"
848
+
849
+ #: includes/forms-list-table.php:376
850
+ msgid "Select All"
851
+ msgstr "Selecionar Tudo"
852
+
853
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
854
+ #: views/partials/csPluginSettings.php:17
855
+ msgid "Select Parsing Engine"
856
+ msgstr "Selecionar Mecanismo de Análise"
857
+
858
+ #: views/partials/modals/modal_almost_there.php:13
859
+ msgid "Select products you have already activated"
860
+ msgstr "Selecione os produtos que você já ativou"
861
+
862
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
863
+ msgid "Select the iubenda AMP configuration file location."
864
+ msgstr "Selecione o local do arquivo de configuração AMP iubenda."
865
+
866
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
867
+ msgid ""
868
+ "Select whether to display iubenda in a top admin menu or the Settings "
869
+ "submenu."
870
+ msgstr ""
871
+ "Selecione se deseja exibir iubenda em um menu superior de administração ou "
872
+ "no sub-menu Configurações."
873
+
874
+ #: views/partials/product-card.php:46
875
+ msgid "Service off"
876
+ msgstr "Serviço desativado"
877
+
878
+ #: views/partials/product-card.php:46
879
+ #| msgid "Service"
880
+ msgid "Service on"
881
+ msgstr "Serviço ativado"
882
+
883
+ #: includes/ServiceRating.php:98
884
+ msgid "Set up a cookie banner"
885
+ msgstr "Configure seu banner de cookies"
886
+
887
+ #: includes/ServiceRating.php:108
888
+ msgid "Set up a privacy policy"
889
+ msgstr "Configure uma política de privacidade"
890
+
891
+ #: includes/ServiceRating.php:113
892
+ msgid "Set up terms and conditions"
893
+ msgstr "Configure termos e condições"
894
+
895
+ #: includes/settings.php:749
896
+ msgid "Settings saved."
897
+ msgstr "Configurações salvas."
898
+
899
+ #: views/pp-configuration.php:22
900
+ msgid "Setup your privacy and cookie policy on iubenda.com"
901
+ msgstr "Configure a sua política de privacidade e cookies em iubenda.com"
902
+
903
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
904
+ msgid "Shortcode"
905
+ msgstr "Shortcode"
906
+
907
+ #: views/partials/csGeneralSettings.php:14
908
+ #: views/partials/csGeneralSettings.php:23
909
+ msgid "Simplified"
910
+ msgstr "Simplificado"
911
+
912
+ #: views/partials/modals/modal_almost_there.php:6
913
+ msgid ""
914
+ "Since you already activated some products for this website, we just ask you "
915
+ "to copy and paste the embedding code of the product you already have to "
916
+ "syncronize your iubenda acount with WP plugin."
917
+ msgstr ""
918
+ "Como você já ativou alguns produtos para este site, pedimos apenas que copie "
919
+ "e cole o código de incorporação do produto que você já possui para "
920
+ "sincronizar a sua conta iubenda com o plugin WP."
921
+
922
+ #: views/cons-single-form.php:48
923
+ msgid "Status"
924
+ msgstr "Status"
925
+
926
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
927
+ #: views/partials/csGeneralSettings.php:200
928
+ #: views/partials/csGeneralSettings.php:219
929
+ #: views/partials/csGeneralSettings.php:235
930
+ #: views/partials/csPluginSettings.php:70
931
+ #: views/partials/csPluginSettings.php:86
932
+ #: views/partials/csPluginSettings.php:105
933
+ #: views/partials/csPluginSettings.php:121
934
+ msgid "Strictly necessary"
935
+ msgstr "Estritamente necessário"
936
+
937
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
938
+ #: includes/settings.php:78 includes/settings.php:79
939
+ msgid "string"
940
+ msgstr "string"
941
+
942
+ #: includes/settings.php:1114 includes/settings.php:1136
943
+ #: includes/settings.php:1155 includes/settings.php:1175
944
+ msgid "Style"
945
+ msgstr "Estilo"
946
+
947
+ #: views/cons-single-form.php:65
948
+ msgid "Subject field"
949
+ msgstr "Campo do Titular"
950
+
951
+ #: views/cons-single-form.php:61
952
+ msgid "Subject fields"
953
+ msgstr "Campos dos Titulares"
954
+
955
+ #: views/cons-single-form.php:62
956
+ msgid ""
957
+ "Subject fields allow you to store a series of identifying values about your "
958
+ "individual subjects/users. Please map the subject field with the "
959
+ "corresponding form fields where applicable."
960
+ msgstr ""
961
+ "Os campos dos Titulares permitem que você armazene uma série de valores de "
962
+ "identificação sobre os seus titulares/usuários individuais. Mapeie o campo "
963
+ "titular com os campos de formulário correspondentes, quando aplicável."
964
+
965
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
966
+ msgid "Submenu"
967
+ msgstr "Sub-menu"
968
+
969
+ #: includes/settings.php:926
970
+ msgid "Sure!"
971
+ msgstr "Claro!"
972
+
973
+ #: views/partials/modals/modal_almost_there.php:75
974
+ msgid "Synchronize products"
975
+ msgstr "Sincronizar produtos"
976
+
977
+ #: includes/settings.php:110
978
+ msgid "Targeting & Advertising"
979
+ msgstr "Segmentação e publicidade"
980
+
981
+ #: views/partials/csGeneralSettings.php:188
982
+ #: views/partials/csGeneralSettings.php:204
983
+ #: views/partials/csGeneralSettings.php:223
984
+ #: views/partials/csGeneralSettings.php:239
985
+ #: views/partials/csPluginSettings.php:74
986
+ #: views/partials/csPluginSettings.php:90
987
+ #: views/partials/csPluginSettings.php:109
988
+ #: views/partials/csPluginSettings.php:125
989
+ msgid "Targeting &amp; Advertising"
990
+ msgstr "Segmentação &amp; Publicidade"
991
+
992
+ #: includes/settings.php:412
993
+ msgid "Terms and condition"
994
+ msgstr "Termos e Condições"
995
+
996
+ #: includes/settings.php:1170
997
+ msgid "Terms and Conditions"
998
+ msgstr "Termos e Condições"
999
+
1000
+ #: views/partials/bannerStyle.php:2
1001
+ msgid "Theme"
1002
+ msgstr "Tema"
1003
+
1004
+ #: includes/ServiceRating.php:109
1005
+ #, php-format
1006
+ msgid ""
1007
+ "This accounts for 25&#37; of your score. A privacy policy is a requirement "
1008
+ "under most privacy laws around the world. This document typically includes "
1009
+ "legally required disclosures about the type of personal data you process, "
1010
+ "why you need to process it, how the processing is done and the user’s rights "
1011
+ "under applicable law."
1012
+ msgstr ""
1013
+ "Isso representa 25&#37; da sua pontuação. Uma política de privacidade é um "
1014
+ "requisito da maioria das leis de privacidade em todo o mundo. Este documento "
1015
+ "normalmente inclui tópicos legalmente exigidos sobre o tipo de dados "
1016
+ "pessoais que você processa, por que você precisa processá-los, como o "
1017
+ "processamento é feito e os direitos do usuário sob a lei aplicável."
1018
+
1019
+ #: includes/ServiceRating.php:104
1020
+ #, php-format
1021
+ msgid ""
1022
+ "This accounts for 25&#37; of your score. If you’re based in Europe or have "
1023
+ "Europe-based users, you likely need to block cookies from running until you "
1024
+ "receive user consent. To do this, select “Automatically block scripts "
1025
+ "detected by the plugin”."
1026
+ msgstr ""
1027
+ "Isso representa 25&#37; da sua pontuação. Se você estiver na Europa ou tiver "
1028
+ "usuários na Europa, provavelmente precisará bloquear a execução de cookies "
1029
+ "até receber o consentimento do usuário. Para fazer isso, selecione “Bloquear "
1030
+ "scripts detectados automaticamente pelo plugin”."
1031
+
1032
+ #: includes/ServiceRating.php:114
1033
+ #, php-format
1034
+ msgid ""
1035
+ "This accounts for 25&#37; of your score. Terms and conditions help to "
1036
+ "protect you, the website owner, from potential liabilities and more. "
1037
+ "Furthermore, if you run an e-commerce site or app, having this document may "
1038
+ "be legally required as Terms typically contain legally mandatory disclosures."
1039
+ " Terms are legally binding documents, and therefore it’s important to ensure "
1040
+ "that they actually fit your specific scenario."
1041
+ msgstr ""
1042
+ "Isso representa 25&#37; da sua pontuação. Os termos e condições ajudam a "
1043
+ "proteger você, proprietário do site, de possíveis responsabilidades e muito "
1044
+ "mais. Além disso, se você administra um site ou aplicativo de e-commerce, "
1045
+ "ter este documento pode ser legalmente exigido, já que os Termos e Condições "
1046
+ "geralmente contem tópicos legalmente obrigatórios. Os termos são documentos "
1047
+ "juridicamente vinculativos, portanto, é importante garantir que eles "
1048
+ "realmente se ajustem ao seu caso específico."
1049
+
1050
+ #: includes/ServiceRating.php:99
1051
+ #, php-format
1052
+ msgid ""
1053
+ "This accounts for 25&#37; of your score. Your cookie banner should inform "
1054
+ "your users about your use of cookies and similar tracking technologies, and "
1055
+ "their rights in this regard. You may need a banner if either the GDPR, CCPA "
1056
+ "or ePrivacy apply to you."
1057
+ msgstr ""
1058
+ "Isso representa 25&#37; da sua pontuação. O seu banner de cookies deve "
1059
+ "informar os seus usuários sobre o uso de cookies e tecnologias de "
1060
+ "rastreamento semelhantes e os seus direitos a respeito. Você pode precisar "
1061
+ "de um banner se o GDPR, a CCPA ou a ePrivacy se aplicarem a você."
1062
+
1063
+ #: views/partials/frontpage_main_box.php:26
1064
+ msgid "This is what you may need to be compliant"
1065
+ msgstr "Isso é o que você pode precisar para estar em conformidade"
1066
+
1067
+ #: views/partials/auto_detect_forms.php:29
1068
+ msgid ""
1069
+ "This section lists the forms available for field mapping. The plugin "
1070
+ "currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce "
1071
+ "Checkout and WP Forms."
1072
+ msgstr ""
1073
+ "Esta seção lista os formulários disponíveis para mapeamento de campo. O "
1074
+ "plugin atualmente suporta e detecta: WordPress Comment, Contact Form 7, "
1075
+ "WooCommerce Checkout e WP Forms."
1076
+
1077
+ #: includes/widget/IubendaLegalWidget.php:176
1078
+ msgid "Title:"
1079
+ msgstr "Título:"
1080
+
1081
+ #: includes/settings.php:905
1082
+ #, php-format
1083
+ msgid ""
1084
+ "To ensure regular scans and full support, <span class=\"text-bold\">verify "
1085
+ "your account</span>. Check your mailbox now and validate your email address, "
1086
+ "or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your "
1087
+ "account</a> on iubenda.com. If you already did that, you can safely <a "
1088
+ "href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-"
1089
+ "notification-alert link-underline\" data-dismiss-"
1090
+ "key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
1091
+ msgstr ""
1092
+ "Para garantir verificações regulares e suporte completo, <span class=\"text-"
1093
+ "bold\">verifique a sua conta</span>. Verifique a sua caixa de entrada e "
1094
+ "valide o seu endereço de e-mail, ou consulte <a href=\"%s\" "
1095
+ "target=\"_blank\" class=\"link-underline\">a sua conta</a> em iubenda.com. "
1096
+ "Se você já fez isso, pode <a href=\"javascript:void(0)\" class=\"notice-"
1097
+ "dismiss-by-text dismiss-notification-alert link-underline\" data-dismiss-"
1098
+ "key=\"iub_user_needs_to_verify_his_account\">dispensar este lembrete com "
1099
+ "segurança</a>."
1100
+
1101
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
1102
+ msgid "Top menu"
1103
+ msgstr "Menu principal"
1104
+
1105
+ #: views/partials/modals/modal_no_website_found.php:10
1106
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
1107
+ msgid "Try again"
1108
+ msgstr "Tentar novamente"
1109
+
1110
+ #: includes/settings.php:1154 includes/settings.php:1174
1111
+ msgid "Version"
1112
+ msgstr "Versão"
1113
+
1114
+ #: views/partials/header_scanned.php:4
1115
+ msgid "We have analyzed your website in background and this is the result."
1116
+ msgstr "Analisamos o seu site em segundo plano e esse é o resultado."
1117
+
1118
+ #: views/partials/buttonPosition.php:28
1119
+ #: views/partials/modals/modal_almost_there.php:62
1120
+ #: views/tc-configuration.php:83
1121
+ #, php-format
1122
+ #| msgid ""
1123
+ #| "We were not able to add a \"Legal\" widget to the footer as your theme is "
1124
+ #| "not compatible, you can position the \"Legal\" widget manually from <a "
1125
+ #| "href=\"%s\" target=\"_blank\">here</a>."
1126
+ msgid ""
1127
+ "We were not able to add a \"Legal\" widget/block to the footer as your theme "
1128
+ "is not compatible, you can position the \"Legal\" widget/block manually from "
1129
+ "<a href=\"%s\" target=\"_blank\">here</a>."
1130
+ msgstr ""
1131
+ "Não foi possível adicionar um widget \"Legal\" ao rodapé porque o seu tema "
1132
+ "não é compatível, você pode posicionar o widget \"Legal\" manualmente <a "
1133
+ "href=\"%s\" target=\"_blank\">aqui</a>."
1134
+
1135
+ #: includes/settings.php:931
1136
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
1137
+ msgstr "Sentimos muito. Você se importa de nos deixar um feedback?"
1138
+
1139
+ #: views/partials/welcomeScreenHeader.php:2
1140
+ msgid "Welcome to iubenda!"
1141
+ msgstr "Bem-vindo a iubenda!"
1142
+
1143
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
1144
+ #: views/partials/modals/modal_almost_there.php:42
1145
+ msgid "Where can I find this code?"
1146
+ msgstr "Onde posso encontrar este código?"
1147
+
1148
+ #: includes/settings.php:924
1149
+ msgid ""
1150
+ "Whew, what a relief!? We've worked countless hours to make this plugin as "
1151
+ "useful as possible - so we're pretty happy that you're enjoying it. While "
1152
+ "you here, would you mind leaving us a 5 star rating? It would really help us "
1153
+ "out."
1154
+ msgstr ""
1155
+ "Ufa, que alívio! Trabalhamos inúmeras horas para tornar este plugin o mais "
1156
+ "útil possível - por isso estamos muito felizes que você esteja gostando. "
1157
+ "Aproveitando que está aqui, você se importaria de nos deixar uma "
1158
+ "classificação de 5 estrelas? Nos ajudaria bastante."
1159
+
1160
+ #: views/partials/csSimplifiedConfiguration.php:43
1161
+ msgid "Worldwide"
1162
+ msgstr "No mundo todo"
1163
+
1164
+ #: includes/settings.php:919
1165
+ msgid "Yes"
1166
+ msgstr "Sim"
1167
+
1168
+ #: includes/settings.php:389
1169
+ msgid "You don't have permission to access this page."
1170
+ msgstr "Você não tem permissão para acessar esta página."
1171
+
1172
+ #: views/partials/csSimplifiedConfiguration.php:92
1173
+ msgid "You should activate this feature if you show ads on your website"
1174
+ msgstr "Você deve ativar esse recurso se exibir anúncios no seu site"
1175
+
1176
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
1177
+ msgid "Your embed code"
1178
+ msgstr "Seu código de incorporação"
1179
+
1180
+ #: views/cons-configuration.php:29
1181
+ msgid "Your iubenda Javascript library public API key"
1182
+ msgstr "A sua chave de API pública da biblioteca de Javascript da iubenda"
1183
+
1184
+ #: views/partials/modals/modal_pp_created.php:5
1185
+ msgid "Your privacy policy has been created!"
1186
+ msgstr "Sua política de privacidade foi criada!"
1187
+
1188
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
1189
+ #: views/partials/siteInfo.php:20
1190
+ msgid "Your rating"
1191
+ msgstr "Sua avaliação"
1192
+
1193
+ #: includes/QuickGeneratorService.php:111
1194
+ msgid ""
1195
+ "Your website has been created and your legal documents have been generated. "
1196
+ "Setup your cookie banner and privacy policy button to complete the "
1197
+ "integration."
1198
+ msgstr ""
1199
+ "O seu site foi criado e seus documentos legais foram gerados. Configure seu "
1200
+ "banner de cookies e botão de política de privacidade para completar a "
1201
+ "integração."
languages/iubenda.pot ADDED
@@ -0,0 +1,970 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: \n"
5
+ "POT-Creation-Date: 2022-08-05 20:45+0200\n"
6
+ "PO-Revision-Date: 2022-03-03 17:48+0200\n"
7
+ "Last-Translator: \n"
8
+ "Language-Team: \n"
9
+ "Language: en\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
+ "X-Generator: Poedit 3.1.1\n"
15
+ "X-Poedit-Basepath: ..\n"
16
+ "X-Poedit-KeywordsList: _e;__\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+
19
+ #: assets/js/legal_block.js:15 assets/js/legal_block.js:32
20
+ msgid "Iubenda legal block"
21
+ msgstr ""
22
+
23
+ #: assets/js/legal_block.js:21 includes/block/IubendaLegalBlock.php:255
24
+ #: includes/widget/IubendaLegalWidget.php:167
25
+ msgid "Legal"
26
+ msgstr ""
27
+
28
+ #: includes/PrivacyPolicyGenerator.php:23
29
+ msgid "Privacy Policy"
30
+ msgstr ""
31
+
32
+ #: includes/QuickGeneratorService.php:111
33
+ msgid "Your website has been created and your legal documents have been generated. Setup your cookie banner and privacy policy button to complete the integration."
34
+ msgstr ""
35
+
36
+ #: includes/QuickGeneratorService.php:137
37
+ msgid "Our products has been integrated successfully, now customize all products to increase the compliance rating and make your website fully compliant."
38
+ msgstr ""
39
+
40
+ #: includes/QuickGeneratorService.php:625
41
+ #, php-format
42
+ msgid "Currently, you do not have write permission for <i class=\"text-bold\">%s</i>. For instructions on how to fix this, please read <a class=\"link-underline\" target=\"_blank\" href=\"%s\">our guide</a>."
43
+ msgstr ""
44
+
45
+ #: includes/ServiceRating.php:98
46
+ msgid "Set up a cookie banner"
47
+ msgstr ""
48
+
49
+ #: includes/ServiceRating.php:99
50
+ msgid "This accounts for 25&#37; of your score. Your cookie banner should inform your users about your use of cookies and similar tracking technologies, and their rights in this regard. You may need a banner if either the GDPR, CCPA or ePrivacy apply to you."
51
+ msgstr ""
52
+
53
+ #: includes/ServiceRating.php:103
54
+ msgid "Only track users that give consent"
55
+ msgstr ""
56
+
57
+ #: includes/ServiceRating.php:104
58
+ msgid "This accounts for 25&#37; of your score. If you’re based in Europe or have Europe-based users, you likely need to block cookies from running until you receive user consent. To do this, select “Automatically block scripts detected by the plugin”."
59
+ msgstr ""
60
+
61
+ #: includes/ServiceRating.php:108
62
+ msgid "Set up a privacy policy"
63
+ msgstr ""
64
+
65
+ #: includes/ServiceRating.php:109
66
+ msgid "This accounts for 25&#37; of your score. A privacy policy is a requirement under most privacy laws around the world. This document typically includes legally required disclosures about the type of personal data you process, why you need to process it, how the processing is done and the user’s rights under applicable law."
67
+ msgstr ""
68
+
69
+ #: includes/ServiceRating.php:113
70
+ msgid "Set up terms and conditions"
71
+ msgstr ""
72
+
73
+ #: includes/ServiceRating.php:114
74
+ msgid "This accounts for 25&#37; of your score. Terms and conditions help to protect you, the website owner, from potential liabilities and more. Furthermore, if you run an e-commerce site or app, having this document may be legally required as Terms typically contain legally mandatory disclosures. Terms are legally binding documents, and therefore it’s important to ensure that they actually fit your specific scenario."
75
+ msgstr ""
76
+
77
+ #: includes/amp.php:281
78
+ msgid "AMP Cookie Consent"
79
+ msgstr ""
80
+
81
+ #: includes/forms-list-table.php:86
82
+ msgid "Form Title"
83
+ msgstr ""
84
+
85
+ #: includes/forms-list-table.php:87
86
+ msgid "Form ID"
87
+ msgstr ""
88
+
89
+ #: includes/forms-list-table.php:88
90
+ msgid "Form Source"
91
+ msgstr ""
92
+
93
+ #: includes/forms-list-table.php:89
94
+ msgid "Fields"
95
+ msgstr ""
96
+
97
+ #: includes/forms-list-table.php:90
98
+ msgid "Date"
99
+ msgstr ""
100
+
101
+ #: includes/forms-list-table.php:159
102
+ msgid "Edit"
103
+ msgstr ""
104
+
105
+ #: includes/forms-list-table.php:160
106
+ msgid "Delete"
107
+ msgstr ""
108
+
109
+ #: includes/forms-list-table.php:260
110
+ msgid "Filter"
111
+ msgstr ""
112
+
113
+ #: includes/forms-list-table.php:277
114
+ msgid "Filter by source"
115
+ msgstr ""
116
+
117
+ #: includes/forms-list-table.php:279
118
+ msgid "All form sources"
119
+ msgstr ""
120
+
121
+ #: includes/forms-list-table.php:347
122
+ msgid "No forms found."
123
+ msgstr ""
124
+
125
+ #: includes/forms-list-table.php:376
126
+ msgid "Select All"
127
+ msgstr ""
128
+
129
+ #: includes/forms.php:152
130
+ msgid "Forms"
131
+ msgstr ""
132
+
133
+ #: includes/forms.php:153
134
+ msgid "Form"
135
+ msgstr ""
136
+
137
+ #: includes/forms.php:579 includes/forms.php:593
138
+ msgid "First name"
139
+ msgstr ""
140
+
141
+ #: includes/forms.php:585 includes/forms.php:605
142
+ msgid "Last name"
143
+ msgstr ""
144
+
145
+ #: includes/forms.php:599
146
+ msgid "Middle name"
147
+ msgstr ""
148
+
149
+ #: includes/settings.php:75 includes/settings.php:76 includes/settings.php:77
150
+ #: includes/settings.php:78 includes/settings.php:79
151
+ msgid "string"
152
+ msgstr ""
153
+
154
+ #: includes/settings.php:91 includes/settings.php:424
155
+ #: includes/settings.php:1162
156
+ msgid "Cookie Solution"
157
+ msgstr ""
158
+
159
+ #: includes/settings.php:97 includes/settings.php:430 includes/settings.php:441
160
+ #: includes/settings.php:1182
161
+ msgid "Consent Solution"
162
+ msgstr ""
163
+
164
+ #: includes/settings.php:105 views/partials/csGeneralSettings.php:183
165
+ #: views/partials/csGeneralSettings.php:199
166
+ #: views/partials/csGeneralSettings.php:218
167
+ #: views/partials/csGeneralSettings.php:234
168
+ #: views/partials/csPluginSettings.php:69
169
+ #: views/partials/csPluginSettings.php:85
170
+ #: views/partials/csPluginSettings.php:104
171
+ #: views/partials/csPluginSettings.php:120
172
+ msgid "Not set"
173
+ msgstr ""
174
+
175
+ #: includes/settings.php:106 views/partials/csGeneralSettings.php:184
176
+ #: views/partials/csGeneralSettings.php:200
177
+ #: views/partials/csGeneralSettings.php:219
178
+ #: views/partials/csGeneralSettings.php:235
179
+ #: views/partials/csPluginSettings.php:70
180
+ #: views/partials/csPluginSettings.php:86
181
+ #: views/partials/csPluginSettings.php:105
182
+ #: views/partials/csPluginSettings.php:121
183
+ msgid "Strictly necessary"
184
+ msgstr ""
185
+
186
+ #: includes/settings.php:107
187
+ msgid "Basic interactions & functionalities"
188
+ msgstr ""
189
+
190
+ #: includes/settings.php:108 views/partials/csGeneralSettings.php:186
191
+ #: views/partials/csGeneralSettings.php:202
192
+ #: views/partials/csGeneralSettings.php:221
193
+ #: views/partials/csGeneralSettings.php:237
194
+ #: views/partials/csPluginSettings.php:72
195
+ #: views/partials/csPluginSettings.php:88
196
+ #: views/partials/csPluginSettings.php:107
197
+ #: views/partials/csPluginSettings.php:123
198
+ msgid "Experience enhancement"
199
+ msgstr ""
200
+
201
+ #: includes/settings.php:109 views/partials/csGeneralSettings.php:187
202
+ #: views/partials/csGeneralSettings.php:203
203
+ #: views/partials/csGeneralSettings.php:222
204
+ #: views/partials/csGeneralSettings.php:238
205
+ #: views/partials/csPluginSettings.php:73
206
+ #: views/partials/csPluginSettings.php:89
207
+ #: views/partials/csPluginSettings.php:108
208
+ #: views/partials/csPluginSettings.php:124
209
+ msgid "Analytics"
210
+ msgstr ""
211
+
212
+ #: includes/settings.php:110
213
+ msgid "Targeting & Advertising"
214
+ msgstr ""
215
+
216
+ #: includes/settings.php:389
217
+ msgid "You don't have permission to access this page."
218
+ msgstr ""
219
+
220
+ #: includes/settings.php:402 views/partials/siteInfo.php:14
221
+ msgid "Plugin settings"
222
+ msgstr ""
223
+
224
+ #: includes/settings.php:412
225
+ msgid "Terms and condition"
226
+ msgstr ""
227
+
228
+ #: includes/settings.php:418 includes/settings.php:1150
229
+ msgid "Privacy and Cookie Policy"
230
+ msgstr ""
231
+
232
+ #: includes/settings.php:628
233
+ #, php-format
234
+ msgid "Please enable comments cookies opt-in checkbox in the <a href=\"%s\" target=\"_blank\">Discussion settings</a>."
235
+ msgstr ""
236
+
237
+ #: includes/settings.php:701
238
+ msgid "Form saving failed. Please fill the Subject fields."
239
+ msgstr ""
240
+
241
+ #: includes/settings.php:749
242
+ msgid "Settings saved."
243
+ msgstr ""
244
+
245
+ #: includes/settings.php:905
246
+ #, php-format
247
+ msgid "To ensure regular scans and full support, <span class=\"text-bold\">verify your account</span>. Check your mailbox now and validate your email address, or check <a href=\"%s\" target=\"_blank\" class=\"link-underline\">your account</a> on iubenda.com. If you already did that, you can safely <a href=\"javascript:void(0)\" class=\"notice-dismiss-by-text dismiss-notification-alert link-underline\" data-dismiss-key=\"iub_user_needs_to_verify_his_account\">dismiss this reminder</a>."
248
+ msgstr ""
249
+
250
+ #: includes/settings.php:917
251
+ msgid "Enjoying the iubenda Cookie & Consent Solution Plugin?"
252
+ msgstr ""
253
+
254
+ #: includes/settings.php:919
255
+ msgid "Yes"
256
+ msgstr ""
257
+
258
+ #: includes/settings.php:920
259
+ msgid "No"
260
+ msgstr ""
261
+
262
+ #: includes/settings.php:924
263
+ msgid "Whew, what a relief!? We've worked countless hours to make this plugin as useful as possible - so we're pretty happy that you're enjoying it. While you here, would you mind leaving us a 5 star rating? It would really help us out."
264
+ msgstr ""
265
+
266
+ #: includes/settings.php:926
267
+ msgid "Sure!"
268
+ msgstr ""
269
+
270
+ #: includes/settings.php:927 includes/settings.php:934
271
+ msgid "No thanks"
272
+ msgstr ""
273
+
274
+ #: includes/settings.php:931
275
+ msgid "We're sorry to hear that. Would you mind giving us some feedback?"
276
+ msgstr ""
277
+
278
+ #: includes/settings.php:933
279
+ msgid "Ok sure!"
280
+ msgstr ""
281
+
282
+ #: includes/settings.php:1114 includes/settings.php:1136
283
+ #: includes/settings.php:1155 includes/settings.php:1175
284
+ msgid "Style"
285
+ msgstr ""
286
+
287
+ #: includes/settings.php:1115 includes/settings.php:1137
288
+ #: includes/settings.php:1156 includes/settings.php:1176
289
+ #: views/partials/bannerPosition.php:20
290
+ msgid "Position"
291
+ msgstr ""
292
+
293
+ #: includes/settings.php:1116 includes/settings.php:1138
294
+ msgid "legislation"
295
+ msgstr ""
296
+
297
+ #: includes/settings.php:1154 includes/settings.php:1174
298
+ msgid "Version"
299
+ msgstr ""
300
+
301
+ #: includes/settings.php:1170
302
+ msgid "Terms and Conditions"
303
+ msgstr ""
304
+
305
+ #: includes/widget/IubendaLegalWidget.php:18
306
+ msgid "Iubenda legal"
307
+ msgstr ""
308
+
309
+ #: includes/widget/IubendaLegalWidget.php:21
310
+ msgid "Iubenda legal widget for Privacy Policy and Terms & Conditions"
311
+ msgstr ""
312
+
313
+ #: includes/widget/IubendaLegalWidget.php:176
314
+ msgid "Title:"
315
+ msgstr ""
316
+
317
+ #: views/cons-configuration.php:14
318
+ msgid "Activate <strong>Consent Solution</strong> on our website in your iubenda dashboard and paste here the <strong>API key</strong> to integrate it on your website."
319
+ msgstr ""
320
+
321
+ #: views/cons-configuration.php:17
322
+ msgid "Activate & Configure Consent Solution by"
323
+ msgstr ""
324
+
325
+ #: views/cons-configuration.php:18 views/partials/csManualConfiguration.php:6
326
+ #: views/tc-configuration.php:16
327
+ msgid "clicking here"
328
+ msgstr ""
329
+
330
+ #: views/cons-configuration.php:23
331
+ msgid "Paste your public API key here"
332
+ msgstr ""
333
+
334
+ #: views/cons-configuration.php:29
335
+ msgid "Your iubenda Javascript library public API key"
336
+ msgstr ""
337
+
338
+ #: views/cons-configuration.php:31
339
+ msgid "Confirm API"
340
+ msgstr ""
341
+
342
+ #: views/cons-configuration.php:37 views/partials/languagesTabs.php:27
343
+ #: views/partials/modals/modal_almost_there.php:42
344
+ msgid "Where can I find this code?"
345
+ msgstr ""
346
+
347
+ #: views/cons-configuration.php:44
348
+ msgid "Add forms"
349
+ msgstr ""
350
+
351
+ #: views/cons-configuration.php:53
352
+ msgid "Auto-detect forms"
353
+ msgstr ""
354
+
355
+ #: views/cons-configuration.php:60 views/cons-single-form.php:277
356
+ #: views/cs-configuration.php:15 views/plugin-settings.php:44
357
+ #: views/pp-configuration.php:33 views/tc-configuration.php:131
358
+ msgid "Cancel"
359
+ msgstr ""
360
+
361
+ #: views/cons-configuration.php:62 views/cons-single-form.php:279
362
+ #: views/cs-configuration.php:17 views/plugin-settings.php:46
363
+ #: views/pp-configuration.php:35 views/tc-configuration.php:133
364
+ msgid "Save settings"
365
+ msgstr ""
366
+
367
+ #: views/cons-single-form.php:12
368
+ msgid "Field Mapping"
369
+ msgstr ""
370
+
371
+ #: views/cons-single-form.php:44
372
+ msgid "Map fields"
373
+ msgstr ""
374
+
375
+ #: views/cons-single-form.php:48
376
+ msgid "Status"
377
+ msgstr ""
378
+
379
+ #: views/cons-single-form.php:61
380
+ msgid "Subject fields"
381
+ msgstr ""
382
+
383
+ #: views/cons-single-form.php:62
384
+ msgid "Subject fields allow you to store a series of identifying values about your individual subjects/users. Please map the subject field with the corresponding form fields where applicable."
385
+ msgstr ""
386
+
387
+ #: views/cons-single-form.php:65
388
+ msgid "Subject field"
389
+ msgstr ""
390
+
391
+ #: views/cons-single-form.php:66 views/cons-single-form.php:103
392
+ msgid "Form field"
393
+ msgstr ""
394
+
395
+ #: views/cons-single-form.php:71
396
+ msgid "Autogenerated"
397
+ msgstr ""
398
+
399
+ #: views/cons-single-form.php:71
400
+ msgid "None"
401
+ msgstr ""
402
+
403
+ #: views/cons-single-form.php:98
404
+ msgid "Preferences fields"
405
+ msgstr ""
406
+
407
+ #: views/cons-single-form.php:99
408
+ msgid "Preferences fields allow you to store a record of the various opt-ins points at which the user has agreed or given consent, such as fields for agreeing to terms and conditions, newsletter, profiling, etc."
409
+ msgstr ""
410
+
411
+ #: views/cons-single-form.php:102
412
+ msgid "Preferences field"
413
+ msgstr ""
414
+
415
+ #: views/cons-single-form.php:108 views/cons-single-form.php:133
416
+ #: views/cons-single-form.php:234 views/cons-single-form.php:244
417
+ #: views/cons-single-form.php:260
418
+ msgid "Enter field name"
419
+ msgstr ""
420
+
421
+ #: views/cons-single-form.php:122 views/cons-single-form.php:148
422
+ #: views/cons-single-form.php:183 views/cons-single-form.php:207
423
+ #: views/cons-single-form.php:244 views/cons-single-form.php:260
424
+ msgid "Remove"
425
+ msgstr ""
426
+
427
+ #: views/cons-single-form.php:155
428
+ msgid "Add New Preference"
429
+ msgstr ""
430
+
431
+ #: views/cons-single-form.php:159
432
+ msgid "Exclude fields"
433
+ msgstr ""
434
+
435
+ #: views/cons-single-form.php:160
436
+ msgid "Exclude fields allow you to create a list of fields that you would like to exclude from your Consent Solution recorded proofs (for e.g. password or other fields not related to the consent)."
437
+ msgstr ""
438
+
439
+ #: views/cons-single-form.php:164
440
+ msgid "Exclude field"
441
+ msgstr ""
442
+
443
+ #: views/cons-single-form.php:216
444
+ msgid "Add New Exclude"
445
+ msgstr ""
446
+
447
+ #: views/cons-single-form.php:221
448
+ msgid "Legal documents"
449
+ msgstr ""
450
+
451
+ #: views/cons-single-form.php:222
452
+ msgid "In general, it's important that you declare which legal documents are being agreed upon when each consent is collected. However, if you use iubenda for your legal documents, it is *required* that you identify the documents by selecting them here."
453
+ msgstr ""
454
+
455
+ #: views/cons-single-form.php:225
456
+ msgid "Identifier"
457
+ msgstr ""
458
+
459
+ #: views/cons-single-form.php:234
460
+ msgid "Please select each legal document available on your site."
461
+ msgstr ""
462
+
463
+ #: views/cons-single-form.php:250
464
+ msgid "Alternatively, you may add your own custom document identifiers."
465
+ msgstr ""
466
+
467
+ #: views/cons-single-form.php:268
468
+ msgid "Add New Document"
469
+ msgstr ""
470
+
471
+ #: views/frontpage.php:8
472
+ msgid "Let's configure your website for compliance."
473
+ msgstr ""
474
+
475
+ #: views/frontpage.php:9
476
+ msgid "Help me get compliant!"
477
+ msgstr ""
478
+
479
+ #: views/integrate-setup.php:21
480
+ msgid "Add a cookie banner"
481
+ msgstr ""
482
+
483
+ #: views/integrate-setup.php:29 views/partials/csGeneralSettings.php:69
484
+ msgid "Enable Google AMP support"
485
+ msgstr ""
486
+
487
+ #: views/integrate-setup.php:32 views/partials/csGeneralSettings.php:73
488
+ msgid "Select the iubenda AMP configuration file location."
489
+ msgstr ""
490
+
491
+ #: views/integrate-setup.php:36 views/partials/csGeneralSettings.php:77
492
+ msgid "Auto-generated configuration file"
493
+ msgstr ""
494
+
495
+ #: views/integrate-setup.php:40 views/partials/csGeneralSettings.php:81
496
+ msgid "Custom configuration file"
497
+ msgstr ""
498
+
499
+ #: views/integrate-setup.php:49 views/partials/csGeneralSettings.php:91
500
+ msgid "No file available. Save changes to generate iubenda AMP configuration file."
501
+ msgstr ""
502
+
503
+ #: views/integrate-setup.php:73 views/integrate-setup.php:91
504
+ #: views/partials/csGeneralSettings.php:115
505
+ msgid "Default language"
506
+ msgstr ""
507
+
508
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
509
+ msgid "Seeing the AMP cookie notice when testing from Google but not when visiting your AMP pages directly?"
510
+ msgstr ""
511
+
512
+ #: views/integrate-setup.php:85 views/partials/csGeneralSettings.php:127
513
+ msgid "Learn how to fix it"
514
+ msgstr ""
515
+
516
+ #: views/integrate-setup.php:108 views/partials/csGeneralSettings.php:149
517
+ #: views/partials/csPluginSettings.php:4
518
+ msgid "Automatically block scripts detected by the plugin"
519
+ msgstr ""
520
+
521
+ #: views/integrate-setup.php:114 views/partials/csGeneralSettings.php:157
522
+ #: views/partials/csPluginSettings.php:10
523
+ msgid "Primary"
524
+ msgstr ""
525
+
526
+ #: views/integrate-setup.php:118 views/partials/csGeneralSettings.php:161
527
+ #: views/partials/csPluginSettings.php:14
528
+ msgid "Secondary"
529
+ msgstr ""
530
+
531
+ #: views/integrate-setup.php:121 views/partials/csGeneralSettings.php:153
532
+ #: views/partials/csPluginSettings.php:17
533
+ msgid "Select Parsing Engine"
534
+ msgstr ""
535
+
536
+ #: views/integrate-setup.php:126 views/partials/csGeneralSettings.php:168
537
+ #: views/partials/csPluginSettings.php:22
538
+ msgid "Leave scripts untouched on the page if the user has already given consent"
539
+ msgstr ""
540
+
541
+ #: views/integrate-setup.php:128 views/partials/csGeneralSettings.php:170
542
+ #: views/partials/csPluginSettings.php:24
543
+ msgid "Enable this option to improve performance <strong>only</strong> if your site does <strong>not</strong> use a cache system or a cache plugin and if you're <strong>not</strong> collecting per-category consent. If you're in doubt, keep this setting disabled"
544
+ msgstr ""
545
+
546
+ #: views/integrate-setup.php:140
547
+ msgid "Add the privacy policy button"
548
+ msgstr ""
549
+
550
+ #: views/partials/auto_detect_forms.php:29
551
+ msgid "This section lists the forms available for field mapping. The plugin currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce Checkout and WP Forms."
552
+ msgstr ""
553
+
554
+ #: views/partials/bannerPosition.php:41
555
+ msgid "Background-overlay"
556
+ msgstr ""
557
+
558
+ #: views/partials/bannerStyle.php:2
559
+ msgid "Theme"
560
+ msgstr ""
561
+
562
+ #: views/partials/bannerStyle.php:9 views/partials/buttonStyle.php:19
563
+ #: views/tc-configuration.php:50
564
+ msgid "Dark"
565
+ msgstr ""
566
+
567
+ #: views/partials/bannerStyle.php:15 views/partials/buttonStyle.php:10
568
+ #: views/tc-configuration.php:41
569
+ msgid "Light"
570
+ msgstr ""
571
+
572
+ #: views/partials/breadcrumb.php:2
573
+ msgid "Products"
574
+ msgstr ""
575
+
576
+ #: views/partials/buttonPosition.php:1 views/tc-configuration.php:57
577
+ msgid "Button position"
578
+ msgstr ""
579
+
580
+ #: views/partials/buttonPosition.php:5 views/tc-configuration.php:61
581
+ msgid "Add to the footer automatically"
582
+ msgstr ""
583
+
584
+ #: views/partials/buttonPosition.php:10 views/tc-configuration.php:65
585
+ msgid "Integrate manually"
586
+ msgstr ""
587
+
588
+ #: views/partials/buttonPosition.php:28
589
+ #: views/partials/modals/modal_almost_there.php:62
590
+ #: views/tc-configuration.php:83
591
+ #, php-format
592
+ msgid "We were not able to add a \"Legal\" widget/block to the footer as your theme is not compatible, you can position the \"Legal\" widget/block manually from <a href=\"%s\" target=\"_blank\">here</a>."
593
+ msgstr ""
594
+
595
+ #: views/partials/buttonPosition.php:37 views/tc-configuration.php:92
596
+ msgid "HTML"
597
+ msgstr ""
598
+
599
+ #: views/partials/buttonPosition.php:64 views/tc-configuration.php:108
600
+ msgid "Your embed code"
601
+ msgstr ""
602
+
603
+ #: views/partials/buttonPosition.php:73 views/tc-configuration.php:117
604
+ msgid "Shortcode"
605
+ msgstr ""
606
+
607
+ #: views/partials/buttonPosition.php:74
608
+ msgid "A shortcode is a tiny bit of code that allows embedding interactive elements or creating complex page layouts with a minimal effort.<br>Just copy and paste the shortcode where you want the button to appear."
609
+ msgstr ""
610
+
611
+ #: views/partials/buttonStyle.php:1 views/tc-configuration.php:32
612
+ msgid "Button style"
613
+ msgstr ""
614
+
615
+ #: views/partials/csGeneralSettings.php:2
616
+ msgid "Configuration"
617
+ msgstr ""
618
+
619
+ #: views/partials/csGeneralSettings.php:14
620
+ #: views/partials/csGeneralSettings.php:23
621
+ msgid "Simplified"
622
+ msgstr ""
623
+
624
+ #: views/partials/csGeneralSettings.php:35
625
+ #: views/partials/csGeneralSettings.php:42
626
+ msgid "Manual embed"
627
+ msgstr ""
628
+
629
+ #: views/partials/csGeneralSettings.php:173
630
+ msgid "Blocked domains"
631
+ msgstr ""
632
+
633
+ #: views/partials/csGeneralSettings.php:176
634
+ #: views/partials/csPluginSettings.php:62
635
+ msgid "Custom scripts"
636
+ msgstr ""
637
+
638
+ #: views/partials/csGeneralSettings.php:177
639
+ #: views/partials/csPluginSettings.php:63
640
+ msgid "Custom iframes"
641
+ msgstr ""
642
+
643
+ #: views/partials/csGeneralSettings.php:181
644
+ #: views/partials/csGeneralSettings.php:197
645
+ #: views/partials/csPluginSettings.php:67
646
+ #: views/partials/csPluginSettings.php:83
647
+ msgid "Enter custom script"
648
+ msgstr ""
649
+
650
+ #: views/partials/csGeneralSettings.php:185
651
+ #: views/partials/csGeneralSettings.php:201
652
+ #: views/partials/csGeneralSettings.php:220
653
+ #: views/partials/csGeneralSettings.php:236
654
+ #: views/partials/csPluginSettings.php:71
655
+ #: views/partials/csPluginSettings.php:87
656
+ #: views/partials/csPluginSettings.php:106
657
+ #: views/partials/csPluginSettings.php:122
658
+ msgid "Basic interactions &amp; functionalities"
659
+ msgstr ""
660
+
661
+ #: views/partials/csGeneralSettings.php:188
662
+ #: views/partials/csGeneralSettings.php:204
663
+ #: views/partials/csGeneralSettings.php:223
664
+ #: views/partials/csGeneralSettings.php:239
665
+ #: views/partials/csPluginSettings.php:74
666
+ #: views/partials/csPluginSettings.php:90
667
+ #: views/partials/csPluginSettings.php:109
668
+ #: views/partials/csPluginSettings.php:125
669
+ msgid "Targeting &amp; Advertising"
670
+ msgstr ""
671
+
672
+ #: views/partials/csGeneralSettings.php:211
673
+ #: views/partials/csPluginSettings.php:97
674
+ msgid "Provide a list of domains for any custom scripts you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains."
675
+ msgstr ""
676
+
677
+ #: views/partials/csGeneralSettings.php:212
678
+ #: views/partials/csPluginSettings.php:98
679
+ msgid "Add New Script"
680
+ msgstr ""
681
+
682
+ #: views/partials/csGeneralSettings.php:216
683
+ #: views/partials/csGeneralSettings.php:232
684
+ #: views/partials/csPluginSettings.php:102
685
+ #: views/partials/csPluginSettings.php:118
686
+ msgid "Enter custom iframe"
687
+ msgstr ""
688
+
689
+ #: views/partials/csGeneralSettings.php:246
690
+ #: views/partials/csPluginSettings.php:132
691
+ msgid "Provide a list of domains for any custom iframes you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains."
692
+ msgstr ""
693
+
694
+ #: views/partials/csGeneralSettings.php:247
695
+ #: views/partials/csPluginSettings.php:133
696
+ msgid "Add New iframe"
697
+ msgstr ""
698
+
699
+ #: views/partials/csManualConfiguration.php:2
700
+ msgid "Configure your cookie banner on our website and paste here the embed code to integrate it to your website."
701
+ msgstr ""
702
+
703
+ #: views/partials/csManualConfiguration.php:5
704
+ msgid "Configure cookie banner by"
705
+ msgstr ""
706
+
707
+ #: views/partials/csManualConfiguration.php:11
708
+ msgid "Paste your cookie solution embed code here"
709
+ msgstr ""
710
+
711
+ #: views/partials/csPluginSettings.php:29 views/plugin-settings.php:13
712
+ msgid "Restrict the plugin to run only for requests that have \"Content-type: text / html\" (recommended)"
713
+ msgstr ""
714
+
715
+ #: views/partials/csPluginSettings.php:33 views/plugin-settings.php:17
716
+ msgid "Do not run the plugin inside the RSS feed (recommended)"
717
+ msgstr ""
718
+
719
+ #: views/partials/csPluginSettings.php:37 views/plugin-settings.php:21
720
+ msgid "Do not run the plugin on POST requests (recommended)"
721
+ msgstr ""
722
+
723
+ #: views/partials/csPluginSettings.php:41 views/plugin-settings.php:25
724
+ msgid "Delete all plugin data upon deactivation"
725
+ msgstr ""
726
+
727
+ #: views/partials/csPluginSettings.php:45 views/plugin-settings.php:28
728
+ msgid "Menu position"
729
+ msgstr ""
730
+
731
+ #: views/partials/csPluginSettings.php:49 views/plugin-settings.php:32
732
+ msgid "Top menu"
733
+ msgstr ""
734
+
735
+ #: views/partials/csPluginSettings.php:53 views/plugin-settings.php:36
736
+ msgid "Submenu"
737
+ msgstr ""
738
+
739
+ #: views/partials/csPluginSettings.php:56 views/plugin-settings.php:39
740
+ msgid "Select whether to display iubenda in a top admin menu or the Settings submenu."
741
+ msgstr ""
742
+
743
+ #: views/partials/csPluginSettings.php:59
744
+ msgid "Custom settings"
745
+ msgstr ""
746
+
747
+ #: views/partials/csSimplifiedConfiguration.php:9
748
+ msgid "Legislation"
749
+ msgstr ""
750
+
751
+ #: views/partials/csSimplifiedConfiguration.php:14
752
+ msgid "GDPR Only"
753
+ msgstr ""
754
+
755
+ #: views/partials/csSimplifiedConfiguration.php:18
756
+ msgid "CCPA Only"
757
+ msgstr ""
758
+
759
+ #: views/partials/csSimplifiedConfiguration.php:22
760
+ msgid "Both"
761
+ msgstr ""
762
+
763
+ #: views/partials/csSimplifiedConfiguration.php:29
764
+ msgid "Require consent from"
765
+ msgstr ""
766
+
767
+ #: views/partials/csSimplifiedConfiguration.php:43
768
+ msgid "Worldwide"
769
+ msgstr ""
770
+
771
+ #: views/partials/csSimplifiedConfiguration.php:59
772
+ msgid "EU Only"
773
+ msgstr ""
774
+
775
+ #: views/partials/csSimplifiedConfiguration.php:68
776
+ msgid "Banner buttons"
777
+ msgstr ""
778
+
779
+ #: views/partials/csSimplifiedConfiguration.php:72
780
+ msgid "Explicit Accept and Customize buttons"
781
+ msgstr ""
782
+
783
+ #: views/partials/csSimplifiedConfiguration.php:77
784
+ msgid "Explicit Reject button"
785
+ msgstr ""
786
+
787
+ #: views/partials/csSimplifiedConfiguration.php:83
788
+ msgid "Other options"
789
+ msgstr ""
790
+
791
+ #: views/partials/csSimplifiedConfiguration.php:88
792
+ msgid "Enable IAB Transparency and Consent Framework"
793
+ msgstr ""
794
+
795
+ #: views/partials/csSimplifiedConfiguration.php:88
796
+ #: views/partials/modals/modal_rating.php:22
797
+ msgid "Learn More"
798
+ msgstr ""
799
+
800
+ #: views/partials/csSimplifiedConfiguration.php:92
801
+ msgid "You should activate this feature if you show ads on your website"
802
+ msgstr ""
803
+
804
+ #: views/partials/footer.php:5
805
+ msgid "Documentation"
806
+ msgstr ""
807
+
808
+ #: views/partials/frontpage_main_box.php:22
809
+ msgid "Analyzing your website"
810
+ msgstr ""
811
+
812
+ #: views/partials/frontpage_main_box.php:26
813
+ msgid "This is what you may need to be compliant"
814
+ msgstr ""
815
+
816
+ #: views/partials/header_scanned.php:3 views/partials/modals/modal_rating.php:6
817
+ #: views/partials/siteInfo.php:20
818
+ msgid "Your rating"
819
+ msgstr ""
820
+
821
+ #: views/partials/header_scanned.php:4
822
+ msgid "We have analyzed your website in background and this is the result."
823
+ msgstr ""
824
+
825
+ #: views/partials/integrateFooter.php:3
826
+ msgid "Reset settings"
827
+ msgstr ""
828
+
829
+ #: views/partials/integrateFooter.php:4
830
+ msgid "Integrate"
831
+ msgstr ""
832
+
833
+ #: views/partials/languagesTabs.php:21
834
+ msgid "Paste your embed code here"
835
+ msgstr ""
836
+
837
+ #: views/partials/modals/modal_almost_there.php:5
838
+ msgid "Nice! We are almost there."
839
+ msgstr ""
840
+
841
+ #: views/partials/modals/modal_almost_there.php:6
842
+ msgid "Since you already activated some products for this website, we just ask you to copy and paste the embedding code of the product you already have to syncronize your iubenda acount with WP plugin."
843
+ msgstr ""
844
+
845
+ #: views/partials/modals/modal_almost_there.php:13
846
+ msgid "Select products you have already activated"
847
+ msgstr ""
848
+
849
+ #: views/partials/modals/modal_almost_there.php:25
850
+ msgid "(required)"
851
+ msgstr ""
852
+
853
+ #: views/partials/modals/modal_almost_there.php:37
854
+ msgid "Consent Solution API key"
855
+ msgstr ""
856
+
857
+ #: views/partials/modals/modal_almost_there.php:39
858
+ msgid "Paste your API key here"
859
+ msgstr ""
860
+
861
+ #: views/partials/modals/modal_almost_there.php:75
862
+ msgid "Synchronize products"
863
+ msgstr ""
864
+
865
+ #: views/partials/modals/modal_no_website_found.php:6
866
+ #: views/partials/modals/modal_ops_embed_invalid.php:6
867
+ msgid "Ooops! <br> No website found with this embed code."
868
+ msgstr ""
869
+
870
+ #: views/partials/modals/modal_no_website_found.php:8
871
+ msgid "It seems that it is not possible to access your data with the code you pasted, do you want to try again or do you prefer to start configuring your website from scratch?"
872
+ msgstr ""
873
+
874
+ #: views/partials/modals/modal_no_website_found.php:10
875
+ #: views/partials/modals/modal_ops_embed_invalid.php:10
876
+ msgid "Try again"
877
+ msgstr ""
878
+
879
+ #: views/partials/modals/modal_no_website_found.php:11
880
+ #: views/partials/modals/modal_sync.php:8
881
+ msgid "I want to start from scratch"
882
+ msgstr ""
883
+
884
+ #: views/partials/modals/modal_ops_embed_invalid.php:8
885
+ msgid "It seems that it is not possible to access your data with the code you pasted, do you want to try again."
886
+ msgstr ""
887
+
888
+ #: views/partials/modals/modal_pp_created.php:5
889
+ msgid "Your privacy policy has been created!"
890
+ msgstr ""
891
+
892
+ #: views/partials/modals/modal_pp_created.php:7
893
+ msgid "From here you can customize your privacy policy by adding the services you use within your website or you can customize the style of the button that displays your privacy policy."
894
+ msgstr ""
895
+
896
+ #: views/partials/modals/modal_pp_created.php:9
897
+ msgid "Got it"
898
+ msgstr ""
899
+
900
+ #: views/partials/modals/modal_rating.php:11
901
+ msgid "Here’s how we calculate your rating."
902
+ msgstr ""
903
+
904
+ #: views/partials/modals/modal_select_language.php:4
905
+ msgid "Now, select your website language"
906
+ msgstr ""
907
+
908
+ #: views/partials/modals/modal_select_language.php:54
909
+ msgid "Continue"
910
+ msgstr ""
911
+
912
+ #: views/partials/modals/modal_sync.php:4
913
+ msgid "First of all, tell us if you already use our products for this website or if you want to start from scratch"
914
+ msgstr ""
915
+
916
+ #: views/partials/modals/modal_sync.php:6
917
+ msgid "I’ve already made the set up on iubenda.com"
918
+ msgstr ""
919
+
920
+ #: views/partials/modals/modal_sync.php:7
921
+ msgid "or"
922
+ msgstr ""
923
+
924
+ #: views/partials/product-card.php:46
925
+ msgid "Service off"
926
+ msgstr ""
927
+
928
+ #: views/partials/product-card.php:46
929
+ msgid "Service on"
930
+ msgstr ""
931
+
932
+ #: views/partials/product-card.php:48
933
+ msgid "Configure"
934
+ msgstr ""
935
+
936
+ #: views/partials/siteInfo.php:21
937
+ msgid "How is it calculated?"
938
+ msgstr ""
939
+
940
+ #: views/partials/welcomeScreenHeader.php:2
941
+ msgid "Welcome to iubenda!"
942
+ msgstr ""
943
+
944
+ #: views/partials/welcomeScreenHeader.php:3
945
+ msgid "Our plugin will help you to make your website compliant in minutes."
946
+ msgstr ""
947
+
948
+ #: views/pp-configuration.php:22
949
+ msgid "Setup your privacy and cookie policy on iubenda.com"
950
+ msgstr ""
951
+
952
+ #: views/pp-configuration.php:26 views/tc-configuration.php:30
953
+ msgid "Integration"
954
+ msgstr ""
955
+
956
+ #: views/products-page.php:15
957
+ msgid "It seems that you have not activated any of our services, we recommend you to activate them and increase your level of compliance and avoid risking fines."
958
+ msgstr ""
959
+
960
+ #: views/tc-configuration.php:12
961
+ msgid "Configure your terms and conditions on our website and paste here the embed code to integrate the button on your website."
962
+ msgstr ""
963
+
964
+ #: views/tc-configuration.php:15
965
+ msgid "Configure terms and conditions by"
966
+ msgstr ""
967
+
968
+ #: views/tc-configuration.php:21
969
+ msgid "Paste your terms and conditions embed code here"
970
+ msgstr ""
readme.txt CHANGED
@@ -1,103 +1,137 @@
1
- === iubenda - Cookie and Consent Solution for the GDPR & ePrivacy ===
2
  Contributors: iubenda
3
  Donate link:
4
- Tags: cookies, cookie law, cookie policy, cookie banner, privacy policy, cookie consent, privacy, gdpr, eprivacy
5
- Requires at least: 4.0
6
- Requires PHP: 5.2.4
7
- Tested up to: 5.7.0
8
- Stable tag: 2.5.0
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
12
- An All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions that help to make your website GDPR and ePrivacy compliant.
13
-
14
  == Description ==
15
 
16
- This plugin is an All-in-One approach developed by iubenda, which includes functionalities of two powerful solutions (see below) that help to make your website GDPR and ePrivacy compliant. The plugin lets you automate the implementation of ePrivacy (Cookie Law) and GDPR requirements by providing a fully customizable cookie banner, blocking scripts, and by managing all aspects of cookie consent. It also allows you to record, review, and maintain comprehensive GDPR records of consent for your web-forms.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
  == Cookie Solution ==
19
 
20
- This plugin drastically reduces the need for direct interventions in the code of the site by integrating with iubenda’s Cookie Solution. It provides a fully customizable cookie banner, dynamically generates a cookie policy to [match the services in use on your site](https://www.iubenda.com/en/help/19004-how-to-use-the-site-scanner-from-within-the-generator), and, fully manages cookie-related consent including the blocking of the most common widgets and third-party cookies before consent is received in order to comply with the GDPR and ePrivacy.
21
-
22
- **Key features:**
23
-
24
- * The plugin automatically inserts the iubenda code in the head of every page of the site
25
- * Allows you to automatically or manually block scripts that can install cookies prior to consent, without the need of direct intervention on the code
26
- * Allows you to autodetect and limit prior-blocking and cookie consent requests only to users from the EU where this is a legal requirement while running cookies scripts normally in regions where you are still legally allowed to do so.
27
- * Asynchronously re-activates cookie scripts once consent is collected.
28
- * Handles the display of the cookie banner and cookie policy, allowing you to fully customize the banner to match the look and colors of your site if needed
29
- * California Consumer Privacy Act [(CCPA) Support](https://www.iubenda.com/en/help/21165-ccpa-how-to-add-a-notice-of-collection-and-a-do-not-sell-link)
30
- * Saves user preferences about the use of cookies and displays a clean page (without banner) to users who have already provided their consent
31
- * Integrates with IAB’s [Transparency and Consent Framework](https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework#revenue) (TCF)
32
- * Allows you to provide you users with granular, per-category preference control (e.g. basic functionalities, experience enhancement, targeting & advertising)
33
- * Compatible with Google's Accelerated Mobile Pages (AMP)
34
- * Features an easy-to-use interface for entering custom scripts and iframes
35
- * Detects bots/spiders and serves them a clean page so that your SEO efforts are never compromised
36
-
37
- **The plugin is currently capable of automatically detecting and blocking the following scripts:**
38
-
39
- * Google Analytics
40
- * Google Maps
41
- * Google AdSense
42
- * Google ReCaptcha
43
- * Google Site Search
44
- * Google Tag Manager
45
- * Google oAuth
46
- * Google+ widgets
47
- * Twitter widgets
48
- * Facebook widgets
49
- * Facebook Comments
50
- * YouTube
51
- * Vimeo
52
- * Linkedin widgets
53
- * ShareThis widgets
54
- * Instagram widgets
55
- * AddThis widgets
56
- * Pinterest widgets
57
- * PayPal widgets
58
- * Disqus
59
- * Optimizely
60
- * Neodata
61
- * Criteo
62
- * Outbrain
63
- * Headway
64
- * Codepen
65
- * Freshchat
66
- * Uservoice
67
- * AdRoll
68
- * Olark
69
- * Segment
70
- * Kissmetrics
71
- * Mixpanel
72
- * Pingdom
73
- * Bing
74
- * Elevio
75
 
76
  == Consent Solution ==
77
 
78
- Maintaining valid records of consent is a vital part of privacy compliance in general, and it is specifically required under the GDPR. These records should include a userid, timestamp, consent proof, record of the consenting action, and the legal documents available to the user at the time of consent, among other things. This plugin **is THE most complete solution for recording, sorting and maintaining GDPR records of consent**. The plugin also boasts built-in compatibility with WordPress comment form, Contact Form 7 and WP Forms plugins for your convenience, but can be manually integrated with any type of web-form and can even store consent proofs for consents collected offline (e.g in-store sign-ups) via WP media upload.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
- **Key features:**
81
 
82
- * The plugin detects and identifies all supported forms that are embedded in the website
83
- * It’s auto-compatible with and allows super easy mapping of Contact Form 7, WP Forms, WordPress comment and WooCommerce checkout forms
84
- * It allows manual integration with any type of web-form
85
- * For each consent, track the form/wording the user was prompted with
86
- * Flexibly upload any form of proof of consent or legal notice, including a PDF if consent was collected offline
87
- * It provides a high granularity: map individual form fields, exclude fields (like password inputs), add legal notices available at the time of consent collection, indicate double opt-in, set preferences and more
88
- * REST HTTP API and JS SDK, to give you total control and how and when consent is stored
89
- * Store multiple preferences for each user (e.g. if you have multiple newsletters or opt-ins)
90
- * Features an easy-to-use interface for entering custom scripts and iframes
91
- * It provides API input field for quick and easy activation
92
 
93
- **Some background information**
94
 
95
- If you potentially have any European users, you must comply with laws like the [GDPR](https://www.iubenda.com/en/help/5428-gdpr-guide#consent) and [ePrivacy](https://www.iubenda.com/en/help/6293-cookie-consent-management-faq). These laws are precise in their requirements and technical implementation can be pretty complicated. We've tried to make this process as painless as possible for website and app owners with our suite of compliance software solutions.
96
- Our Cookie and Consent Solution plugin for WordPress simplifies and manages these compliance requirements within a few clicks. This extension works with the iubenda [Cookie Solution](https://www.iubenda.com/en/cookie-solution) and [Consent Solution](https://www.iubenda.com/en/consent-solution).
 
 
 
 
 
 
97
 
98
- **Which languages does iubenda work in currently?**
99
 
100
- * English
 
 
 
 
 
 
101
  * Italian
102
  * French
103
  * Spanish
@@ -106,50 +140,229 @@ Our Cookie and Consent Solution plugin for WordPress simplifies and manages thes
106
  * Dutch
107
  * Russian
108
 
109
- == Installation ==
110
-
111
- * Search in your WordPress plugins admin panel for “iubenda Cookie and Consent Solution”, install it;
112
- * Once the plugin is installed and activated, go to the Admin Panel → iubenda menu where you can select either the Cookie Solution or Consent Solution (depending on which you’d like to set up first).
113
- * **For the Cookie Solution**, you will be asked to paste your script into that field the script is generated from your iubenda account dashboard when you activate the solution. For more information on how to activate the Cookie Solution, see this article (https://www.iubenda.com/en/help/1177-cookie-solution-getting-started#banner).
114
- * At this point the plugin will begin to show your banner on which displays the legal text, the consent options and your cookie policy (link) to users who visit the site for the first time. No need for other configurations;
115
- * Furthermore, the plugin automatically recognizes and blocks cookies that get installed via an extensive list of services such as the YouTube video player, social widgets (e.g the Facebook Like Box) etc. on your site. The full list is included in the “details” above.
116
- * Important note: Scripts can only be automatically blocked when generated from the server side (therefore processed by PHP via WordPress). Scripts that are added to the page via Javascript after page load must be blocked manually. Thankfully, this is fairly easy to do via the Custom Scripts field in the plugin console. Simply enter the custom script or iframe sources you'd like to block within the field, and click on the save changes button. You can find details, examples and further information [here](https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide#blocking-custom-scripts).
117
- * If you’d like to manually block a specific script using a manual “wrap” method, you can use the following:
118
- `<!--IUB-COOKIE-BLOCK-START-->
119
- <iframe src="...
120
- <img src="...
121
- <!--IUB-COOKIE-BLOCK-END-->`
122
- * For elements installed directly within WordPress posts (as opposed to elements integrated at the template level – example footer.php) there are shortcodes available:
123
- `[iub-cookie-policy]
124
- [/iub-cookie-policy]`
125
- * In case youre querying WordPress via API, you can disable our plugin by using the iub_no_parse=true URL parameter, like this: www.example.com/api/get_recent_posts?iub_no_parse=true (http://www.example.com/api/get_recent_posts?iub_no_parse=true).
126
- * **For the Consent Solution**, you will need to paste in your Consent Solution API key. Once you’ve activated the Consent Solution in your iubenda dashboard, you can find your public API key in your dashboard (https://www.iubenda.com/en/dashboard) at [Your website] > Consent Solution > Embed).
 
127
 
128
  == Frequently Asked Questions ==
129
 
130
- **Where can I find help?**
131
- You can find a dedicated support forum thread here [Uservoice forum](https://support.iubenda.com/support/discussions/forums/42000118028) or we're happy to answer at info@iubenda.com.
132
 
133
- **Do you have more guidance, or a demo?**
134
- Here’s a [quick video](https://iubenda.wistia.com/medias/02ie8av6kt) on what the cookie banner looks like and how you can configure it. More details on how to fully set up the Cookie Solution for wordpress [here](https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide).
135
 
136
- Here’s a [quick look](https://iubenda.wistia.com/medias/fsbr465bku) at the Consent Solution dashboard. More details on how to fully set up the Consent Solution for wordpress [here](https://www.iubenda.com/en/help/13083-consent-solution-wordpress-contact-form-7) .
137
 
138
- **Bug reports**
139
- The best way you can help us is by providing as much information as possible, including the use of [wp_debug](https://wordpress.org/support/article/debugging-in-wordpress/).
140
- We will be very happy to receive feedback here: [Uservoice forum](https://support.iubenda.com/support/discussions/forums/42000115771)
141
 
142
- == Screenshots ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
144
- 1. It's as simple as copy-pasting the code from iubenda into the plugin form.
145
- 2. Simply enter you API key and click on autodetect to see all forms eligible for mapping.
146
- 3. The visual configurator lets you fully customize the look and feel of your banner, wording, and consent collection options.
147
- 4. When clicking on the cookie policy link, the user gets a view of the entire cookie policy, where they ultimately can give their consent.
148
- 5. IAB Transparency and consent framework integrated.
149
- 6. IAB Transparency and consent framework integrated.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
 
151
  == Changelog ==
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  = 2.5.0 =
154
  * Integrate with Mailchimp to add it in woo-commerce checkout form.
155
  * Stop parsing scripts in Divi page builder
@@ -315,7 +528,7 @@ We will be very happy to receive feedback here: [Uservoice forum](https://suppor
315
  = 1.15.4 =
316
  * New: Option to block custom scripts and iframes
317
  * Tweak: Update and extend the list of blocked scripts including Google Site Search, Google oAuth, Linkedin widgets, PayPal widgets, Freshchat, Uservoice
318
- , AdRoll, Olark, Segment, Kissmetrics, Mixpanel, Pingdom, Bing and Elevio
319
 
320
  = 1.15.3 =
321
  * Tweak: Update and extend the list of blocked scripts including Pinterest, AddThis, Disqus, Optimizely, Neodata, Criteo, Outbrain, Headway and Codepen
@@ -512,6 +725,5 @@ We will be very happy to receive feedback here: [Uservoice forum](https://suppor
512
 
513
  == Upgrade Notice ==
514
 
515
- = 2.5.0 =
516
- * Integrate with Mailchimp to add it in woo-commerce checkout form.
517
- * Stop parsing scripts in Divi page builder
1
+ === iubenda | All-in-one Compliance for GDPR / CCPA Cookie Consent + more ===
2
  Contributors: iubenda
3
  Donate link:
4
+ Tags: cookie banner, cookie law, eprivacy, gdpr, ukgdpr, ccpa, caloppa, lgpd, dsgvo, rgpd, pecr
5
+ Requires at least: 5.0
6
+ Requires PHP: 7.0.0
7
+ Tested up to: 6.0
8
+ Stable tag: 3.2.5
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
 
 
12
  == Description ==
13
 
14
+ The iubenda plugin is an **all-in-one**, extremely easy to use 360° compliance solution, with text crafted by actual lawyers, that quickly **scans your site and auto-configures to match your specific setup**. It supports the GDPR (DSGVO, RGPD), UK-GDPR, ePrivacy, LGPD, CCPA, CalOPPA, PECR and more.
15
+
16
+ It allows you to:
17
+
18
+ * **⚡️Scan your site and have solutions auto-configured** to match your site's specific needs.
19
+ * 🚀 Easily generate a fully customizable **cookie banner,** **manage cookie consent** and store legally required **GDPR consent proofs** for cookies.
20
+ * Generate a **CCPA notice with working DNSMPI link** as legally required.
21
+ * Activate IABs **TCF to maximize ad earning**.
22
+ * 🚀 Quickly generate a fully customizable **privacy and cookie policy**.
23
+ * **Auto-detect user location and auto-applies the correct data privacy settings** (needed if you have users from multiple regions like the US and the EU).
24
+ * 🚀 Capture, store and manage **GDPR consent records** for your webforms.
25
+ * 🚀 Effortlessly **generate professional Terms and Conditions** to protect you from liabilities and more.
26
+ * **Translate all documents with a single click** (supports 9 languages).
27
+ * Compatible with **Google’s Accelerated Mobile Pages** (AMP)
28
+
29
+ And of course, basic set-up is completely free.
30
+
31
+ [youtube https://www.youtube.com/watch?v=ZmUC66etPbk]
32
+
33
+
34
+ == Features ==
35
+
36
+ This all-in-one plugin lets you integrate all iubenda compliance solutions in a single install and basic set-up is completely free.
37
+
38
+ **⚡️** The plugin **scans your site and auto-configures everything** based on your site's specific needs.
39
+
40
+ **⭐ All our solutions are fully responsive (perfect for all screen sizes) and WCAG Level AAA Compliant.**
41
+
42
+ They’re auto-updated when the law changes so that they’re always up-to-date and our built-in site scanner runs periodic scans on your site and alerts you if it detects something that should be added to your compliance documents.
43
+
44
+ **Our solutions support the GDPR (DSGVO, RGPD), UK-GDPR, ePrivacy, LGPD, CCPA, CalOPPA, PECR and more.**
45
+
46
 
47
  == Cookie Solution ==
48
 
49
+ Includes cookie banner/CCPA notice, and cookie consent management (blocking scripts until consent is collected as legally required). Free basic setup and full CCPA support.
50
+
51
+ * Easy and guided set-up: **Analyzes your site and auto-configures everything** to make set-up as easy as possible.
52
+ * **Fully customizable cookie banner** - change functionality, design, location, colors, add your logo and more.
53
+ * Asynchronously re-activates cookie scripts once consent is collected (**no page reload needed**).
54
+ * Lightning-fast: **won’t affect page performance**.
55
+ * **Auto-detects and blocks a wide range of 3rd party script**s like Google Analytics, Google Maps, Facebook and Instagram widgets, Youtube, Twitter, PayPal, Disqus, Outbrain, AdRoll, Kissmetrics, Freshchat and more.
56
+ * Allows you to provide your users with **granular, per-category preference control** (e.g. basic functionalities, experience enhancement, targeting & advertising)
57
+ * **Google Consent Mode** support.
58
+ * Integrates with IAB’s [Transparency and Consent Framework](https://www.iubenda.com/en/help/7440-enable-preference-management-iab-framework#revenue) (**TCF**) to maximize ad revenue (needed if your site uses ad networks like Google ads and more)
59
+ * Compatible with **Google’s Accelerated Mobile Pages** (AMP)
60
+ * Allows you to auto-detect and **limit prior-blocking and cookie consent requests only to users from the EU** – where this is a legal requirement – while running cookies scripts normally in regions where you are still legally allowed to do so.
61
+ * Features an **easy-to-use interface for entering custom scripts** and iframes
62
+ * Cookie database feature allows you to auto-set **cookie lifetime information**.
63
+ * **Display CCPA notice and opt-out link as required by the** [**California Consumer Privacy Act**](https://www.iubenda.com/en/help/21165-ccpa-how-to-add-a-notice-of-collection-and-a-do-not-sell-link)
64
+ * Provides **cookie consent analytics** for high-traffic sites.
65
+ * **Detects bots/spiders** and serves them a clean page **so that your SEO efforts are never compromised**
66
+
67
+
68
+
69
+ == Privacy and Cookie Policy Generator ==
70
+
71
+ This solution lets you generate professional privacy and cookie policies **in minutes**.
72
+
73
+
74
+ * Super **easy interface, guided process, fully customizable**
75
+ * All **legal text written by actual legal professionals**
76
+ * Quick select from **over 1900 clauses or create custom clauses**
77
+ * Activate **cookie policy in a single click**
78
+ * Site Scanner to quickly **detect which services/ clauses you need to add to your policies**.
79
+ * **One-click translation**. 9 languages supported: English-US, English-UK, Italian, French, Spanish, German, Portuguese (Brazilian), Russian, Dutch.
80
+ * One-click activation for **country/ region-specific text**.
81
+ * Compatible with **Google’s Accelerated Mobile Pages** (AMP)
82
+ * Documents are **remotely updated when legal requirements change**
83
+ * Manage documents for **multiple sites from a single dashboard**
84
+ * **White label option** allows you to seamlessly integrate your privacy policy text into the body of your webpage
85
+
86
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  == Consent Solution ==
89
 
90
+ Collect consent, document opt-ins and opt-outs via your web forms. This solution smoothly integrates with your consent collection forms to auto-create legally required GDPR and LGPD consent records.
91
+
92
+ **About Legal requirements and Consent Records**
93
+ These records should include a userid, timestamp, consent proof, record of the consenting action, and the legal documents available to the user at the time of consent, [among other things](https://www.iubenda.com/en/help/5428-gdpr-guide#records-of-consent).
94
+
95
+ This plugin is **THE most complete solution for recording, sorting and maintaining GDPR & LGPD records of consent**.
96
+
97
+ The plugin also boasts built-in compatibility with WordPress comment form, Contact Form 7 and WP Forms plugins for your convenience, but can be manually integrated with any type of web-form and can even store consent proofs for consents collected offline (e.g in-store sign-ups) via WP media upload.
98
+
99
+
100
+ * It’s **auto-compatible with and allows super easy mapping** of Contact Form 7, WP Forms, WordPress comment, Mailchimp for WordPress, Germanized for WooCommerce and WooCommerce checkout forms
101
+ * Also allows manual integration with **any type of web-form**
102
+ * For each consent, **track the form/wording the user was prompted** with at the time of the consent collection
103
+ * Accurate **timestamping and recording of consenting action**
104
+ * Flexibly **upload any form of proof of consent or legal notice, including a PDF if consent was collected offline**
105
+ * It provides a **high granularity**: map individual form fields, exclude fields (like password inputs), add legal notices available at the time of consent collection, indicate double opt-in, set preferences and more
106
+ * REST **HTTP API and JS SDK, to give you total control** and how and when consent is stored
107
+ * Store **multiple preferences for each user** (e.g. if you have multiple newsletters or opt-ins)
108
+ * Features an **easy-to-use interface for entering custom scripts and iframes**
109
+ * It provides **API input field for quick and easy activation**
110
 
111
+ == Terms and Conditions ==
112
 
113
+ Create your terms and conditions in minutes.
 
 
 
 
 
 
 
 
 
114
 
115
+ Customizable from hundreds of combinations, available in 9 languages, powerful and precise — our solution is capable of handling even the most complex, individual scenarios. Optimized for e-commerce, marketplace, SaaS, apps and more.
116
 
117
+ * Easy, **guided set-up**
118
+ * Expertly crafted at the hands of our **international legal team**
119
+ * Pre-defined scenarios modules for everything from basic **disclaimers to copyright licenses, account terminations rules, product-comparison, age-related disclaimers, virtual currency,** and more.
120
+ * Plug-and-go **integrations for popular eCommerce solutions like Shopify, Wix, Squarespace, Weebly, WooCommerce, PrestaShop** and more
121
+ * **One-click translation** (9 languages supported EN-US, EN-UK, IT, FR, ES, DE, PT-BR, RU, NL)
122
+ * Compatible with **Google’s Accelerated Mobile Pages** (AMP)
123
+ * Manage documents for **multiple sites from a single dashboard**
124
+ * **White label option** allows you to seamlessly integrate your privacy policy text into the body of your webpage
125
 
126
+ == About iubenda ==
127
 
128
+ We help companies all over the world to keep their websites and apps compliant with international privacy laws for optimal peace of mind. [More here](https://www.iubenda.com/).
129
+
130
+ == Languages ==
131
+
132
+ **Our services are currently available in the following languages:**
133
+
134
+ * English US and UK
135
  * Italian
136
  * French
137
  * Spanish
140
  * Dutch
141
  * Russian
142
 
143
+ == Support & Updates ==
144
+
145
+ All our solutions and plugins are **regularly updated and well maintained** to ensure that you’re always protected.
146
+
147
+ You can access our friendly support in multiple languages (currently EN, IT, DE, FR, PT-BR) via [info@iubenda.com](mailto:info@iubenda.com), our [onsite chat](https://www.iubenda.com/) *(just click the green Help button on the right side of the page)*.
148
+
149
+ **Other links:**
150
+
151
+ * [Documentation](https://www.iubenda.com/en/help)
152
+ * [Feedback & Support forum](https://support.iubenda.com/)
153
+
154
+ == Screenshots ==
155
+
156
+ 1. Scan and Automate your website's legal requirements
157
+ 2. Easily customize your cookie banner & consent settings to suit your branding and needs
158
+ 3. Cookie banner? Yes, but not only. Meet all the requirements
159
+ 4. If you're already one of 1 M+ iubenda users you can integrate all solutions with WordPress in minutes
160
+ 5. Capture, store and manage GDPR & LGPD consent records for your webforms
161
+ 6. Auto-detects and blocks all the most common trackers prior to consent
162
 
163
  == Frequently Asked Questions ==
164
 
165
+ = Updating to version 3 =
 
166
 
167
+ If you are experiencing troubles updating to the latest version, please ensure that your cookie banner is correctly activated and configured, and you've cleaned up you WordPress cache. In case of emergency, you can safely rollback to the previous version by [using WP Rollback](https://www.iubenda.com/en/help/1215-cookie-solution-wordpress-plugin-installation-guide#further-information-1).
 
168
 
 
169
 
170
+ = Do you have a Knowledge base or documentation? =
 
 
171
 
172
+ Our extensive documentation makes it easy for you to learn all you need to know about compliance and how to use iubenda’s products on your site or app. **[You can access it here](https://www.iubenda.com/en/help)**. You can also visit our support forum [here](https://support.iubenda.com/support/home).
173
+
174
+
175
+ = How do I know which laws apply to me and what I need to comply with? =
176
+
177
+ A good rule of thumb is to always comply with the laws of the region where you are based as well as the region or country in which the users you target are based.
178
+
179
+ 📌 However, for an even easier, more specific way to tell which laws apply to you, you can [simply take this 1-minute quiz](https://www.iubenda.com/en/help#quiz).
180
+
181
+
182
+ = Do I really need a cookie banner or cookie notice? =
183
+
184
+ If you’re based in the European Union – including the UK – or target EU users, and your website uses [cookies or trackers](https://www.iubenda.com/en/help/22419-how-to-identify-the-cookies-used-by-your-website) (which it most likely does), then, yes, you do need a cookie notice.
185
+
186
+ = Why do I need a privacy policy? =
187
+
188
+ A privacy policy is a legal requirement almost everywhere in the world. You need it because under most countries’ laws, you’re legally required to inform your users about the data you’re collecting and how you’re processing them.
189
+
190
+ Find out what should be in a privacy policy [here](https://www.iubenda.com/en/help/6187-what-should-be-in-a-privacy-policy).
191
+
192
+ = Are terms and conditions necessary? =
193
+
194
+ While Terms and conditions aren’t always legally mandatory, they’re [always recommended](https://www.iubenda.com/en/help/2859-terms-and-conditions-when-are-they-needed). They help you protect you and your business from legal liabilities.
195
+
196
+ However, please note that if you run an **e-commerce, then you’ll most likely need terms and conditions**, as they usually contain legally mandatory information related to commerce.
197
+
198
+
199
+ = What is the GDPR and UK-GDPR (DSGVO & RGPD) =
200
+
201
+ GDPR stands for General Data Protection Regulation (Regulation (EU) 2016/679). The GDPR specifies how personal data should be lawfully processed (including how it’s collected, used, protected or interacted with in general).
202
 
203
+ While it was still an EU member state, the UK was very instrumental in the creation of the GDPR and therefore, Post-Brexit, has adopted the UK-GDPR which currently is essentially the same as the European GDPR.
204
+
205
+ DSGVO & RGPD are, respectively, the German and Spanish translations of the English acronym of the General Data Protection Regulation (GDPR).
206
+
207
+ [Learn more about the GDPR here.](https://www.iubenda.com/en/help/5428-gdpr-guide)
208
+
209
+ = What is the ePrivacy or Cookie Law? =
210
+
211
+ In effect since 2002, the ePrivacy Directive (Cookie Law) was created to put guidelines in place for electronic privacy, including email marketing and cookie usage.
212
+
213
+ Under the Cookie law, organizations that target users from the EU must **inform users about data collection activities** and give them the option to **choose whether it’s allowed or not**.
214
+
215
+
216
+ This means that if **your site/app** (or **any third-party service** used by your site/app) uses cookies or similar technologies, you must first obtain valid consent **prior** to the installation of those cookies, except where they fall into [the exempt category](https://www.iubenda.com/en/help/5525#exemptions).
217
+ In practice, you’ll need to:
218
+
219
+ * show a **cookie banner** at the user’s first visit;
220
+ * implement a **cookie policy** that contains all required information;
221
+ * allow the user to provide or refuse **consent;**
222
+ * block cookie/ tracker scripts from running until consent is provided.
223
+
224
+ You can learn more about [how the ePrivacy and GDPR interact in regards to cookies and trackers here](https://www.iubenda.com/en/help/5525-cookies-gdpr-requirements).
225
+
226
+ = What is PECR =
227
+
228
+ The Privacy and Electronic Communications Regulations 2003 (PECR) is the UK's implementation of the EU's ePrivacy directive and set's out rules for electronic privacy
229
+
230
+ = What are the CCPA and CalOPPA =
231
+
232
+ California’s most well known Privacy Laws are some of the most robust in the United States. They are both relevant to you if you likely have users that are based in the state of California.
233
+
234
+ **California Online Privacy Protection Act (CalOPPA) - since 2002**
235
+ Law requires commercial websites and services to have a privacy policy.
236
+ The document:
237
+
238
+ * Must clearly state what info is collected and who it's shared with.
239
+ * Must disclose how a business’s website or online service responds to Do Not Track signals from Web browsers.
240
+ * Must include the effective date of the Privacy Policy and more.
241
+
242
+ **California Consumer Protection Act (CCPA)**
243
+
244
+ * Grants users additional rights such as the right to be informed and the right to access information you’ve collected about them - but perhaps, most relevant to marketing is the right to Opt-out.
245
+ * Under the CCPA, users have the right to opt-out of any processing that can be considered a *sale* of their data. Sale, in this context, is quite broad and simply means *sharing for any profit- monetary or otherwise*.
246
+
247
+ ***Note that in the case of minors, they are granted the right to Opt-in.** *[More about the CCPA here.](https://www.iubenda.com/en/help/19133-ccpa-compliance-guide)
248
+
249
+ = What is the LGPD? =
250
+
251
+ The Brazilian General Data Protection Law, the ***Lei Geral de Proteção de Dados Pessoais***, (LGPD) can be considered as Brazil’s answer to the GDPR – with the Brazilian law aligning with the EU Regulation in many ways, while differing in others. [You can learn more about it here](https://www.iubenda.com/en/help/26706-lgpd-guide).
252
+
253
+ * * *
254
 
255
  == Changelog ==
256
 
257
+ = 3.2.5 =
258
+ * Bugfix: Handle error on plugin activation
259
+
260
+ = 3.2.4 =
261
+ * Add PCP and T&C embedding section
262
+
263
+ = 3.2.3 =
264
+ * Support PHP 8
265
+
266
+ = 3.2.2 =
267
+ * Add analytics to the plugin
268
+
269
+ = 3.2.1 =
270
+ * Bugfix: Show Iubenda legal block in WP Block Editor
271
+
272
+ = 3.2.0 =
273
+ * Set EN as default language on QuickGenerator
274
+ * Bugfix: PCP detection not correctly rated
275
+ * Translate plugin into [IT, FR, PT-BR, ES, NL]
276
+ * Pre-select website language on the language setup dropdown
277
+
278
+ = 3.1.2 =
279
+ * Fix issue in radar score after resetting plugin data
280
+
281
+ = 3.1.1 =
282
+ * Revert: Add the ability to include PP and TC buttons for default WP
283
+
284
+ = 3.1.0 =
285
+ * Move plugin settings to a separate page
286
+ * Add the ability to include PP and TC buttons for default WP
287
+
288
+ = 3.0.10 =
289
+ * Add a link to show the rating calculation page
290
+ * Show Notification to encourage the user to verify his account
291
+
292
+ = 3.0.9 =
293
+ * Move www.googletagmanager.com/gtag/js to analytics #4
294
+
295
+ = 3.0.8 =
296
+ * Fix SSRF security vulnerability
297
+ * Remove googletagmanager.com/gtm.js from basic interaction
298
+
299
+ = 3.0.7 =
300
+ * Support WP 6.0
301
+ * Stop forcing purposes from Quick Generator widget
302
+
303
+ = 3.0.6 =
304
+ * Bugfix: Run upgrade process after using a new WP version
305
+ * Bugfix: Issue in integration with CF7
306
+
307
+ = 3.0.5 =
308
+ * Allow creating CS from QG widget
309
+
310
+ = 3.0.4 =
311
+ * Bugfix: Stop parsing code in Cookie banner
312
+ * Bugfix: Errors on plugin update
313
+
314
+ = 3.0.3 =
315
+ * Tweak: Prefix array_get with iub_ to avoid break comptability with other plugins
316
+
317
+ = 3.0.2 =
318
+ * Bugfix: remove data on plugin deactivation
319
+
320
+ = 3.0.1 =
321
+ * Bugfix: Fix issue after updating to new plugin
322
+
323
+ = 3.0.0 =
324
+ * New: Support Privacy Policy
325
+ * New: Support Terms and Conditions
326
+ * New: Generate your cookie solution with few clicks
327
+ * New: Use Radar to scan current website
328
+
329
+ = 2.5.91 =
330
+ * Bugfix: save CF7 Consent
331
+
332
+ = 2.5.9 =
333
+ * Support WP 5.9
334
+ * Set Skip parsing default to false
335
+ * Add filter after parsing forms to allow others to extend the Cons forms
336
+
337
+ = 2.5.8 =
338
+ * Bugfix: restrict recaptcha field in ConS
339
+
340
+ = 2.5.7 =
341
+ * Bugfix: Pagination into the consent solution tab
342
+
343
+ = 2.5.6 =
344
+ * Disable automatic block on page builder pages
345
+
346
+ = 2.5.5 =
347
+ * Disable CS on Divi builder page
348
+
349
+ = 2.5.4 =
350
+ * Cast preferences field into boolean in WPForms.
351
+ * Fix preference field not saved in CF7.
352
+ * Integrate with Germanized for WooCommerce in ConS.
353
+ * Allow only the mapped forms in ConS.
354
+ * Allow mapping the ConS forms without specifying the preferences field.
355
+
356
+ = 2.5.3 =
357
+ * Fix sub sub domain of generated AMP file.
358
+ * Add settings anchor in plugin page
359
+
360
+ = 2.5.2 =
361
+ * Tweak: Disallow using custom CSS in AMP
362
+
363
+ = 2.5.1 =
364
+ * Fix: Track the selected checkboxes into wpforms
365
+
366
  = 2.5.0 =
367
  * Integrate with Mailchimp to add it in woo-commerce checkout form.
368
  * Stop parsing scripts in Divi page builder
528
  = 1.15.4 =
529
  * New: Option to block custom scripts and iframes
530
  * Tweak: Update and extend the list of blocked scripts including Google Site Search, Google oAuth, Linkedin widgets, PayPal widgets, Freshchat, Uservoice
531
+ , AdRoll, Olark, Segment, Kissmetrics, Mixpanel, Pingdom, Bing and Elevio
532
 
533
  = 1.15.3 =
534
  * Tweak: Update and extend the list of blocked scripts including Pinterest, AddThis, Disqus, Optimizely, Neodata, Criteo, Outbrain, Headway and Codepen
725
 
726
  == Upgrade Notice ==
727
 
728
+ = 3.2.5 =
729
+ * Bugfix: Handle error on plugin activation
 
views/cons-configuration.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+
4
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/siteInfo.php'; ?>
5
+
6
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/breadcrumb.php'; ?>
7
+ <form class="ajax-form-to-options">
8
+ <input hidden name="iubenda_section_name" value="iubenda_consent_solution">
9
+ <input hidden name="iubenda_section_key" value="cons">
10
+ <input hidden name="action" value="ajax_save_options">
11
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
12
+ <div class="p-4 p-lg-5 text-gray">
13
+
14
+ <p><?php _e('Activate <strong>Consent Solution</strong> on our website in your iubenda dashboard and paste here the <strong>API key</strong> to integrate it on your website.', 'iubenda') ?></p>
15
+ <div class="d-flex align-items-center">
16
+ <div class="steps flex-shrink mr-3">1</div>
17
+ <p class="text-bold"> <?php _e('Activate & Configure Consent Solution by', 'iubenda') ?>
18
+ <a target="_blank" href="<?php echo iubenda()->settings->links['flow_page']; ?>" class="link-underline text-gray-lighter"> <?php _e('clicking here', 'iubenda') ?></a>
19
+ </p>
20
+ </div>
21
+ <div class="d-flex align-items-center">
22
+ <div class="steps flex-shrink mr-3">2</div>
23
+ <p class="text-bold"> <?php _e('Paste your public API key here', 'iubenda') ?>
24
+ </p>
25
+ </div>
26
+
27
+ <div class="subOptions">
28
+ <div class="paste-api-form" tabindex="0">
29
+ <input class="paste-api-input" id="public_api_key" name="iubenda_consent_solution[public_api_key]" type="text" placeholder="<?php _e('Your iubenda Javascript library public API key', 'iubenda'); ?>" value="<?php echo iub_array_get(iubenda()->options['cons'], 'public_api_key') ? iub_array_get(iubenda()->options['cons'], 'public_api_key') : false ?>" required>
30
+ <button type="submit" id="public_api_button" class="btn btn-xs btn-green-secondary">
31
+ <span class="button__text"><?php _e('Confirm API', 'iubenda') ?></span>
32
+ </button>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="text-right mt-2">
37
+ <a target="_blank" href="<?php echo iubenda()->settings->links['how_generate_cons']; ?>" class="link link-helper"><span class="tooltip-icon mr-2">?</span><?php _e('Where can I find this code?', 'iubenda') ?></a>
38
+ </div>
39
+
40
+ <div id="public-api-key-div" class="<?php echo iub_array_get(iubenda()->options['cons'], 'public_api_key') ?: 'hidden'; ?>">
41
+ <div class="d-flex align-items-center">
42
+ <div class="steps flex-shrink mr-3">3</div>
43
+ <p class="text-bold">
44
+ <?php _e('Add forms', 'iubenda') ?>
45
+ </p>
46
+ </div>
47
+ <div class="ml-3 pl-4 mb-5">
48
+ <div id="auto-detect-parent-div">
49
+ <section id="auto-detect-forms">
50
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/auto_detect_forms.php'; ?>
51
+ </section>
52
+ </div>
53
+ <a tabindex="-1" href="<?php echo esc_url( add_query_arg( array( 'view' => 'cons-configuration', 'action' => 'autodetect' ), iubenda()->base_url ) ) ?>" class="btn btn-xs btn-gray-outline mt-2 auto-detect-forms"><?php _e('Auto-detect forms', 'iubenda') ?></a>
54
+ </div>
55
+ </div>
56
+
57
+ </div>
58
+ <hr>
59
+ <div class="p-4 d-flex justify-content-end">
60
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'products-page'), iubenda()->base_url)) ?>'"/>
61
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
62
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
63
+ </button>
64
+ </div>
65
+ </form>
66
+ </div>
67
+
68
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/cons-single-form.php ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+
4
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/siteInfo.php'; ?>
5
+
6
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/breadcrumb.php'; ?>
7
+
8
+ <form id="postbox-container-2" action="options.php" method="post">
9
+ <?php
10
+ settings_fields( $this->tabs['cons']['key'] );
11
+ do_settings_sections( $this->tabs['cons']['key'] );
12
+ add_settings_section( 'iubenda_consent_form', __( 'Field Mapping', 'iubenda' ), array( $this, 'iubenda_consent_form' ), 'iubenda_consent_solution' );
13
+
14
+ $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
15
+ $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : false;
16
+
17
+ if ( ! $form )
18
+ return;
19
+
20
+ $status = isset($form->post_status) && in_array($form->post_status, array_keys(iubenda()->forms->statuses)) ? esc_attr($form->post_status) : 'publish';
21
+ $subject = isset($form->form_subject) && is_array($form->form_subject) ? array_map('esc_attr', $form->form_subject) : array();
22
+ $preferences = isset($form->form_preferences) && is_array($form->form_preferences) ? array_map('esc_attr', $form->form_preferences) : array();
23
+ $exclude = isset($form->form_exclude) && is_array($form->form_exclude) ? array_map('esc_attr', $form->form_exclude) : array();
24
+ $legal_notices = isset($form->form_legal_notices) && is_array($form->form_legal_notices) ? array_map('esc_attr', $form->form_legal_notices) : array();
25
+
26
+ $available_fields = array();
27
+
28
+ if (!empty($form->form_fields) && is_array($form->form_fields)) {
29
+ foreach ($form->form_fields as $index => $form_field) {
30
+ if (is_array($form_field)) {
31
+ // print_r( $form_field );
32
+ $available_fields[] = $form_field['label'] . ' (' . $form_field['type'] . ')';
33
+ } else {
34
+ $available_fields[] = $form_field;
35
+ }
36
+ }
37
+ }
38
+ echo '
39
+ <input type="hidden" value="'.$form_id.'" name="form_id">
40
+ <div class="px-4 px-lg-5">
41
+ <div class="py-5">
42
+ <div class="d-block d-lg-flex justify-content-between mb-4">
43
+ <div class="d-block d-lg-flex align-items-center text-center text-lg-left">
44
+ <h3 class="m-0 mb-4">'.__( 'Map fields', 'iubenda' ).'</h3>
45
+ </div>
46
+ <div class="d-block d-lg-flex align-items-center text-center text-lg-right">
47
+ <div class="misc-pub-section misc-pub-post-status p-0">
48
+ <label for="status">' . __( 'Status', 'iubenda' ) . ':</label>
49
+ <div id="status-select" class="" style="margin: 3px 0 0;">
50
+ <select id="status" name="status">';
51
+ foreach ( iubenda()->forms->statuses as $name => $label ) {
52
+ echo '<option value="' . $name . '"' . selected( $form->post_status, $name, true ) . '>' . $label . '</option>';
53
+ }
54
+ echo '
55
+ </select>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <h4 class="m-0 mb-2">' . __( 'Subject fields', 'iubenda' ) . ' <span class="required">(required)</span></h4>
62
+ <p class="mb-3 description">' . __( 'Subject fields allow you to store a series of identifying values about your individual subjects/users. Please map the subject field with the corresponding form fields where applicable.', 'iubenda' ) . '</p>
63
+ <table class="widefat mb-4 subject-table">
64
+ <thead>
65
+ <td class="label">' . __( 'Subject field', 'iubenda' ) . '</td>
66
+ <td class="label">' . __( 'Form field', 'iubenda' ) . '</td>
67
+ </thead>
68
+ <tbody>';
69
+ foreach ( $this->subject_fields as $field_name => $field_label ) {
70
+ $selected = isset( $subject[$field_name] ) ? $subject[$field_name] : '';
71
+ $none = $field_name == 'id' ? __( 'Autogenerated', 'iubenda' ) : __( 'None', 'iubenda' );
72
+
73
+ echo '
74
+ <tr class="subject-field options-field">
75
+ <td>' . $field_name . ' (' . $field_label . ')' . '</td>
76
+ <td>
77
+ <select class="subject-fields-select select-' . $field_name . '" name="subject[' . $field_name . ']">
78
+ <option value="" ' . selected( $selected, '', false ) . '>' . $none . '</option>';
79
+ if ( ! empty( $form->form_fields ) ) {
80
+ foreach ( $form->form_fields as $index => $form_field ) {
81
+ // get field data
82
+ $form_field_value = is_array( $form_field ) ? $index : $form_field;
83
+ $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
84
+ $form_field_selected = is_array( $form_field ) ? $index : $form_field;
85
+
86
+ echo '<option value="' . $form_field_value . '" ' . selected( $selected, $form_field_selected, false ) . '>' . $form_field_label . '</option>';
87
+ }
88
+ }
89
+ echo '
90
+ </select>
91
+ </td>
92
+ </tr>';
93
+ }
94
+ echo '
95
+ </tbody>
96
+ </table>
97
+ <br>
98
+ <h4 class="m-0 mb-2">' . __( 'Preferences fields', 'iubenda' ) . '</h4>
99
+ <p class="mb-3 description">' . __( 'Preferences fields allow you to store a record of the various opt-ins points at which the user has agreed or given consent, such as fields for agreeing to terms and conditions, newsletter, profiling, etc.', 'iubenda' ) . '</p>
100
+ <table class="widefat mb-4 preferences-table">
101
+ <thead>
102
+ <td class="label">' . __( 'Preferences field', 'iubenda' ) . '</td>
103
+ <td class="label">' . __( 'Form field', 'iubenda' ) . '</td>
104
+ </thead>
105
+ <tbody>';
106
+ echo '
107
+ <tr id="preferences-field-template" class="template-field" style="display: none;">
108
+ <td><input type="text" class="preferences-inputs regular-text" value="" name="preferences[__PREFERENCE_ID__][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" disabled/></td>
109
+ <td>
110
+ <select class="preferences-inputs preferences-fields-select select-' . $field_name . '" name="preferences[__PREFERENCE_ID__][value]" disabled>';
111
+ if ( ! empty( $form->form_fields ) ) {
112
+ foreach ( $form->form_fields as $index => $form_field ) {
113
+ // get field data
114
+ $form_field_value = is_array( $form_field ) ? $index : $form_field;
115
+ $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
116
+
117
+ echo '<option value="' . $form_field_value . '">' . $form_field_label . '</option>';
118
+ }
119
+ }
120
+ echo '
121
+ </select>
122
+ <a href="javascript:void(0)" class="remove-preferences-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
123
+ </td>
124
+ </tr>';
125
+ if ($preferences) {
126
+ $index = 0;
127
+
128
+ foreach ($preferences as $field_name => $field_value) {
129
+ $selected = isset($preferences[$field_name]) ? $preferences[$field_name] : '';
130
+
131
+ echo '
132
+ <tr class="preferences-field options-field">
133
+ <td><input type="text" class="regular-text" value="' . $field_name . '" name="preferences[' . $index . '][field]" placeholder="' . __('Enter field name', 'iubenda') . '" /></td>
134
+ <td>
135
+ <select class="preferences-fields-select select-' . $field_name . '" name="preferences[' . $index . '][value]">';
136
+ if (!empty($form->form_fields)) {
137
+ foreach ($form->form_fields as $index => $form_field) {
138
+ // get field data
139
+ $form_field_value = is_array($form_field) ? $index : $form_field;
140
+ $form_field_label = is_array($form_field) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
141
+ $form_field_selected = is_array($form_field) ? $index : $form_field;
142
+
143
+ echo '<option value="' . $form_field_value . '" ' . selected($selected, $form_field_selected, false) . '>' . $form_field_label . '</option>';
144
+ }
145
+ }
146
+ echo '
147
+ </select>
148
+ <a href="javascript:void(0)" class="remove-preferences-field button-secondary" title="' . __('Remove', 'iubenda') . '">-</a>
149
+ </td>
150
+ </tr>';
151
+ $index++;
152
+ }
153
+ }
154
+ echo '
155
+ <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-preferences-field button-secondary">' . __( 'Add New Preference', 'iubenda' ) . '</a></td></tr>
156
+ </tbody>
157
+ </table>
158
+ <br>
159
+ <h4 class="m-0 mb-2">' . __( 'Exclude fields', 'iubenda' ) . '</h4>
160
+ <p class="mb-3 description">' . __( 'Exclude fields allow you to create a list of fields that you would like to exclude from your Consent Solution recorded proofs (for e.g. password or other fields not related to the consent).', 'iubenda' ) . '</p>
161
+
162
+ <table class="widefat mb-4 exclude-table">
163
+ <thead>
164
+ <td class="label">' . __( 'Exclude field', 'iubenda' ) . '</td>
165
+ <td class="label"></td>
166
+ </thead>
167
+ <tbody>';
168
+ echo '
169
+ <tr id="exclude-field-template" class="template-field" style="display: none;">
170
+ <td>
171
+ <select class="exclude-fields-select select-' . $field_name . '" name="exclude[__EXCLUDE_ID__][field]" disabled>';
172
+ if ( ! empty( $form->form_fields ) ) {
173
+ foreach ( $form->form_fields as $index => $form_field ) {
174
+ // get field data
175
+ $form_field_value = is_array( $form_field ) ? $index : $form_field;
176
+ $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
177
+
178
+ echo '<option value="' . $form_field_value . '">' . $form_field_label . '</option>';
179
+ }
180
+ }
181
+ echo '
182
+ </select>
183
+ <a href="javascript:void(0)" class="remove-exclude-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
184
+ </td>
185
+ </tr>';
186
+ if ( $exclude ) {
187
+ $index = 0;
188
+ foreach ( $exclude as $index => $field_name ) {
189
+ $selected = isset( $exclude[$index] ) ? $exclude[$index] : '';
190
+
191
+ echo '
192
+ <tr class="exclude-field options-field">
193
+ <td>
194
+ <select class="exclude-fields-select select-' . $field_name . '" name="exclude[' . $index . '][field]">';
195
+ if ( ! empty( $form->form_fields ) ) {
196
+ foreach ( $form->form_fields as $index => $form_field ) {
197
+ // get field data
198
+ $form_field_value = is_array( $form_field ) ? $index : $form_field;
199
+ $form_field_label = is_array( $form_field ) ? $form_field['label'] . ' (' . $form_field['type'] . ')' : $form_field;
200
+ $form_field_selected = is_array( $form_field ) ? $index : $form_field;
201
+
202
+ echo '<option value="' . $form_field_value . '" ' . selected( $selected, $form_field_selected, false ) . '>' . $form_field_label . '</option>';
203
+ }
204
+ }
205
+ echo '
206
+ </select>
207
+ <a href="javascript:void(0)" class="remove-exclude-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a>
208
+ </td>
209
+ <td></td>
210
+ </tr>';
211
+
212
+ $index++;
213
+ }
214
+ }
215
+ echo '
216
+ <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-exclude-field button-secondary">' . __( 'Add New Exclude', 'iubenda' ) . '</a></td></tr>
217
+ </tbody>
218
+ </table>
219
+
220
+ <br>
221
+ <h4 class="m-0 mb-2">' . __( 'Legal documents', 'iubenda' ) . '</h4>
222
+ <p class="mb-3 description">' . __( 'In general, it\'s important that you declare which legal documents are being agreed upon when each consent is collected. However, if you use iubenda for your legal documents, it is *required* that you identify the documents by selecting them here.', 'iubenda' ) . '</p>
223
+ <table class="widefat mb-4 legal_notices-table">
224
+ <thead>
225
+ <td class="label">' . __( 'Identifier', 'iubenda' ) . '</td>
226
+ <td class="label"></td>
227
+ </thead>
228
+ <tbody>';
229
+
230
+ // default identifiers
231
+ foreach ( $this->legal_notices as $index => $field_name ) {
232
+ echo '
233
+ <tr class="legal_notices-field default-field">
234
+ <td>' . ( $index === 0 ? '<p class="description">' . __( 'Please select each legal document available on your site.', 'iubenda' ) . '</p>' : '' ) . '<label for="legal_notices-default-field=' . $index . '"><input id="legal_notices-default-field=' . $index . '" type="checkbox" value="' . $field_name . '" name="legal_notices[' . $index . '][field]"' . checked( in_array( $field_name, $legal_notices, true ), true, false ) . 'placeholder="' . __( 'Enter field name', 'iubenda' ) . '" />' . $field_name . '</label></td>
235
+ <td></td>
236
+ </tr>';
237
+ }
238
+
239
+ $index++;
240
+
241
+ // custom identifiers
242
+ echo '
243
+ <tr id="legal_notices-field-template" class="template-field" style="display: none;">
244
+ <td><input type="text" value="" name="legal_notices[__LEGAL_NOTICE_ID__][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" class="regular-text legal-notices-inputs" disabled /> <a href="javascript:void(0)" class="remove-legal_notices-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a></td>
245
+ <td></td>
246
+ </tr>';
247
+
248
+ echo '
249
+ <tr>
250
+ <td colspan="2"><p class="description" style="margin-bottom: 0;">' . __( 'Alternatively, you may add your own custom document identifiers.', 'iubenda' ) . '</p></td>
251
+ </tr>';
252
+
253
+ if ( $legal_notices ) {
254
+ foreach ( $legal_notices as $field_name ) {
255
+ if ( in_array( $field_name, $this->legal_notices, true ) )
256
+ continue;
257
+
258
+ echo '
259
+ <tr class="legal_notices-field options-field">
260
+ <td><input type="text" class="regular-text" value="' . $field_name . '" name="legal_notices[' . $index . '][field]" placeholder="' . __( 'Enter field name', 'iubenda' ) . '" /> <a href="javascript:void(0)" class="remove-legal_notices-field button-secondary" title="' . __( 'Remove', 'iubenda' ) . '">-</a></td>
261
+ <td></td>
262
+ </tr>';
263
+
264
+ $index++;
265
+ }
266
+ }
267
+ echo '
268
+ <tr class="submit-field"><td colspan="2"><a href="javascript:void(0)" class="add-legal_notices-field button-secondary">' . __( 'Add New Document', 'iubenda' ) . '</a></td></tr>';
269
+ echo '
270
+ </tbody>
271
+ </table>
272
+ </div>
273
+ </div>';
274
+ ?>
275
+ <hr>
276
+ <div class="p-4 d-flex justify-content-end">
277
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'cons-configuration'), iubenda()->base_url)) ?>'"/>
278
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
279
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
280
+ </button>
281
+ </div>
282
+ </form>
283
+ </div>
284
+
285
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/cs-configuration.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/siteInfo.php'; ?>
4
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/breadcrumb.php'; ?>
5
+ <form class="ajax-form-to-options">
6
+ <input hidden name="iubenda_section_name" value="iubenda_cookie_law_solution">
7
+ <input hidden name="iubenda_section_key" value="cs">
8
+ <input hidden name="action" value="ajax_save_options">
9
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
10
+ <div class="p-4 p-lg-5">
11
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/csGeneralSettings.php'; ?>
12
+ </div>
13
+ <hr>
14
+ <div class="p-4 d-flex justify-content-end">
15
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'products-page'), iubenda()->base_url)) ?>'"/>
16
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
17
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
18
+ </button>
19
+ </div>
20
+ </form>
21
+ </div>
22
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_ops_embed_invalid.php'; ?>
23
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/frontpage.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+ <div class="main-box main-box__bg text-center">
3
+ <div id="frontpage-main-box" class="p-5">
4
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/frontpage_main_box.php'; ?>
5
+ </div>
6
+ <hr>
7
+ <div class="welcome-screen-footer p-5">
8
+ <h3 class="text-md text-normal m-0 mb-3"><?php _e("Let's configure your website for compliance.", 'iubenda') ?></h3>
9
+ <a class="btn btn-green-primary btn-lg show-modal" data-modal-name="#modal-setup-screen" href="javascript:void(0)" onclick="_paq.push(['trackEvent', 'Click', 'Help me get compliant!']);"><?php _e('Help me get compliant!', 'iubenda') ?></a>
10
+ </div>
11
+ </div>
12
+
13
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/footer.php'; ?>
14
+ <div id="modal-setup-screen" class="modal">
15
+ <div class="modal__window modal__window--md p-4 p-lg-5">
16
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_sync.php'; ?>
17
+ </div>
18
+ </div>
19
+
20
+ <!-- Modal pp created-->
21
+ <div id="modal_pp_created" class="modal">
22
+ <div class="modal__window modal__window--md p-4 p-lg-5">
23
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_pp_created.php'; ?>
24
+ </div>
25
+ </div>
26
+
27
+ <!-- Modal Almost There -->
28
+ <div id="modal-have-existing-products" class="modal modal--xs">
29
+ <div class="modal__window modal__window--md p-4 p-lg-5">
30
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_almost_there.php'; ?>
31
+ </div>
32
+ </div>
33
+
34
+ <!-- Modal Select language -->
35
+ <div id="modal-select-language" class="modal modal--xs">
36
+ <div class="modal__window modal__window--md p-4 p-lg-5">
37
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_select_language.php'; ?>
38
+ </div>
39
+ </div>
40
+
41
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_no_website_found.php'; ?>
42
+ <script type="text/javascript" src="https://cdn.iubenda.com/quick_generator/loader.js"></script>
views/integrate-setup.php ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+ <form class="ajax-form">
3
+ <input hidden name="action" value="integrate_setup">
4
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
5
+ <input hidden name="iubenda_cookie_law_solution[configuration_type]" value="simplified">
6
+ <div class="main-box">
7
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/siteInfo.php'; ?>
8
+
9
+ <div class="p-3 m-3">
10
+ <?php if(iubenda()->settings->print_notices()): ?>
11
+ <div class="p-3 m-3">
12
+ <?php iubenda()->settings->print_notices() ?>
13
+ </div>
14
+ <?php endif; ?>
15
+
16
+ <div class="radio-toggle">
17
+ <div class="switch">
18
+ <input type="checkbox" name="cookie_law" id="toggleAddCookieBanner" class="section-checkbox-control" data-section-name="#section-add-cookie-banner" checked/>
19
+ <label for="toggleAddCookieBanner"></label>
20
+ </div>
21
+ <span><?php _e('Add a cookie banner', 'iubenda') ?></span>
22
+ </div>
23
+ <section id="section-add-cookie-banner">
24
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/csSimplifiedConfiguration.php'; ?>
25
+
26
+ <div class="my-5">
27
+ <label class="checkbox-regular">
28
+ <input type="checkbox" class="mr-2 section-checkbox-control" name="iubenda_cookie_law_solution[amp_support]" value="1" checked data-section-name="#amp_support"/>
29
+ <span><?php _e('Enable Google AMP support', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links["enable_amp_support"]; ?>" class="ml-1 tooltip-icon">?</a></span>
30
+ </label>
31
+ <section id="amp_support" class="subOptions my-2">
32
+ <h4><?php _e('Select the iubenda AMP configuration file location.', 'iubenda') ?></h4>
33
+ <div class="mb-2 d-flex flex-wrap align-items-center">
34
+ <label class="radio-regular mr-4 mb-3">
35
+ <input type="radio" name="iubenda_cookie_law_solution[amp_source]" value="local" class="mr-2 section-radio-control" data-section-name="#auto_generated_conf_file" data-section-group=".amp_configuration_file" checked>
36
+ <span><?php _e('Auto-generated configuration file', 'iubenda') ?></span>
37
+ </label>
38
+ <label class="mr-4 mb-3 radio-regular text-xs">
39
+ <input type="radio" name="iubenda_cookie_law_solution[amp_source]" value="remote" class="mr-2 section-radio-control" data-section-name="#custom_conf_file" data-section-group=".amp_configuration_file">
40
+ <span><?php _e('Custom configuration file', 'iubenda') ?></span>
41
+ </label>
42
+ </div>
43
+
44
+ <section id="auto_generated_conf_file" class="text-xs text-gray amp_configuration_file">
45
+ <div class="border-1 border-gray rounded mt-2 py-2 px-3 d-flex flex-wrap align-items-center">
46
+ <?php
47
+ if (empty(iubenda()->options['cs']['amp_template_done'])) {
48
+ echo '
49
+ <p class="description">' . _e('No file available. Save changes to generate iubenda AMP configuration file.', 'iubenda') . '</p>';
50
+ } else {
51
+ ?>
52
+ <table class="table">
53
+ <tbody>
54
+ <?php
55
+ // multilang support
56
+ if (iubenda()->multilang && !empty(iubenda()->languages)) {
57
+ foreach (iubenda()->languages as $lang_id => $lang_name) {
58
+ if(!iub_array_get(iubenda()->options['cs']['amp_template_done'], $lang_id, false) ?: false){
59
+ continue;
60
+ }
61
+ ?>
62
+ <tr>
63
+ <td><p class="text-bold"><?php echo $lang_name ?></p></td>
64
+ <td>
65
+ <a href="<?php echo iubenda()->AMP->get_amp_template_url($lang_id) ?>" target="_blank"><?php echo iubenda()->AMP->get_amp_template_url($lang_id) ?></a>
66
+ </td>
67
+ </tr>
68
+ <?php
69
+ }
70
+ } else {
71
+ ?>
72
+ <tr>
73
+ <td><p class="text-bold"><?php _e('Default language', 'iubenda') ?></p></td>
74
+ <td>
75
+ <a href="<?php echo iubenda()->AMP->get_amp_template_url() ?>" target="_blank"><?php echo iubenda()->AMP->get_amp_template_url() ?></a>
76
+ </td>
77
+ </tr>
78
+ <?php
79
+ }
80
+ }
81
+ ?>
82
+ </tbody>
83
+ </table>
84
+ </div>
85
+ <div class="notice notice--general mt-2 p-3 d-flex align-items-center text-xs">
86
+ <p><?php _e('Seeing the AMP cookie notice when testing from Google but not when visiting your AMP pages directly?', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links["amp_support"]; ?>" class="link-underline"><?php _e('Learn how to fix it', 'iubenda') ?></a></p>
87
+ </div>
88
+ </section>
89
+ <section id="custom_conf_file" class="text-xs text-gray amp_configuration_file <?php echo iub_array_get(iubenda()->options['cs'], 'amp_source') == 'remote' ?: 'hidden' ?>">
90
+ <table class="table">
91
+ <tbody>
92
+ <?php
93
+ $languages = (iubenda()->multilang && !empty(iubenda()->languages)) ? iubenda()->languages : ['default' => __('Default language', 'iubenda')];
94
+ foreach ($languages as $lang_id => $lang_name) {
95
+ ?>
96
+ <tr>
97
+ <td><label class="text-bold" for="iub_amp_template-<?php echo $lang_id; ?>"><?php echo $lang_name; ?></label></td>
98
+ <td><input id="iub_amp_template-<?php echo $lang_id; ?>" type="text" class="regular-text" name="iubenda_cookie_law_solution[amp_template][<?php echo $lang_id; ?>]" value="<?php echo iub_array_get(iubenda()->options['cs'], "amp_template.{$lang_id}") ?>"/></td>
99
+ </tr>
100
+ <?php } ?>
101
+ </tbody>
102
+ </table>
103
+ </section>
104
+ </section>
105
+ </div>
106
+
107
+ <div class="my-5">
108
+ <label class="checkbox-regular">
109
+ <input type="checkbox" name="iubenda_cookie_law_solution[parse]" value="1" class="mr-2 section-checkbox-control" data-section-name="#iub_parser_engine_container" checked>
110
+ <span><?php _e('Automatically block scripts detected by the plugin', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links['automatic_block_scripts']; ?>" class="ml-1 tooltip-icon">?</a></span>
111
+ </label>
112
+ <section id="iub_parser_engine_container" class="subOptions">
113
+ <h4><?php _e("Select Parsing Engine", 'iubenda') ?></h4>
114
+ <div class="mb-3 d-flex flex-wrap align-items-center">
115
+ <label class="radio-regular mr-4 mb-3">
116
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="new" class="mr-2 section-radio-control" checked>
117
+ <span><?php _e('Primary', 'iubenda') ?></span>
118
+ </label>
119
+ <label class="mr-4 mb-3 radio-regular text-xs">
120
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="default" class="mr-2 section-radio-control">
121
+ <span><?php _e('Secondary', 'iubenda') ?></span>
122
+ </label>
123
+ </div>
124
+ <div class="mb-2 d-flex flex-wrap align-items-center">
125
+ <label class="checkbox-regular">
126
+ <input type="checkbox" name="iubenda_cookie_law_solution[skip_parsing]" value="1" class="mr-2 section-checkbox-control" data-section-name="#section-block-script">
127
+ <div class="px-0 py-1">
128
+ <span class="p-0"><?php _e('Leave scripts untouched on the page if the user has already given consent', 'iubenda') ?></span>
129
+ <div class="notice notice--info mt-2 mb-3 p-3 d-flex align-items-center text-xs">
130
+ <p><?php _e("Enable this option to improve performance <strong>only</strong> if your site does <strong>not</strong> use a cache system or a cache plugin and if you're <strong>not</strong> collecting per-category consent. If you're in doubt, keep this setting disabled", 'iubenda') ?></p>
131
+ </div>
132
+ </div>
133
+ </label>
134
+ </div>
135
+ </section>
136
+ </div>
137
+ </section>
138
+
139
+ <div class="radio-toggle">
140
+ <div class="switch">
141
+ <input type="checkbox" name="privacy_policy" id="toggleAddPrivacyButton" class="section-checkbox-control" data-section-name="#section-privacy-policy-button" checked/>
142
+
143
+ <label for="toggleAddPrivacyButton"></label>
144
+ </div>
145
+ <span><?php _e('Add the privacy policy button', 'iubenda') ?></span>
146
+ </div>
147
+ <section id="section-privacy-policy-button">
148
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/buttonStyle.php'; ?>
149
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/buttonPosition.php'; ?>
150
+ </section>
151
+
152
+ </div>
153
+
154
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/integrateFooter.php'; ?>
155
+
156
+ </div>
157
+ </form>
158
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/footer.php'; ?>
views/partials/alert.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if (isset($notices) || isset($notice_type)):
3
+ foreach ($notices[$notice_type] as $key => $notice) {
4
+ ?>
5
+ <div class="alert alert--<?php echo($notice_type === 'error' ? 'failure' : 'success'); ?> is-dismissible m-4">
6
+ <div class="alert__icon p-4">
7
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/banner_<?php echo($notice_type === 'error' ? 'failure' : 'success'); ?>.svg">
8
+ </div>
9
+ <?php
10
+ echo '<p class="text-regular">' . wp_kses_post($notice) . '</p> </br>';
11
+ ?>
12
+ <button class="btn-close mr-3 notice-dismiss dismiss-notification-alert" data-dismiss-key="<?php echo $key ?>"> ×</button>
13
+ </div>
14
+ <?php
15
+ }
16
+ endif; ?>
views/partials/auto_detect_forms.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $cons_page_configuration = get_option('iubenda_consent_solution');
3
+
4
+ if ($cons_page_configuration && iub_array_get($cons_page_configuration, 'public_api_key')){
5
+
6
+ $form_id = ! empty( $_GET['form_id'] ) ? absint( $_GET['form_id'] ) : 0;
7
+ $form = ! empty( $form_id ) ? iubenda()->forms->get_form( $form_id ) : false;
8
+
9
+ $supported_forms = iubenda()->forms->sources;
10
+
11
+ // list screen
12
+ if ( ! class_exists( 'WP_List_Table' ) )
13
+ include_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
14
+
15
+ include_once( IUBENDA_PLUGIN_PATH . '/includes/forms-list-table.php' );
16
+
17
+ $list_table = new iubenda_List_Table_Forms();
18
+
19
+ echo '
20
+ <div id="iubenda-consent-forms">';
21
+ $list_table->views();
22
+ $list_table->prepare_items();
23
+ $list_table->display();
24
+
25
+ echo '
26
+ </div>';
27
+ }else{
28
+ ?>
29
+ <p><?php _e('This section lists the forms available for field mapping. The plugin currently supports & detects: WordPress Comment, Contact Form 7, WooCommerce Checkout and WP Forms.', 'iubenda') ?></p>
30
+
31
+ <?php
32
+
33
+ }
views/partials/bannerPosition.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $positions = [
4
+ 'float-top-left',
5
+ 'float-top-center',
6
+ 'float-top-right',
7
+ 'float-bottom-left',
8
+ 'float-bottom-center',
9
+ 'float-bottom-right',
10
+ 'full-top',
11
+ 'full-bottom',
12
+ 'float-center'
13
+ ];
14
+
15
+ ?>
16
+ <div class="cs_banner_choices mb-5 mb-lg-0">
17
+
18
+ <div class="cs_banner_choices__position mr-4 pr-4">
19
+
20
+ <h4><?php _e('Position', 'iubenda') ?></h4>
21
+
22
+ <div class="position-select">
23
+
24
+ <div id="dropdown">
25
+
26
+ <?php foreach($positions as $v): ?>
27
+ <input type="radio" class="position-select-radio" name="iubenda_cookie_law_solution[simplified][position]" value="<?php echo $v; ?>" id="<?php echo $v ; ?>" <?php
28
+ checked( $v, iub_array_get(iubenda()->options['cs'], 'simplified.position'), true);
29
+ ?> >
30
+ <label for="<?php echo $v ; ?>">
31
+ <div>
32
+ <div class="<?php echo str_replace('-', ' ', $v) ; ?>"><span></span></div>
33
+ </div>
34
+ </label>
35
+ <?php endforeach; ?>
36
+
37
+ <div class="overlaybox p-0">
38
+ <div class="p-3">
39
+ <label class="checkbox-regular">
40
+ <input type="checkbox" class="mr-2" name="iubenda_cookie_law_solution[simplified][background_overlay]" <?php echo checked( true, (bool) iub_array_get(iubenda()->options['cs'], 'simplified.background_overlay'), false); ?>>
41
+ <span><?php _e('Background-overlay', 'iubenda') ?></span>
42
+ </label>
43
+ </div>
44
+ </div>
45
+
46
+ </div>
47
+
48
+ </div>
49
+
50
+ </div>
51
+
52
+ </div>
views/partials/bannerStyle.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="cs_banner_theme">
2
+ <h4><?php _e('Theme', 'iubenda') ?></h4>
3
+ <div class="scrollable gap-fixer">
4
+ <fieldset class="theme-select d-flex">
5
+ <div class="mr-2">
6
+ <label class="radio-theme radio-theme-dark">
7
+ <input type="radio" name="iubenda_cookie_law_solution[simplified][banner_style]" value="dark" <?php echo checked( 'dark', iub_array_get(iubenda()->options['cs'], 'simplified.banner_style'), false) ?>>
8
+ </label>
9
+ <p class="text-xs text-center"><?php _e('Dark', 'iubenda') ?></p>
10
+ </div>
11
+ <div class="mr-2">
12
+ <label class="radio-theme radio-theme-light">
13
+ <input type="radio" name="iubenda_cookie_law_solution[simplified][banner_style]" value="light" <?php echo checked( 'light', iub_array_get(iubenda()->options['cs'], 'simplified.banner_style'), false) ?>>
14
+ </label>
15
+ <p class="text-xs text-center"><?php _e('Light', 'iubenda') ?></p>
16
+ </div>
17
+ </fieldset>
18
+ </div>
19
+ </div>
views/partials/breadcrumb.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <ul class="breadcrumb text-gray">
2
+ <li class="breadcrumb__item"><a href="<?php echo add_query_arg( array('view' => 'products-page'), iubenda()->base_url ); ?>"><?php _e('Products', 'iubenda') ?></a></li>
3
+ <?php
4
+ foreach($pageLabels as $pageLabel){
5
+ if(end($pageLabels) === $pageLabel){
6
+ $textStyle = 'text-bold';
7
+ }else{
8
+ $textStyle = '';
9
+ }
10
+
11
+ $href = iub_array_get($pageLabel, 'href') ?? 'javascript:void(0)';
12
+ echo "<li class='breadcrumb__item {$textStyle}'><a href='{$href}'>".iub_array_get($pageLabel, 'title')."</a></li>";
13
+ }
14
+ ?>
15
+ </ul>
16
+
17
+ <?php if(iubenda()->settings->print_notices()): ?>
18
+ <div class="p-3 m-3">
19
+ <?php iubenda()->settings->print_notices() ?>
20
+ </div>
21
+ <?php endif; ?>
views/partials/buttonPosition.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h4><?php _e('Button position', 'iubenda') ?></h4>
2
+ <div class="mb-2 flex-wrap">
3
+ <label class="radio-regular mb-3">
4
+ <input type="radio" name="iubenda_privacy_policy_solution[button_position]" value="automatic" class="mr-2 section-radio-control" data-section-group=".pp_button_position" data-section-name="#pp_button_position_automatically" <?php checked( 'automatic', iub_array_get(iubenda()->options['pp'], 'button_position')) ?>>
5
+ <span><?php _e('Add to the footer automatically', 'iubenda') ?></span>
6
+ </label>
7
+ <label class="mr-4 radio-regular text-xs">
8
+ <input type="radio" name="iubenda_privacy_policy_solution[button_position]" value="manual" class="mr-2 section-radio-control" data-section-group=".pp_button_position" data-section-name="#pp_button_position_manually" <?php checked( 'manual', iub_array_get(iubenda()->options['pp'], 'button_position')) ?>>
9
+
10
+ <span><?php _e('Integrate manually', 'iubenda') ?></span>
11
+ </label>
12
+ </div>
13
+ <?php
14
+ // Check if we support current theme to attach legal
15
+ if (!iubenda()->check_if_we_support_current_theme_to_attach_legal()) {
16
+ $url = 'javascript:void(0)';
17
+
18
+ if(iubenda()->widget->check_current_theme_supports_widget()){
19
+ $url = admin_url( 'widgets.php' );
20
+ }elseif(iubenda()->block->check_current_theme_supports_blocks()){
21
+ $url = admin_url( 'site-editor.php' );
22
+ }
23
+
24
+ ?>
25
+ <section id="pp_button_position_automatically" class="pp_button_position <?php echo iub_array_get(iubenda()->options['pp'], 'button_position') == 'automatic' ?:'hidden' ; ?>">
26
+ <div class="notice notice--warning mt-2 mb-4 p-3 d-flex align-items-center text-warning text-xs">
27
+ <img class="mr-2" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/warning-icon.svg">
28
+ <p><?php echo sprintf( __( 'We were not able to add a "Legal" widget/block to the footer as your theme is not compatible, you can position the "Legal" widget/block manually from <a href="%s" target="_blank">here</a>.', 'iubenda' ), esc_url( $url ) ) ?></p>
29
+ </div>
30
+ </section>
31
+ <?php
32
+ }
33
+ ?>
34
+ <section id="pp_button_position_manually" class="pp_button_position <?php echo iub_array_get(iubenda()->options['pp'], 'button_position') == 'manual' ?:'hidden' ; ?>">
35
+ <div class="subOptions">
36
+
37
+ <p class="text-gray text-sm mb-4"><?php _e('Just copy and paste the embed code (WP shortcode or HTML) where you want the button to appear.', 'iubenda') ?></p>
38
+
39
+ <div class="d-lg-flex">
40
+ <div class="flex-fill mb-3 mr-0 mr-lg-5">
41
+ <h4><?php _e('WP shortcode (recommended)', 'iubenda') ?></h4>
42
+ <fieldset class="paste_embed_code">
43
+ <input type="text" class="form-control text-sm m-0" value="[iub-pp-button]" readonly />
44
+ </fieldset>
45
+ <p class="text-gray-lighter"><?php _e('A shortcode is a tiny bit of code that allows embedding interactive elements or creating complex page layouts with a minimal effort.', 'iubenda') ?></p>
46
+ </div>
47
+
48
+ <div class="flex-fill mb-0">
49
+ <h4><?php _e('HTML', 'iubenda') ?></h4>
50
+ <fieldset class="paste_embed_code tabs tabs--style2">
51
+ <ul class="tabs__nav">
52
+ <?php foreach(iubenda()->languages as $k => $v): ?>
53
+ <li class="tabs__nav__item <?php echo $k == iubenda()->lang_default?'active':false ; ?>" data-target="tab-<?php echo $k ; ?>" data-group="language-tabs">
54
+ <?php echo strtoupper($k) ; ?>
55
+ </li>
56
+ <?php endforeach; ?>
57
+ </ul>
58
+ <?php
59
+ $privacyPolicyGenerator = new PrivacyPolicyGenerator();
60
+ $globalOptions = get_option('iubenda_global_options');
61
+
62
+ $languages = (new ProductHelper())->get_languages();
63
+ foreach($languages as $lang_id => $v):
64
+ $code = iub_array_get(iubenda()->options['pp'], "code_{$lang_id}");
65
+
66
+ // if there is no embed code saved generate embed code
67
+ if(!$code){
68
+ $publicIds = iub_array_get($globalOptions, 'public_ids');
69
+ $publicId = iub_array_get($publicIds, $lang_id);
70
+
71
+ $code = $privacyPolicyGenerator->handle($lang_id, $publicId, 'white');
72
+ }
73
+ $code = html_entity_decode(iubenda()->parse_code($code));
74
+ ?>
75
+ <div data-target="tab-<?php echo $lang_id ; ?>" class="tabs__target <?php echo $lang_id == iubenda()->lang_default || $lang_id == 'default'? 'active': '' ; ?>" data-group="language-tabs">
76
+ <textarea readonly class='form-control text-sm m-0 iub-pp-code' rows='4'><?php echo $code ?></textarea>
77
+ </div>
78
+ <?php endforeach; ?>
79
+
80
+ </fieldset>
81
+ </div>
82
+ </div>
83
+
84
+ </div>
85
+ </section>
views/partials/buttonStyle.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h4><?php _e('Button style', 'iubenda') ?></h4>
2
+ <div class="scrollable gap-fixer">
3
+ <div class="button-style mb-3 d-flex">
4
+ <div class="m-1 mr-2">
5
+ <label class="radio-btn-style radio-btn-style-light">
6
+ <input type="radio" class="update-button-style" name="iubenda_privacy_policy_solution[button_style]" value="white" <?php echo checked( 'white', iub_array_get(iubenda()->options['pp'], 'button_style'), false) ?>>
7
+ <div>
8
+ <div class="btn-fake"></div>
9
+ </div>
10
+ <p class="text-xs text-center"><?php _e('Light', 'iubenda') ?></p>
11
+ </label>
12
+ </div>
13
+ <div class="m-1 mr-2">
14
+ <label class="radio-btn-style radio-btn-style-dark">
15
+ <input type="radio" class="update-button-style" name="iubenda_privacy_policy_solution[button_style]" value="black" <?php echo checked( 'black', iub_array_get(iubenda()->options['pp'], 'button_style'), false) ?>>
16
+ <div>
17
+ <div class="btn-fake"></div>
18
+ </div>
19
+ <p class="text-xs text-center"><?php _e('Dark', 'iubenda') ?></p>
20
+ </label>
21
+ </div>
22
+ </div>
23
+ </div>
views/partials/csGeneralSettings.php ADDED
@@ -0,0 +1,262 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="tabs">
2
+ <h3 class="text-bold text-gray text-md mb-0"><?php _e('Configuration', 'iubenda') ?></h3>
3
+ <div class="scrollable gap-fixer">
4
+ <fieldset class="radio-large">
5
+ <div class="d-flex tabs__nav">
6
+ <?php
7
+ if (iub_array_get(iubenda()->options['global_options'], 'site_id')) {
8
+ ?>
9
+ <div class="m-1 mr-2 tabs__nav__item <?php echo iub_array_get(iubenda()->options['cs'], 'configuration_type') == 'simplified' ?: 'active' ?>" data-target="configuration-type-simplified-tab" data-group="configuration-type">
10
+ <input class="section-radio-control cs-configuration-type" type="radio" id="radioSimplified" name="iubenda_cookie_law_solution[configuration_type]" value="simplified" <?php checked('simplified', iub_array_get(iubenda()->options['cs'], 'configuration_type')) ?>>
11
+ <label for="radioSimplified">
12
+ <div class=" d-flex align-items-center">
13
+ <svg xmlns="http://www.w3.org/2000/svg" width="29" height="27" viewBox="0 0 29 27">
14
+ <title><?php _e('Simplified', 'iubenda') ?></title>
15
+ <g fill="none" fill-rule="evenodd" transform="translate(1 1)">
16
+ <rect width="25" height="11" stroke="currentColor" rx="5.5"/>
17
+ <rect width="25" height="11" y="14" fill="currentColor" stroke="currentColor" rx="5.5"/>
18
+ <rect width="7" height="7" x="2" y="2" fill="currentColor" rx="3.5"/>
19
+ <rect width="7" height="7" x="16" y="16" fill="#FFF" rx="3.5"/>
20
+ <rect width="25" height="11" x="3" y="2" fill="currentColor" fill-opacity=".119" rx="5.5"/>
21
+ </g>
22
+ </svg>
23
+ <span href="#tab-3" class="ml-2"><?php _e('Simplified', 'iubenda') ?></span>
24
+ </div>
25
+ </label>
26
+ </div>
27
+ <?php
28
+ }
29
+ ?>
30
+ <div class="m-1 mr-2 tabs__nav__item <?php echo iub_array_get(iubenda()->options['cs'], 'configuration_type') == 'manual' ?: 'active' ?>" data-target="configuration-type-manual-tab" data-group="configuration-type">
31
+ <input type="radio" id="radioManual" class="section-radio-control cs-configuration-type" name="iubenda_cookie_law_solution[configuration_type]" value="manual" <?php checked( 'manual', iub_array_get(iubenda()->options['cs'], 'configuration_type') ) ?>>
32
+ <label for="radioManual">
33
+ <div class="d-flex align-items-center">
34
+ <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25">
35
+ <title><?php _e('Manual embed', 'iubenda') ?></title>
36
+ <g fill="none" fill-rule="evenodd" transform="translate(1 1)">
37
+ <rect width="21" height="21" x="3" y="3" fill="currentColor" fill-opacity=".119" rx="2" />
38
+ <rect width="21" height="21" stroke="currentColor" rx="2" />
39
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5.818 6.406l5.657 4-5.657 4M11.5 14.5h4" />
40
+ </g>
41
+ </svg>
42
+ <span href="#tab-4" class="ml-2"><?php _e('Manual embed', 'iubenda') ?></span>
43
+ </div>
44
+ </label>
45
+ </div>
46
+
47
+ </div>
48
+ </fieldset>
49
+ </div>
50
+ <div class="my-4 subOptions">
51
+ <?php
52
+ if (iub_array_get(iubenda()->options['global_options'], 'site_id')) {
53
+ ?>
54
+ <section class="tabs__target <?php echo iub_array_get(iubenda()->options['cs'], 'configuration_type') != 'simplified' ?: 'active' ?>" data-target="configuration-type-simplified-tab" data-group="configuration-type">
55
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/csSimplifiedConfiguration.php'; ?>
56
+ </section>
57
+ <?php
58
+ }
59
+ ?>
60
+ <section class="tabs__target <?php echo iub_array_get(iubenda()->options['cs'], 'configuration_type') != 'manual' ?: 'active' ?>" data-target="configuration-type-manual-tab" data-group="configuration-type">
61
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/csManualConfiguration.php'; ?>
62
+ </section>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="d-flex align-items-center pt-3">
67
+ <label class="checkbox-regular">
68
+ <input type="checkbox" class="mr-2 section-checkbox-control" name="iubenda_cookie_law_solution[amp_support]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['amp_support'] ) ?> data-section-name="#amp_support"/>
69
+ <span><?php _e('Enable Google AMP support', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links["enable_amp_support"]; ?>" class="ml-1 tooltip-icon">?</a></span>
70
+ </label>
71
+ </div>
72
+ <section id="amp_support" class="subOptions my-2 <?php echo (bool) iubenda()->options['cs']['amp_support'] ?: 'hidden' ?>">
73
+ <h4><?php _e('Select the iubenda AMP configuration file location.', 'iubenda') ?></h4>
74
+ <div class="mb-2 d-flex flex-wrap align-items-center">
75
+ <label class="radio-regular mb-3 mr-4">
76
+ <input type="radio" name="iubenda_cookie_law_solution[amp_source]" value="local" class="mr-2 section-radio-control" data-section-name="#auto_generated_conf_file" data-section-group=".amp_configuration_file" <?php checked( 'local', iub_array_get(iubenda()->options['cs'], 'amp_source')) ?>>
77
+ <span><?php _e('Auto-generated configuration file', 'iubenda') ?></span>
78
+ </label>
79
+ <label class="mr-4 mb-3 radio-regular text-xs">
80
+ <input type="radio" name="iubenda_cookie_law_solution[amp_source]" value="remote" class="mr-2 section-radio-control" data-section-name="#custom_conf_file" data-section-group=".amp_configuration_file" <?php checked( 'remote', iub_array_get(iubenda()->options['cs'], 'amp_source')) ?>>
81
+ <span><?php _e('Custom configuration file', 'iubenda') ?></span>
82
+ </label>
83
+ </div>
84
+
85
+ <section id="auto_generated_conf_file" class="text-xs text-gray amp_configuration_file <?php echo iub_array_get(iubenda()->options['cs'], 'amp_source') == 'local' ?: 'hidden' ?>">
86
+ <div class="border-1 border-gray rounded mt-2 py-2 px-3 d-flex flex-wrap align-items-center">
87
+ <?php
88
+
89
+ if (empty(iubenda()->options['cs']['amp_template_done'])) {
90
+ echo '
91
+ <p class="description">' . _e('No file available. Save changes to generate iubenda AMP configuration file.', 'iubenda') . '</p>';
92
+ } else {
93
+ ?>
94
+ <table class="table">
95
+ <tbody>
96
+ <?php
97
+ // multilang support
98
+ if (iubenda()->multilang && !empty(iubenda()->languages)) {
99
+ foreach (iubenda()->languages as $lang_id => $lang_name) {
100
+ if(!iub_array_get(iubenda()->options['cs']['amp_template_done'], $lang_id, false) ?: false){
101
+ continue;
102
+ }
103
+ ?>
104
+ <tr>
105
+ <td><p class="text-bold"><?php echo $lang_name ?></p></td>
106
+ <td>
107
+ <a href="<?php echo iubenda()->AMP->get_amp_template_url($lang_id) ?>" target="_blank"><?php echo iubenda()->AMP->get_amp_template_url($lang_id) ?></a>
108
+ </td>
109
+ </tr>
110
+ <?php
111
+ }
112
+ } else {
113
+ ?>
114
+ <tr>
115
+ <td><p class="text-bold"><?php _e('Default language', 'iubenda') ?></p></td>
116
+ <td>
117
+ <a href="<?php echo iubenda()->AMP->get_amp_template_url() ?>" target="_blank"><?php echo iubenda()->AMP->get_amp_template_url() ?></a>
118
+ </td>
119
+ </tr>
120
+ <?php
121
+ }
122
+ }
123
+ ?>
124
+ </tbody>
125
+ </table>
126
+ </div>
127
+
128
+ <div class="notice notice--general mt-2 p-3 d-flex align-items-center text-xs">
129
+ <p><?php _e('Seeing the AMP cookie notice when testing from Google but not when visiting your AMP pages directly?', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links["amp_support"]; ?>" class="link-underline"><?php _e('Learn how to fix it', 'iubenda') ?></a></p>
130
+ </div>
131
+
132
+ </section>
133
+ <section id="custom_conf_file" class="text-xs text-gray amp_configuration_file <?php echo iub_array_get(iubenda()->options['cs'], 'amp_source') == 'remote' ?: 'hidden' ?>">
134
+ <table class="table">
135
+ <tbody>
136
+ <?php
137
+ $languages = (new ProductHelper())->get_languages();
138
+ foreach ($languages as $lang_id => $lang_name){
139
+ ?>
140
+ <tr>
141
+ <td><label class="text-bold" for="iub_amp_template-<?php echo $lang_id; ?>"><?php echo $lang_name; ?></label></td>
142
+ <td><input id="iub_amp_template-<?php echo $lang_id; ?>" type="text" class="regular-text" name="iubenda_cookie_law_solution[amp_template][<?php echo $lang_id; ?>]" value="<?php echo iub_array_get(iubenda()->options['cs'], "amp_template.{$lang_id}") ?>"/></td>
143
+ </tr>
144
+ <?php } ?>
145
+ </tbody>
146
+ </table>
147
+ </section>
148
+ </section>
149
+
150
+ <div class="d-flex align-items-center pt-3">
151
+ <label class="checkbox-regular">
152
+ <input type="checkbox" name="iubenda_cookie_law_solution[parse]" value="1" class="mr-2 section-checkbox-control" data-section-name="#iub_parser_engine_container" <?php checked( true, (bool) iubenda()->options['cs']['parse'] ) ?>>
153
+ <span><?php _e('Automatically block scripts detected by the plugin', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links['automatic_block_scripts']; ?>" class="ml-1 tooltip-icon">?</a></span>
154
+ </label>
155
+ </div>
156
+ <section id="iub_parser_engine_container" class="subOptions <?php echo (bool) iubenda()->options['cs']['parse']?: 'hidden' ?>">
157
+ <h4><?php _e('Select Parsing Engine', 'iubenda') ?></h4>
158
+ <div class="mb-3 d-flex flex-wrap align-items-center">
159
+ <label class="radio-regular mr-4 mb-3">
160
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="new" class="mr-2 section-radio-control" <?php checked( 'new', iubenda()->options['cs']['parser_engine'] ) ?>>
161
+ <span><?php _e('Primary', 'iubenda') ?></span>
162
+ </label>
163
+ <label class="mr-4 mb-3 radio-regular text-xs">
164
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="default" class="mr-2 section-radio-control" <?php checked( 'default', iubenda()->options['cs']['parser_engine'] ) ?>>
165
+ <span><?php _e('Secondary', 'iubenda') ?></span>
166
+ </label>
167
+ </div>
168
+ <div class="mb-2 d-flex flex-wrap align-items-center">
169
+ <label class="checkbox-regular">
170
+ <input type="checkbox" name="iubenda_cookie_law_solution[skip_parsing]" value="1" class="mr-2 section-checkbox-control" data-section-name="#section-block-script" <?php checked( true, (bool) iubenda()->options['cs']['skip_parsing'] ) ?>>
171
+ <div class="px-0 py-1">
172
+ <span class="p-0"><?php _e('Leave scripts untouched on the page if the user has already given consent', 'iubenda') ?></span>
173
+ <div class="notice notice--info mt-2 mb-3 p-3 d-flex align-items-center text-xs">
174
+ <p><?php _e("Enable this option to improve performance <strong>only</strong> if your site does <strong>not</strong> use a cache system or a cache plugin and if you're <strong>not</strong> collecting per-category consent. If you're in doubt, keep this setting disabled", 'iubenda') ?></p>
175
+ </div>
176
+ </div>
177
+ </label>
178
+
179
+ </div>
180
+
181
+ <h4><?php _e('Blocked domains', 'iubenda') ?></h4>
182
+ <fieldset class="custom-scripts mb-3 p-0 tabs tabs--style2">
183
+ <ul class="tabs__nav text-xs">
184
+ <li data-target="tab-custom-scripts" data-group="custom-scripts" class="tabs__nav__item active"><?php _e('Custom scripts', 'iubenda') ?></li>
185
+ <li data-target="tab-custom-iframes" data-group="custom-scripts" class="tabs__nav__item"><?php _e('Custom iframes', 'iubenda') ?></li>
186
+ </ul>
187
+ <div data-target="tab-custom-scripts" data-group="custom-scripts" class="tabs__target p-3 active">
188
+ <section id="custom-script-field" class="custom-script-field hidden">
189
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="<?php _e('Enter custom script', 'iubenda') ?>" disabled>
190
+ <select name="iubenda_cookie_law_solution[custom_scripts][type][]" disabled>
191
+ <option value="0" selected="selected"><?php _e('Not set', 'iubenda') ?></option>
192
+ <option value="1"><?php _e('Strictly necessary', 'iubenda') ?></option>
193
+ <option value="2"><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
194
+ <option value="3"><?php _e('Experience enhancement', 'iubenda') ?></option>
195
+ <option value="4"><?php _e('Analytics', 'iubenda') ?></option>
196
+ <option value="5"><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
197
+ </select>
198
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-script-field button-secondary remove-custom-section" data-remove-section=".custom-script-field" title="Remove">-</a>
199
+ </section>
200
+ <div id="custom-script-fields">
201
+ <?php
202
+ foreach (iubenda()->options['cs']['custom_scripts'] as $script => $type){
203
+ ?>
204
+ <section class="custom-script-field">
205
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="<?php _e('Enter custom script', 'iubenda') ?>" value="<?php echo esc_attr( stripslashes($script) ); ?>">
206
+ <select name="iubenda_cookie_law_solution[custom_scripts][type][]">
207
+ <option value="0" <?php selected( $type, 0 ); ?>><?php _e('Not set', 'iubenda') ?></option>
208
+ <option value="1" <?php selected( $type, 1 ); ?>><?php _e('Strictly necessary', 'iubenda') ?></option>
209
+ <option value="2" <?php selected( $type, 2 ); ?>><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
210
+ <option value="3" <?php selected( $type, 3 ); ?>><?php _e('Experience enhancement', 'iubenda') ?></option>
211
+ <option value="4" <?php selected( $type, 4 ); ?>><?php _e('Analytics', 'iubenda') ?></option>
212
+ <option value="5" <?php selected( $type, 5 ); ?>><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
213
+ </select>
214
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-script-field button-secondary remove-custom-section" data-remove-section=".custom-script-field" title="Remove">-</a>
215
+ </section>
216
+ <?php }?>
217
+ </div>
218
+
219
+ <p class=" text-gray-lighter m-0 mb-3"><?php _e("Provide a list of domains for any custom scripts you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains.", 'iubenda') ?></p>
220
+ <button class="btn btn-gray-outline btn-xs add-custom-section" data-append-section="#custom-script-fields" data-clone-section="#custom-script-field"><?php _e('Add New Script', 'iubenda') ?></button>
221
+ </div>
222
+ <div data-target="tab-custom-iframes" data-group="custom-scripts" class="tabs__target p-3">
223
+ <section id="custom-iframe-field" class="custom-iframe-field hidden">
224
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="<?php _e('Enter custom iframe', 'iubenda') ?>" disabled>
225
+ <select name="iubenda_cookie_law_solution[custom_iframes][type][]" disabled>
226
+ <option value="0" selected="selected"><?php _e('Not set', 'iubenda') ?></option>
227
+ <option value="1"><?php _e('Strictly necessary', 'iubenda') ?></option>
228
+ <option value="2"><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
229
+ <option value="3"><?php _e('Experience enhancement', 'iubenda') ?></option>
230
+ <option value="4"><?php _e('Analytics', 'iubenda') ?></option>
231
+ <option value="5"><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
232
+ </select>
233
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-iframe-field button-secondary remove-custom-section" data-remove-section=".custom-iframe-field" title="Remove">-</a>
234
+ </section>
235
+ <div id="custom-iframe-fields">
236
+ <?php
237
+ foreach (iub_array_get(iubenda()->options['cs'],'custom_iframes') as $iframe => $type){
238
+ ?>
239
+ <section id="custom-iframe-field" class="custom-iframe-field">
240
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="<?php _e('Enter custom iframe', 'iubenda') ?>" value='<?php echo esc_attr( stripslashes($iframe) ); ?>'>
241
+ <select name="iubenda_cookie_law_solution[custom_iframes][type][]">
242
+ <option value="0" <?php selected( $type, 0 ); ?>><?php _e('Not set', 'iubenda') ?></option>
243
+ <option value="1" <?php selected( $type, 1 ); ?>><?php _e('Strictly necessary', 'iubenda') ?></option>
244
+ <option value="2" <?php selected( $type, 2 ); ?>><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
245
+ <option value="3" <?php selected( $type, 3 ); ?>><?php _e('Experience enhancement', 'iubenda') ?></option>
246
+ <option value="4" <?php selected( $type, 4 ); ?>><?php _e('Analytics', 'iubenda') ?></option>
247
+ <option value="5" <?php selected( $type, 5 ); ?>><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
248
+ </select>
249
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-iframe-field button-secondary remove-custom-section" data-remove-section=".custom-iframe-field" title="Remove">-</a>
250
+ </section>
251
+ <?php }?>
252
+
253
+ </div>
254
+ <p class="text-gray-lighter m-0 mb-3"><?php _e("Provide a list of domains for any custom iframes you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains.", 'iubenda') ?></p>
255
+ <button class="btn btn-gray-outline btn-xs add-custom-section" data-append-section="#custom-iframe-fields" data-clone-section="#custom-iframe-field"><?php _e('Add New iframe', 'iubenda') ?></button>
256
+ </div>
257
+ </fieldset>
258
+ </section>
259
+
260
+ <div class="pt-3">
261
+
262
+ </div>
views/partials/csManualConfiguration.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="text-gray">
2
+ <p><?php _e('Configure your cookie banner on our website and paste here the embed code to integrate it to your website.', 'iubenda') ?></p>
3
+ <div class="d-flex align-items-center">
4
+ <div class="steps flex-shrink mr-2">1</div>
5
+ <p class="text-bold"> <?php _e('Configure cookie banner by', 'iubenda') ?>
6
+ <a target="_blank" href="<?php echo iubenda()->settings->links['flow_page']; ?>" class="link-underline text-gray-lighter"> <?php _e('clicking here', 'iubenda') ?></a>
7
+ </p>
8
+ </div>
9
+ <div class="d-flex align-items-center">
10
+ <div class="steps flex-shrink mr-2">2</div>
11
+ <p class="text-bold"> <?php _e('Paste your cookie solution embed code here', 'iubenda') ?>
12
+ </p>
13
+ </div>
14
+ <div class="pl-5 mt-3">
15
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/languagesTabs.php'; ?>
16
+ </div>
17
+ </div>
views/partials/csPluginSettings.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="py-5">
2
+ <label class="checkbox-regular">
3
+ <input type="checkbox" name="iubenda_cookie_law_solution[parse]" value="1" class="mr-2 section-checkbox-control" data-section-name="#iub_parser_engine_container" <?php checked( true, (bool) iubenda()->options['cs']['parse'] ) ?>>
4
+ <span><?php _e('Automatically block scripts detected by the plugin', 'iubenda') ?> <a target="_blank" href="<?php echo iubenda()->settings->links['automatic_block_scripts']; ?>" class="ml-1 tooltip-icon">?</a></span>
5
+ </label>
6
+ <section id="iub_parser_engine_container" class="subOptions <?php echo (bool) iubenda()->options['cs']['parse']?: 'hidden' ?>">
7
+ <div class="mb-3 d-flex flex-wrap align-items-center">
8
+ <label class="radio-regular mr-4">
9
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="new" class="mr-2 section-radio-control" <?php checked( 'new', iubenda()->options['cs']['parser_engine'] ) ?>>
10
+ <span><?php _e('Primary', 'iubenda') ?></span>
11
+ </label>
12
+ <label class="mr-4 radio-regular text-xs">
13
+ <input type="radio" name="iubenda_cookie_law_solution[parser_engine]" value="default" class="mr-2 section-radio-control" <?php checked( 'default', iubenda()->options['cs']['parser_engine'] ) ?>>
14
+ <span><?php _e('Secondary', 'iubenda') ?></span>
15
+ </label>
16
+ </div>
17
+ <p class="px-3 mx-4"><?php _e("Select Parsing Engine", 'iubenda') ?></p>
18
+ <br>
19
+ <div class="mb-2 d-flex flex-wrap align-items-center">
20
+ <label class="checkbox-regular">
21
+ <input type="checkbox" name="iubenda_cookie_law_solution[skip_parsing]" value="1" class="mr-2 section-checkbox-control" data-section-name="#section-block-script" <?php checked( true, (bool) iubenda()->options['cs']['skip_parsing'] ) ?>>
22
+ <span><?php _e('Leave scripts untouched on the page if the user has already given consent', 'iubenda') ?></span>
23
+ </label>
24
+ <p class="px-3 mx-4"><?php _e("Enable this option to improve performance <strong>only</strong> if your site does <strong>not</strong> use a cache system or a cache plugin and if you're <strong>not</strong> collecting per-category consent. If you're in doubt, keep this setting disabled", 'iubenda') ?></p>
25
+ </div>
26
+ </section>
27
+ <label class="checkbox-regular">
28
+ <input type="checkbox" class="mr-2" name="iubenda_cookie_law_solution[ctype]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['ctype'] ) ?>>
29
+ <span><?php _e('Restrict the plugin to run only for requests that have "Content-type: text / html" (recommended)', 'iubenda') ?></span>
30
+ </label>
31
+ <label class="checkbox-regular">
32
+ <input type="checkbox" class="mr-2" name="iubenda_cookie_law_solution[output_feed]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['output_feed'] ) ?>>
33
+ <span><?php _e('Do not run the plugin inside the RSS feed (recommended)', 'iubenda') ?></span>
34
+ </label>
35
+ <label class="checkbox-regular">
36
+ <input type="checkbox" class="mr-2" name="iubenda_cookie_law_solution[output_post]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['output_post'] ) ?>>
37
+ <span><?php _e('Do not run the plugin on POST requests (recommended)', 'iubenda') ?></span>
38
+ </label>
39
+ <label class="checkbox-regular">
40
+ <input type="checkbox" class="mr-2" name="iubenda_cookie_law_solution[deactivation]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['deactivation'] ) ?>>
41
+ <span><?php _e('Delete all plugin data upon deactivation', 'iubenda') ?></span>
42
+ </label>
43
+ </div>
44
+ <div class="mb-5">
45
+ <h4><?php _e('Menu position', 'iubenda') ?></h4>
46
+ <div class="mb-2 d-flex align-items-center flex-wrap">
47
+ <label class="radio-regular mr-3">
48
+ <input type="radio" name="iubenda_cookie_law_solution[menu_position]" value="topmenu" class="mr-2" <?php checked( 'topmenu', iubenda()->options['cs']['menu_position'] ) ?>>
49
+ <span><?php _e('Top menu', 'iubenda') ?></span>
50
+ </label>
51
+ <label class="mr-4 radio-regular text-xs">
52
+ <input type="radio" name="iubenda_cookie_law_solution[menu_position]" value="submenu" class="mr-2" <?php checked( 'submenu', iubenda()->options['cs']['menu_position'] ) ?>>
53
+ <span><?php _e('Submenu', 'iubenda') ?></span>
54
+ </label>
55
+ </div>
56
+ <p class="description"><?php _e('Select whether to display iubenda in a top admin menu or the Settings submenu.', 'iubenda') ?></p>
57
+ </div>
58
+
59
+ <h4><?php _e('Custom settings', 'iubenda') ?></h4>
60
+ <fieldset class="custom-scripts mb-3 p-0 tabs tabs--style2">
61
+ <ul class="tabs__nav text-xs">
62
+ <li data-target="tab-custom-scripts" data-group="custom-scripts" class="tabs__nav__item active"><?php _e('Custom scripts', 'iubenda') ?></li>
63
+ <li data-target="tab-custom-iframes" data-group="custom-scripts" class="tabs__nav__item"><?php _e('Custom iframes', 'iubenda') ?></li>
64
+ </ul>
65
+ <div data-target="tab-custom-scripts" data-group="custom-scripts" class="tabs__target p-3 active">
66
+ <section id="custom-script-field" class="custom-script-field hidden">
67
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="<?php _e('Enter custom script', 'iubenda') ?>"" disabled>
68
+ <select name="iubenda_cookie_law_solution[custom_scripts][type][]" disabled>
69
+ <option value="0" selected="selected"><?php _e('Not set', 'iubenda') ?></option>
70
+ <option value="1"><?php _e('Strictly necessary', 'iubenda') ?></option>
71
+ <option value="2"><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
72
+ <option value="3"><?php _e('Experience enhancement', 'iubenda') ?></option>
73
+ <option value="4"><?php _e('Analytics', 'iubenda') ?></option>
74
+ <option value="5"><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
75
+ </select>
76
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-script-field button-secondary remove-custom-section" data-remove-section=".custom-script-field" title="Remove">-</a>
77
+ </section>
78
+ <div id="custom-script-fields">
79
+ <?php
80
+ foreach (iubenda()->options['cs']['custom_scripts'] as $script => $type){
81
+ ?>
82
+ <section class="custom-script-field">
83
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_scripts][script][]" placeholder="<?php _e('Enter custom script', 'iubenda') ?>"" value="<?php echo esc_attr( stripslashes($script) ); ?>">
84
+ <select name="iubenda_cookie_law_solution[custom_scripts][type][]">
85
+ <option value="0" <?php selected( $type, 0 ); ?>><?php _e('Not set', 'iubenda') ?></option>
86
+ <option value="1" <?php selected( $type, 1 ); ?>><?php _e('Strictly necessary', 'iubenda') ?></option>
87
+ <option value="2" <?php selected( $type, 2 ); ?>><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
88
+ <option value="3" <?php selected( $type, 3 ); ?>><?php _e('Experience enhancement', 'iubenda') ?></option>
89
+ <option value="4" <?php selected( $type, 4 ); ?>><?php _e('Analytics', 'iubenda') ?></option>
90
+ <option value="5" <?php selected( $type, 5 ); ?>><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
91
+ </select>
92
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-script-field button-secondary remove-custom-section" data-remove-section=".custom-script-field" title="Remove">-</a>
93
+ </section>
94
+ <?php }?>
95
+ </div>
96
+
97
+ <p class=" text-gray-lighter m-0 mb-3"><?php _e("Provide a list of domains for any custom scripts you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains.", 'iubenda') ?></p>
98
+ <button class="btn btn-gray-outline btn-xs add-custom-section" data-append-section="#custom-script-fields" data-clone-section="#custom-script-field"><?php _e('Add New Script', 'iubenda') ?></button>
99
+ </div>
100
+ <div data-target="tab-custom-iframes" data-group="custom-scripts" class="tabs__target p-3">
101
+ <section id="custom-iframe-field" class="custom-iframe-field hidden">
102
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="<?php _e('Enter custom iframe', 'iubenda') ?>"" disabled>
103
+ <select name="iubenda_cookie_law_solution[custom_iframes][type][]" disabled>
104
+ <option value="0" selected="selected"><?php _e('Not set', 'iubenda') ?></option>
105
+ <option value="1"><?php _e('Strictly necessary', 'iubenda') ?></option>
106
+ <option value="2"><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
107
+ <option value="3"><?php _e('Experience enhancement', 'iubenda') ?></option>
108
+ <option value="4"><?php _e('Analytics', 'iubenda') ?></option>
109
+ <option value="5"><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
110
+ </select>
111
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-iframe-field button-secondary remove-custom-section" data-remove-section=".custom-iframe-field" title="Remove">-</a>
112
+ </section>
113
+ <div id="custom-iframe-fields">
114
+ <?php
115
+ foreach (iub_array_get(iubenda()->options['cs'],'custom_iframes') as $iframe => $type){
116
+ ?>
117
+ <section id="custom-iframe-field" class="custom-iframe-field">
118
+ <input type="text" class="regular-text" name="iubenda_cookie_law_solution[custom_iframes][iframe][]" placeholder="<?php _e('Enter custom iframe', 'iubenda') ?>" value='<?php echo esc_attr( stripslashes($iframe) ); ?>'>
119
+ <select name="iubenda_cookie_law_solution[custom_iframes][type][]">
120
+ <option value="0" <?php selected( $type, 0 ); ?>><?php _e('Not set', 'iubenda') ?></option>
121
+ <option value="1" <?php selected( $type, 1 ); ?>><?php _e('Strictly necessary', 'iubenda') ?></option>
122
+ <option value="2" <?php selected( $type, 2 ); ?>><?php _e('Basic interactions &amp; functionalities', 'iubenda') ?></option>
123
+ <option value="3" <?php selected( $type, 3 ); ?>><?php _e('Experience enhancement', 'iubenda') ?></option>
124
+ <option value="4" <?php selected( $type, 4 ); ?>><?php _e('Analytics', 'iubenda') ?></option>
125
+ <option value="5" <?php selected( $type, 5 ); ?>><?php _e('Targeting &amp; Advertising', 'iubenda') ?></option>
126
+ </select>
127
+ <a target="_blank" href="javascript:void(0)" class="remove-custom-iframe-field button-secondary remove-custom-section" data-remove-section=".custom-iframe-field" title="Remove">-</a>
128
+ </section>
129
+ <?php }?>
130
+
131
+ </div>
132
+ <p class="text-gray-lighter m-0 mb-3"><?php _e("Provide a list of domains for any custom iframes you'd like to block, and assign their purposes. To make sure they are blocked correctly, please add domains in the same format as 'example.com', without any protocols e.g. 'http://' or 'https://'. You may also use wildcards (*) to include parent domains or subdomains.", 'iubenda') ?></p>
133
+ <button class="btn btn-gray-outline btn-xs add-custom-section" data-append-section="#custom-iframe-fields" data-clone-section="#custom-iframe-field"><?php _e('Add New iframe', 'iubenda') ?></button>
134
+ </div>
135
+ </fieldset>
views/partials/csSimplifiedConfiguration.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="d-lg-flex">
2
+
3
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/bannerPosition.php'; ?>
4
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/bannerStyle.php'; ?>
5
+
6
+ </div>
7
+
8
+ <div class="mb-5">
9
+ <h4><?php _e('Legislation', 'iubenda') ?></h4>
10
+ <div class="scrollable gap-fixer">
11
+ <fieldset class="d-flex radio-large">
12
+ <div class="radio-controller">
13
+ <input type="radio" id="radioGdpr" name="iubenda_cookie_law_solution[simplified][legislation]" value="gdpr" <?php checked( 'gdpr', iub_array_get(iubenda()->options['cs'], 'simplified.legislation'), true ) ?>>
14
+ <label for="radioGdpr"><?php _e('GDPR Only', 'iubenda') ?></label>
15
+ </div>
16
+ <div class="radio-controller">
17
+ <input type="radio" id="radioCcpa" name="iubenda_cookie_law_solution[simplified][legislation]" value="ccpa" <?php checked( 'ccpa', iub_array_get(iubenda()->options['cs'], 'simplified.legislation'), true ) ?>>
18
+ <label for="radioCcpa"><?php _e('CCPA Only', 'iubenda') ?></label>
19
+ </div>
20
+ <div class="radio-controller">
21
+ <input type="radio" id="radioBoth" name="iubenda_cookie_law_solution[simplified][legislation]" value="both" <?php checked( 'both', iub_array_get(iubenda()->options['cs'], 'simplified.legislation'), true ) ?>>
22
+ <label for="radioBoth"><?php _e('Both', 'iubenda') ?></label>
23
+ </div>
24
+ </fieldset>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="mb-5">
29
+ <h4><?php _e('Require consent from', 'iubenda') ?></h4>
30
+ <div class="scrollable gap-fixer">
31
+ <fieldset class="d-flex radio-large">
32
+ <div class="radio-controller">
33
+ <input type="radio" id="radioWorldwide" name="iubenda_cookie_law_solution[simplified][require_consent]" value="worldwide" <?php checked( 'worldwide', iub_array_get(iubenda()->options['cs'], 'simplified.require_consent') ) ?>>
34
+ <label for="radioWorldwide">
35
+ <div class="d-flex align-items-center">
36
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="30" viewBox="0 0 32 30">
37
+ <g fill="none" fill-rule="evenodd" transform="translate(1 1.632)">
38
+ <circle cx="18" cy="14.368" r="13" fill="currentColor" fill-opacity=".1" />
39
+ <circle cx="13" cy="13.368" r="13" stroke="currentColor" />
40
+ <path stroke="currentColor" d="M17.545 4.368h-3.409l-2.045 1.715v1.143h-2.046L8 8.368v1.143h3.409l.682.572h1.364l1.363 1.143h2.727l1.364 1.142 1.364-1.142H23M15.5 15.243h-1.25l-1.875-1.875h-2.5L8 15.243l1.25 3.125h1.875l1.25 1.25v3.125l.625.625h1.25l1.875-1.875v-1.875L18 17.743z" />
41
+ </g>
42
+ </svg>
43
+ <span class="ml-2"><?php _e('Worldwide', 'iubenda') ?></span>
44
+ </div>
45
+ </label>
46
+ </div>
47
+ <div class="radio-controller">
48
+ <input type="radio" id="radioEU" name="iubenda_cookie_law_solution[simplified][require_consent]" value="eu_only" <?php checked( 'eu_only', iub_array_get(iubenda()->options['cs'], 'simplified.require_consent'), true ) ?>>
49
+ <label for="radioEU">
50
+ <div class=" d-flex align-items-center">
51
+ <svg xmlns="http://www.w3.org/2000/svg" width="30" height="28" viewBox="0 0 30 28">
52
+ <g fill="none" fill-rule="evenodd">
53
+ <path fill="currentColor" fill-opacity=".1" d="M4.5 5.5H30v18H4.5z" />
54
+ <path fill="currentColor" d="M13.5 7a.75.75 0 100-1.5.75.75 0 000 1.5zM13.5 17.5a.75.75 0 100-1.5.75.75 0 000 1.5zM18 11.5a.75.75 0 101.5 0 .75.75 0 00-1.5 0zM7.5 11.5a.75.75 0 101.5 0 .75.75 0 00-1.5 0zM16.682 14.682a.75.75 0 101.06 1.06.75.75 0 00-1.06-1.06zM9.257 7.257a.75.75 0 101.061 1.061.75.75 0 00-1.06-1.06zM10.318 14.682a.75.75 0 10-1.06 1.06.75.75 0 001.06-1.06zM17.743 7.257a.75.75 0 10-1.061 1.061.75.75 0 001.06-1.06z" />
55
+ <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M.75 2.5h25.391v18H.75z" />
56
+ <path class="svg-stroke" fill="#D8D8D8" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M.75 1v26.027" />
57
+ </g>
58
+ </svg>
59
+ <span class="ml-2"><?php _e('EU Only', 'iubenda') ?></span>
60
+ </div>
61
+ </label>
62
+ </div>
63
+ </fieldset>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="my-5">
68
+ <h4><?php _e('Banner buttons', 'iubenda') ?></h4>
69
+ <fieldset>
70
+ <label class="checkbox-regular">
71
+ <input type="checkbox" class="mr-2 tcf-dependency" name="iubenda_cookie_law_solution[simplified][explicit_accept]" <?php checked( true, (bool) iub_array_get(iubenda()->options['cs'], 'simplified.explicit_accept')); ?> <?php echo true == (bool) iub_array_get(iubenda()->options['cs'], 'simplified.tcf') ? 'disabled':null ?>>
72
+ <span><?php _e('Explicit Accept and Customize buttons', 'iubenda') ?></span>
73
+ </label>
74
+
75
+ <label class="checkbox-regular">
76
+ <input type="checkbox" class="mr-2 tcf-dependency" name="iubenda_cookie_law_solution[simplified][explicit_reject]" <?php checked( true, (bool) iub_array_get(iubenda()->options['cs'], 'simplified.explicit_reject')); ?> <?php echo true == (bool) iub_array_get(iubenda()->options['cs'], 'simplified.tcf') ? 'disabled':null ?>>
77
+ <span><?php _e('Explicit Reject button', 'iubenda') ?></span>
78
+ </label>
79
+ </fieldset>
80
+ </div>
81
+
82
+ <div class="my-5">
83
+ <h4><?php _e('Other options', 'iubenda') ?></h4>
84
+ <label class="checkbox-regular">
85
+ <input type="checkbox" class="mr-2 iub-toggle-elements-status" data-group=".tcf-dependency" name="iubenda_cookie_law_solution[simplified][tcf]" <?php checked( true, (bool) iub_array_get(iubenda()->options['cs'], 'simplified.tcf')); ?>>
86
+ <span>
87
+ <div>
88
+ <?php _e('Enable IAB Transparency and Consent Framework', 'iubenda') ?> - <a target="_blank" href="<?php echo iubenda()->settings->links['enable_iab']; ?>" class="link-underline"><?php _e('Learn More', 'iubenda') ?></a></div>
89
+ <div class="notice notice--warning mt-2 p-3 d-flex align-items-center text-warning text-xs">
90
+ <img class="mr-2" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/warning-icon.svg">
91
+
92
+ <p><?php _e('You should activate this feature if you show ads on your website', 'iubenda') ?></p>
93
+ </div>
94
+ </span>
95
+ </label>
96
+
97
+ </div>
views/partials/footer.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <footer class="py-4">
2
+ <div class="d-flex justify-content-center">
3
+ <div class="text-center">
4
+ <p>Cookie and Consent Solution for the GDPR &amp; ePrivacy | v<?php echo get_option( 'iubenda_cookie_law_version' ) ?></p>
5
+ <a target="_blank" class="text-bold text-xs text-gray mr-4" href="<?php echo iubenda()->settings->links['documentation']; ?>"><?php _e('Documentation', 'iubenda') ?></a>
6
+ </div>
7
+ </div>
8
+ </footer>
views/partials/frontpage_main_box.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="alert-div-container" class="hidden">
2
+ <div id="alert-div" class="alert is-dismissible m-4" >
3
+ <div class="alert__icon p-4">
4
+ <img id="alert-image" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/banner_failure.svg">
5
+ </div>
6
+ <p id="alert-message" class="text-regular text-left"></p>
7
+ <button class="btn-close mr-3 notice-dismiss">×</button>
8
+ </div>
9
+ </div>
10
+
11
+ <?php require_once (IUBENDA_PLUGIN_PATH . 'views/partials/welcomeScreenHeader.php'); ?>
12
+
13
+ <?php
14
+ $radar = new RadarService();
15
+
16
+ if (!empty($radar->apiConfiguration) && iub_array_get($radar->apiConfiguration, 'status') == 'completed') {
17
+ require_once IUBENDA_PLUGIN_PATH . '/views/partials/header_scanned.php';
18
+ } else {
19
+ ?>
20
+ <div class="p-4 my-5 text-center">
21
+ <span class="inline-spinner lg text-gray"></span>
22
+ <p class="m-0 mt-3 text-md"><?php _e('Analyzing your website', 'iubenda') ?>...</p>
23
+ </div>
24
+
25
+ <div class="mt-4 pt-4">
26
+ <h2 class="text-md m-0 mb-4"><?php _e('This is what you may need to be compliant', 'iubenda') ?>:</h2>
27
+ </div>
28
+ <?php
29
+ }
30
+ ?>
31
+
32
+
33
+ <div>
34
+ <ul class="list_radar m-0 mt-4 px-4">
35
+ <?php foreach (iubenda()->serviceRating->rating_calculation_components() as $key => $service) : ?>
36
+ <li class="list_radar__item my-5 my-lg-0 mx-lg-3 list_radar__item--<?php echo iub_array_get($radar->apiConfiguration, 'status') == 'completed' ? iub_array_get($service, 'status') == true ? 'on':'off' : null; ?> iubenda-<?php echo $key ?>-item">
37
+ <figure><img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/list_radar_<?php echo $key; ?>.svg"></figure>
38
+ <p class="text-bold m-0 mx-4"><?php echo $service['label']; ?></p>
39
+ </li>
40
+ <?php endforeach; ?>
41
+ </ul>
42
+ </div>
views/partials/header.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <header class="text-center">
2
+ <a href="https://www.iubenda.com" target="_blank">
3
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/iubenda_logo.svg" alt="iubenda logo">
4
+ </a>
5
+ </header>
6
+
7
+ <div id="iubenda-alert" class="p-2 hidden" style="width: 90%;max-width: 1140px;margin: 0 auto;" >
8
+ <div class="alert alert--failure">
9
+ <div class="alert__icon p-4">
10
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/banner_failure.svg">
11
+ </div>
12
+ <p class="text-md text-lg-left" id="iubenda-alert-content"></p>
13
+ </div>
14
+ </div>
views/partials/header_scanned.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <div class="my-5">
2
+ <div class="circularBar" id="iubendaRadarCircularBar" data-perc="<?php echo iubenda()->serviceRating->services_percentage() ?>"></div>
3
+ <h2 class="text-md mt-2 mb-1"><?php _e('Your rating', 'iubenda') ?></h2>
4
+ <p class="m-0"><?php _e('We have analyzed your website in background and this is the result.', 'iubenda') ?></p>
5
+ </div>
views/partials/integrateFooter.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <hr>
2
+ <div class="px-3 m-4 d-flex align-items-center justify-content-between">
3
+ <button type='reset' class="btn btn-gray-lighter btn-sm"><?php _e('Reset settings', 'iubenda') ?></button>
4
+ <button type="submit" class="btn btn-green-primary btn-sm"><span class="button__text"><?php _e('Integrate', 'iubenda') ?></span></button>
5
+ </div>
views/partials/languagesTabs.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="mb-3 p-0">
2
+
3
+ <fieldset class="paste_embed_code tabs tabs--style2">
4
+
5
+ <ul class="tabs__nav">
6
+ <?php foreach(iubenda()->languages as $k => $v): ?>
7
+ <li id="<?php echo "code_{$k}-iubenda_{$service['name']}_solution_tab" ?>" class="tabs__nav__item <?php echo $k == iubenda()->lang_default?'active':false ; ?>" data-target="tab-<?php echo $k ; ?>" data-group="language-tabs">
8
+ <?php echo strtoupper($k) ; ?>
9
+ </li>
10
+ <?php endforeach; ?>
11
+ </ul>
12
+
13
+ <?php
14
+ $product_helper = new ProductHelper();
15
+
16
+ foreach($product_helper->get_languages() as $lang_id => $v):
17
+ $method = "get_{$key}_embed_code_by_lang";
18
+ $code = $product_helper->{$method}($lang_id);
19
+ ?>
20
+ <div data-target="tab-<?php echo $lang_id ; ?>" class="tabs__target <?php echo $lang_id == iubenda()->lang_default || $lang_id == 'default'? 'active': '' ; ?>" data-group="language-tabs">
21
+ <textarea class='form-control text-sm m-0 iub-language-code iub-embed-code-<?php echo $key; ?>' data-language="<?php echo $lang_id; ?>" placeholder='<?php _e('Paste your embed code here', 'iubenda') ?>' name='iubenda_<?php echo $service['name']; ?>_solution[code_<?php echo $lang_id ; ?>]' rows='4'><?php echo $code ?></textarea>
22
+ </div>
23
+ <?php endforeach; ?>
24
+
25
+ </fieldset>
26
+ <div class="text-right mt-2">
27
+ <a target="_blank" href="<?php echo iubenda()->settings->links["how_generate_{$key}"]; ?>" class="link link-helper"><span class="tooltip-icon mr-2">?</span><?php _e('Where can I find this code?', 'iubenda') ?></a>
28
+ </div>
29
+ </div>
views/partials/modals/modal_almost_there.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="modalAlmostThere">
2
+
3
+ <div class="text-center">
4
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_almost_there.svg" alt="" />
5
+ <h2 class="text-lg"><?php _e('Nice! We are almost there.', 'iubenda') ?></h2>
6
+ <p class="text-regular pb-3"><?php _e('Since you already activated some products for this website, we just ask you to copy and paste the embedding code of the product you already have to syncronize your iubenda acount with WP plugin.', 'iubenda') ?></p>
7
+ </div>
8
+
9
+ <form class="ajax-form">
10
+ <input hidden name="action" value="update_options">
11
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
12
+
13
+ <h4 class="mb-3"><?php _e('Select products you have already activated', 'iubenda') ?></h4>
14
+ <div class="radio-cards pb-3 mb-4">
15
+
16
+ <?php foreach(iubenda()->settings->services as $key => $service): ?>
17
+ <label for="radio-card-<?php echo $key; ?>" class="radio-card">
18
+ <input type="checkbox" name="iubenda_<?php echo $service['name']; ?>_solution_status" class="select-product-checkbox section-checkbox-control<?php if($key == 'cs'): echo ' required-control'; endif;?>" data-section-name="#section-<?php echo $key; ?>" <?php if($key == 'cs'): echo 'data-required-control="#submit-btn"'; endif;?> value="true" id="radio-card-<?php echo $key; ?>" <?php echo $service['status']=='true' ? 'checked':''; ?>/>
19
+ <span class="check-icon"></span>
20
+
21
+ <div>
22
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/checkboxes/<?php echo $key; ?>_icon.svg" alt="<?php echo $service['label']; ?>" />
23
+ <span>
24
+ <?php echo $service['label']; ?>
25
+ <?php if ($key == 'cs'): echo __('(required)', 'iubenda'); endif; ?>
26
+ </span>
27
+ </div>
28
+ </label>
29
+
30
+ <?php endforeach; ?>
31
+
32
+ </div>
33
+
34
+ <?php foreach(iubenda()->settings->services as $key => $service): ?>
35
+ <?php if ($key == 'cons'): ?>
36
+ <section id="section-<?php echo $key; ?>" class="<?php echo $service['status']=='true' ? '':'hidden'; ?>">
37
+ <h4 class="mb-3"><?php _e('Consent Solution API key', 'iubenda') ?></h4>
38
+ <fieldset class="paste_embed_code">
39
+ <input name="public_api_key" class="form field-input" type="text" value="<?php echo iubenda()->options['cons']['public_api_key'] ?>" placeholder="<?php _e('Paste your API key here', 'iubenda') ?>">
40
+ </fieldset>
41
+ <div class="text-right mt-2">
42
+ <a target="_blank" href="<?php echo iubenda()->settings->links['how_generate_cons']; ?>" class="link link-helper"><span class="tooltip-icon mr-2">?</span><?php _e('Where can I find this code?', 'iubenda') ?></a>
43
+ </div>
44
+ </section>
45
+ <?php else: ?>
46
+ <section id="section-<?php echo $key; ?>" class="<?php echo $service['status']=='true' ? '':'hidden'; ?>">
47
+ <h4 class="mb-3"><?php echo $service['label']; ?></h4>
48
+ <?php
49
+ // Check if we support current theme to attach legal
50
+ if (!iubenda()->check_if_we_support_current_theme_to_attach_legal()) {
51
+ $url = 'javascript:void(0)';
52
+
53
+ if(iubenda()->widget->check_current_theme_supports_widget()){
54
+ $url = admin_url( 'widgets.php' );
55
+ }elseif(iubenda()->block->check_current_theme_supports_blocks()){
56
+ $url = admin_url( 'site-editor.php' );
57
+ }
58
+
59
+ ?>
60
+ <div class="notice notice--warning mt-2 mb-4 p-3 d-flex align-items-center text-warning text-xs">
61
+ <img class="mr-2" style="width: 3rem !important" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/warning-icon.svg">
62
+ <p><?php echo sprintf( __( 'We were not able to add a "Legal" widget/block to the footer as your theme is not compatible, you can position the "Legal" widget/block manually from <a href="%s" target="_blank">here</a>.', 'iubenda' ), esc_url( $url ) ) ?></p>
63
+ </div>
64
+ <?php
65
+ }
66
+ ?>
67
+ <?php require IUBENDA_PLUGIN_PATH . '/views/partials/languagesTabs.php'; ?>
68
+ </section>
69
+ <?php endif; ?>
70
+
71
+ <?php endforeach; ?>
72
+
73
+ <div class="text-center">
74
+ <button type="submit" class="btn btn-green-primary btn-sm mt-5 hidden" id="submit-btn" onclick="_paq.push(['trackEvent', 'Click', 'Synchronize products']);">
75
+ <span class="button__text"><?php _e('Synchronize products', 'iubenda') ?></span>
76
+ </button>
77
+ </div>
78
+
79
+ </form>
80
+
81
+ </div>
views/partials/modals/modal_no_website_found.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="modal-no-website-found" class="modal" style="z-index: 999999 !important;">
2
+ <div class="modal__window modal__window--md p-4 p-lg-5">
3
+ <div class="modalSync">
4
+ <img class="ml-4" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_no_website_found.svg" alt="" />
5
+ <h1 class="text-lg">
6
+ <?php _e('Ooops! <br> No website found with this embed code.', 'iubenda') ?>
7
+ </h1>
8
+ <p class="mb-4"><?php _e('It seems that it is not possible to access your data with the code you pasted, do you want to try again or do you prefer to start configuring your website from scratch?', 'iubenda') ?></p>
9
+
10
+ <button class="btn btn-gray-lighter btn-block btn-sm mb-3 hide-modal" data-modal-name="#modal-no-website-found" href="javascript:void(0)" onclick="_paq.push(['trackEvent', 'Click', 'Try again']);"><?php _e('Try again', 'iubenda') ?></button>
11
+ <div class="btn btn-gray-lighter btn-block btn-sm show-modal" data-modal-name="#modal-setup-screen" onclick="_paq.push(['trackEvent', 'Click', 'I want to start from scratch']);"> <?php _e('I want to start from scratch', 'iubenda') ?></div>
12
+ </div>
13
+ </div>
14
+ </div>
views/partials/modals/modal_ops_embed_invalid.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="modal-no-website-found" class="modal" style="z-index: 999999 !important;">
2
+ <div class="modal__window modal__window--md p-4 p-lg-5">
3
+ <div class="modalSync">
4
+ <img class="ml-4" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_no_website_found.svg" alt="" />
5
+ <h1 class="text-lg">
6
+ <?php _e('Ooops! <br> No website found with this embed code.', 'iubenda') ?>
7
+ </h1>
8
+ <p class="mb-4"><?php _e('It seems that it is not possible to access your data with the code you pasted, do you want to try again.', 'iubenda') ?></p>
9
+
10
+ <button class="btn btn-gray-lighter btn-block btn-sm mb-3 hide-modal" data-modal-name="#modal-no-website-found" href="javascript:void(0)"><?php _e('Try again', 'iubenda') ?></button>
11
+ </div>
12
+ </div>
13
+ </div>
views/partials/modals/modal_pp_created.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="modalSync">
2
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_pp_created.svg" alt="" />
3
+
4
+ <h1 class="text-xl">
5
+ <?php _e('Your privacy policy has been created!', 'iubenda') ?>
6
+ </h1>
7
+ <p class="mb-4"><?php _e('From here you can customize your privacy policy by adding the services you use within your website or you can customize the style of the button that displays your privacy policy.', 'iubenda') ?></p>
8
+
9
+ <a class="btn-green-primary btn-block btn-sm" href="<?php echo add_query_arg( array('view' => "integrate-setup"), iubenda()->base_url ); ?>"><?php _e('Got it', 'iubenda') ?></a>
10
+
11
+ </div>
views/partials/modals/modal_rating.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div>
2
+
3
+ <div class="text-center mb-5">
4
+
5
+ <h1 class="text-xl">
6
+ <?php _e('Your rating', 'iubenda') ?>
7
+ </h1>
8
+
9
+ <div class="circularBar" id="iubendaRadarCircularBar" data-perc="<?php echo iubenda()->serviceRating->services_percentage() ?>"></div>
10
+
11
+ <p class="text-gray text-md"><?php _e('Here’s how we calculate your rating.', 'iubenda') ?></p>
12
+
13
+ </div>
14
+
15
+
16
+ <ul class="list_radar list_radar--block">
17
+ <?php foreach (iubenda()->serviceRating->rating_calculation_components() as $rating_calculation_component_key => $rating_calculation_component_value) : ?>
18
+ <li class="list_radar__item mb-4 list_radar__item--<?php echo $rating_calculation_component_value['status']?'on':'off'; ?> iubenda-<?php echo $rating_calculation_component_key == 'cons' ? 'cs' : $rating_calculation_component_key ?>-item">
19
+ <figure><img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/list_radar_<?php echo $rating_calculation_component_key; ?>.svg"></figure>
20
+ <div>
21
+ <h2 class="m-0 mb-2"><?php echo $rating_calculation_component_value['label']; ?></h2>
22
+ <p><?php echo $rating_calculation_component_value['paragraph']; ?> <a target="_blank" href="<?php echo iubenda()->settings->links["how_{$rating_calculation_component_key}_rate"]; ?>" class="link-underline"><?php _e('Learn More', 'iubenda') ?></a></p>
23
+ </div>
24
+
25
+ </li>
26
+ <?php endforeach; ?>
27
+ </ul>
28
+
29
+ </div>
views/partials/modals/modal_select_language.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="modalSync">
2
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_sync.svg" alt="" />
3
+ <h1 class="text-lg mb-4">
4
+ <?php _e('Now, select your website language', 'iubenda') ?>
5
+ </h1>
6
+ <div>
7
+ <?php
8
+ $language_helper= new LanguageHelper();
9
+ $iubenda_intersect_supported_langs = [];
10
+ $default_website_language = $language_helper->get_default_website_language_code(true);
11
+
12
+ if (iubenda()->multilang && ! empty( iubenda()->languages )) {
13
+ $local_languages = array_keys(iubenda()->languages_locale) ?? [];
14
+ $local_languages = iubenda()->language_unification_locale_to_iub($local_languages);
15
+
16
+ $iubenda_intersect_supported_langs = array_intersect($local_languages, array_keys(iubenda()->supported_languages)) ?: [];
17
+ } else {
18
+ $iubenda_intersect_supported_langs = array_intersect([iub_array_get(iubenda()->lang_mapping, get_locale())], array_values(iubenda()->lang_mapping)) ?: [];
19
+ }
20
+ // Fallback to EN if no supported local languages intersect with iubenda supported languages
21
+ if (empty($iubenda_intersect_supported_langs)) {
22
+ $iubenda_intersect_supported_langs[] = 'en';
23
+ }
24
+
25
+ // Unify intersect (iubenda with local) supported languages by STR to Lower function
26
+ $iubenda_intersect_supported_langs = array_map('strtolower', $iubenda_intersect_supported_langs);
27
+ ?>
28
+ <select id="iub-website-language" name="website-language" required>
29
+ <?php foreach (iubenda()->supported_languages as $key => $label): ?>
30
+ <option <?php echo (strtolower($default_website_language) == strtolower($key)) ? 'selected' : ''; ?> <?php echo (!in_array(strtolower($key), $iubenda_intersect_supported_langs)) ?'disabled' : ''; ?> value=<?php echo $key; ?>><?php echo $label; ?></option>
31
+ <?php endforeach; ?>
32
+ </select>
33
+ </div>
34
+ <?php if (empty((new ProductHelper())->get_local_supported_language())):?>
35
+ <div class="notice notice--warning mt-2 mb-4 p-3 d-flex align-items-center text-warning text-xs">
36
+ <img class="mr-2" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/warning-icon.svg">
37
+ <p class="text-left"><?php _e( 'Since there is no common language between the supported languages of iubenda and the available languages on the current website, The default one will be English and the CS/PP will be shown on your default website language', 'iubenda' ) ?></p>
38
+ </div>
39
+ <?php endif; ?>
40
+ <br>
41
+ <div id="iubenda-policy-config-start"></div>
42
+ </div>
43
+ <script>
44
+ var _iub = _iub || [];
45
+
46
+ _iub.quick_generator = {
47
+ input:{
48
+ privacy_policy:{
49
+ type: 'web_site',
50
+ cookie_solution: true,
51
+ url: '<?php echo get_site_url() ?>',
52
+ langs: ['<?php echo $default_website_language ?>']
53
+ },
54
+ user:{
55
+ email: '<?php echo get_bloginfo( "admin_email" ) ?>',
56
+ },
57
+ },
58
+ no_style:true,
59
+ css:"background-color:#e7e7e7;cursor:pointer;color: #585858;padding: 0.5rem 1.7rem;font-size: .95rem;border: 0;border-radius: 3rem;font-weight: bold;width: 100%;",
60
+ placeholder:document.getElementById("iubenda-policy-config-start"),
61
+ callback:iubendaQuickGeneratorCallback,
62
+ api_key:"c52997770b2613f6b0d8b6becffeff8d8071a6ab",
63
+ language: "<?php echo $language_helper->get_user_profile_language_code(true)?>",
64
+ caption:"<?php echo __('Continue' ,'iubenda')?>"
65
+ };
66
+
67
+ function iubendaQuickGeneratorCallback(payload) {
68
+ _paq.push(['trackEvent', 'Event', 'Quick generator api done']);
69
+ jQuery.ajax({
70
+ type: "POST",
71
+ dataType: "json",
72
+ url: iub_js_vars['site_url'] + "/wp-admin/admin-ajax.php",
73
+ data : {action: "quick_generator_api", payload: payload},
74
+ success: function(result){
75
+ if (result.status === 'done') {
76
+ window.location = result.redirect
77
+ }else{
78
+
79
+ }
80
+ },
81
+ error: function(response) { // if error occured
82
+ jQuery("#alert-div").addClass("alert--failure");
83
+ jQuery("#alert-image").attr('src',iub_js_vars['plugin_url'] + '/assets/images/banner_failure.svg')
84
+ jQuery("#alert-message").text(response.responseText);
85
+
86
+ jQuery("#alert-div").removeClass("hidden");
87
+ },
88
+ });
89
+ }
90
+
91
+ </script>
views/partials/modals/modal_sync.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <div class="modalSync">
2
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/modals/modal_sync.svg" alt="" />
3
+ <h1 class="text-lg mb-4">
4
+ <?php _e('First of all, tell us if you already use our products for this website or if you want to start from scratch', 'iubenda') ?>
5
+ </h1>
6
+ <button class="btn btn-gray-lighter btn-block btn-sm mb-3 show-modal" data-modal-name="#modal-have-existing-products" onclick="_paq.push(['trackEvent', 'Click', 'I’ve already made the set up on iubenda.com']);"><?php _e('I’ve already made the set up on iubenda.com', 'iubenda') ?></button>
7
+ <div class="mb-3"><?php _e('or', 'iubenda') ?></div>
8
+ <button class="btn btn-gray-lighter btn-block btn-sm mb-3 show-modal" data-modal-name="#modal-select-language" onclick="_paq.push(['trackEvent', 'Click', 'I want to start from scratch']);"><?php _e('I want to start from scratch', 'iubenda') ?></button>
9
+ </div>
views/partials/product-card.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="service-card">
2
+
3
+ <div class="flex-fill d-flex flex-direction-column">
4
+
5
+ <div class="d-flex justify-content-end p-3">
6
+ <a target="_blank" href="<?php echo iubenda()->settings->links["about_{$serviceKey}"]; ?>" class="tooltip-icon">?</a>
7
+ </div>
8
+
9
+ <div class="text-center pb-4 flex-fill d-flex align-items-center justify-content-center flex-direction-column">
10
+ <img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/service_cards/<?php echo $serviceKey; ?>_icon.svg">
11
+ <h3 class="text-regular text-bold text-gray m-0"><?php echo $serviceOptions['label']; ?></h3>
12
+ </div>
13
+
14
+ <?php
15
+ //Check if the site_id is not entered before
16
+ $site_id = iub_array_get(iubenda()->options['global_options'], 'site_id') ?: null;
17
+ if(isset($serviceOptions['settings']) && $site_id):
18
+ ?>
19
+ <ul id="configiration-iubenda-<?php echo $serviceKey ?>" class="service-on text-gray text-xs " <?php echo $serviceOptions['status']!='true' ? 'style="display: none;"':''; ?> id="toggleServiceOn">
20
+ <?php
21
+ foreach (iub_array_get($serviceOptions, 'settings', []) ?: [] as $setting) :
22
+ $value = '';
23
+ if ($setting['label'] === 'Version') {
24
+ continue;
25
+ }
26
+
27
+ if($setting['value'] == 'black'){
28
+ $value = 'Dark';
29
+ }elseif($setting['value'] == 'white'){
30
+ $value = 'Light';
31
+ }else{
32
+ $value = $setting['value'];
33
+ }
34
+ ?>
35
+ <li class="mr-3"><span class="text-bold"><?php echo ucfirst($setting['label']); ?>:</span> <?php echo ucfirst($value); ?></li>
36
+ <?php endforeach; ?>
37
+ </ul>
38
+ <?php endif; ?>
39
+
40
+ <hr>
41
+
42
+ <div class="d-flex align-items-center justify-content-between p-3">
43
+ <div class="switch align-items-center">
44
+ <input type="checkbox" class="service-checkbox" data-redirect="<?php echo add_query_arg(array('view' => "$serviceKey-configuration"), iubenda()->base_url ); ?>" data-service-key="iubenda-<?php echo $serviceKey; ?>" data-service-name="iubenda_<?php echo $serviceOptions['name']; ?>_solution" id="toggle-<?php echo $serviceKey; ?>" <?php echo $serviceOptions['status']=='true' ? 'checked':' '; ?> />
45
+ <label for="toggle-<?php echo $serviceKey; ?>"></label>
46
+ <p class="notification text-xs text-bold text-gray-lighter ml-2" id="<?php echo "iubenda-{$serviceKey}-status-label" ?>" data-status-label-off="<?php _e('Service off', 'iubenda') ?>"><?php $serviceOptions['status']=='true' ? _e('Service on', 'iubenda') : _e('Service off', 'iubenda') ?></p>
47
+ </div>
48
+ <a class="btn btn-gray-lighter btn-xs" href="<?php echo add_query_arg(array('view' => "$serviceKey-configuration"), iubenda()->base_url ); ?>" onclick="_paq.push(['trackEvent', 'Click', '<?php echo $serviceOptions['label']. " configuration" ?>']);"><?php _e('Configure', 'iubenda') ?></a>
49
+ </div>
50
+
51
+ </div>
52
+ </div>
views/partials/siteInfo.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="siteinfo p-4 d-block d-lg-flex justify-content-between">
2
+ <div class="d-block d-lg-flex align-items-center text-center text-lg-left">
3
+ <div class="siteinfo--icon"><img src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/pc_screen_icon.svg"></div>
4
+ <?php
5
+ $url = 'https://www.iubenda.com/account';
6
+
7
+ if (!empty(iubenda()->settings->links['privacy_policy_generator_edit'])) {
8
+ $url = iubenda()->settings->links['privacy_policy_generator_edit'];
9
+ }
10
+ ?>
11
+ <div>
12
+ <h1 class="text-bold text-lg m-0"><?php echo parse_url(home_url())['host']; ?></h1>
13
+ <?php if (isset($show_products_page) && $show_products_page): ?>
14
+ <a class="link-underline" href="<?php echo add_query_arg(['view' => "plugin-settings"], iubenda()->base_url); ?>"><?php _e('Plugin settings', 'iubenda') ?></a>
15
+ <?php endif; ?>
16
+ </div>
17
+ </div>
18
+ <div class="d-block d-lg-flex mt-lg-0 mt-4 align-items-center text-center text-lg-right">
19
+ <div class="mr-lg-3 mb-lg-0 mb-4">
20
+ <p class="m-0 text-bold text-md"><?php _e('Your rating', 'iubenda') ?></p>
21
+ <span class="btn-reset link-underline-dashed text-gray show-modal show-rating-modal"><?php _e('How is it calculated?', 'iubenda') ?></span>
22
+ </div>
23
+ <div class="circularBar sm show-modal show-rating-modal" id="iubendaRadarCircularBar" data-perc="<?php echo iubenda()->serviceRating->services_percentage() ?>" onclick="_paq.push(['trackEvent', 'Click', 'How is it calculated?']);"></div>
24
+ </div>
25
+ </div>
26
+ <hr>
27
+ <!-- Modal rating -->
28
+ <div id="modal-rating" class="modal">
29
+ <div class="modal__window modal__window--md p-4 p-lg-5">
30
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_rating.php'; ?>
31
+ </div>
32
+ </div>
views/partials/welcomeScreenHeader.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <div>
2
+ <h1 class="text-xl mb-1 m-0"><?php _e('Welcome to iubenda!', 'iubenda') ?></h1>
3
+ <p class="text-md m-0"><?php _e('Our plugin will help you to make your website compliant in minutes.', 'iubenda') ?></p>
4
+ </div>
views/plugin-settings.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/siteInfo.php'; ?>
4
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/breadcrumb.php'; ?>
5
+ <form class="ajax-form-to-options">
6
+ <input hidden name="iubenda_section_name" value="iubenda_cookie_law_solution">
7
+ <input hidden name="iubenda_section_key" value="plugin-settings">
8
+ <input hidden name="action" value="ajax_save_options">
9
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
10
+ <div class="p-3 m-3">
11
+ <label class="checkbox-regular">
12
+ <input type="checkbox" class="mr-2" name="iubenda_plugin_settings[ctype]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['ctype'] ) ?>>
13
+ <span><?php _e('Restrict the plugin to run only for requests that have "Content-type: text / html" (recommended)', 'iubenda') ?></span>
14
+ </label>
15
+ <label class="checkbox-regular">
16
+ <input type="checkbox" class="mr-2" name="iubenda_plugin_settings[output_feed]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['output_feed'] ) ?>>
17
+ <span><?php _e('Do not run the plugin inside the RSS feed (recommended)', 'iubenda') ?></span>
18
+ </label>
19
+ <label class="checkbox-regular">
20
+ <input type="checkbox" class="mr-2" name="iubenda_plugin_settings[output_post]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['output_post'] ) ?>>
21
+ <span><?php _e('Do not run the plugin on POST requests (recommended)', 'iubenda') ?></span>
22
+ </label>
23
+ <label class="checkbox-regular">
24
+ <input type="checkbox" class="mr-2" name="iubenda_plugin_settings[deactivation]" value="1" <?php checked( true, (bool) iubenda()->options['cs']['deactivation'] ) ?>>
25
+ <span><?php _e('Delete all plugin data upon deactivation', 'iubenda') ?></span>
26
+ </label>
27
+ <div class="mt-5">
28
+ <h4><?php _e('Menu position', 'iubenda') ?></h4>
29
+ <div class="mb-2 d-flex align-items-center flex-wrap">
30
+ <label class="radio-regular mr-3">
31
+ <input type="radio" name="iubenda_plugin_settings[menu_position]" value="topmenu" class="mr-2" <?php checked( 'topmenu', iubenda()->options['cs']['menu_position'] ) ?>>
32
+ <span><?php _e('Top menu', 'iubenda') ?></span>
33
+ </label>
34
+ <label class="mr-4 radio-regular text-xs">
35
+ <input type="radio" name="iubenda_plugin_settings[menu_position]" value="submenu" class="mr-2" <?php checked( 'submenu', iubenda()->options['cs']['menu_position'] ) ?>>
36
+ <span><?php _e('Submenu', 'iubenda') ?></span>
37
+ </label>
38
+ </div>
39
+ <p class="description"><?php _e('Select whether to display iubenda in a top admin menu or the Settings submenu.', 'iubenda') ?></p>
40
+ </div>
41
+ </div>
42
+ <hr>
43
+ <div class="p-4 d-flex justify-content-end">
44
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'products-page'), iubenda()->base_url)) ?>'"/>
45
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
46
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
47
+ </button>
48
+ </div>
49
+ </form>
50
+ </div>
51
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/pp-configuration.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+
3
+ <div class="main-box">
4
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/siteInfo.php'; ?>
5
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/breadcrumb.php'; ?>
6
+ <form class="ajax-form-to-options">
7
+ <input hidden name="iubenda_section_name" value="iubenda_privacy_policy_solution">
8
+ <input hidden name="iubenda_section_key" value="pp">
9
+ <input hidden name="action" value="ajax_save_options">
10
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
11
+ <div class="px-4 px-lg-5">
12
+ <?php
13
+ $url = 'javascript:void(0)';
14
+
15
+ if (!empty(iubenda()->settings->links['privacy_policy_generator_edit'])) {
16
+ $url = iubenda()->settings->links['privacy_policy_generator_edit'];
17
+ }elseif(iub_array_get(iubenda()->options['global_options'], 'site_id')){
18
+ $url = iubenda()->settings->links['flow_page'];
19
+ }
20
+ ?>
21
+ <div class="text-center py-5">
22
+ <a target="_blank" href="<?php echo $url ?>" class="btn btn-green-secondary btn-sm"><?php _e('Setup your privacy and cookie policy on iubenda.com', 'iubenda') ?></a>
23
+ </div>
24
+ <hr>
25
+ <div class="py-5">
26
+ <h3 class="m-0 mb-4"><?php _e('Integration', 'iubenda') ?></h3>
27
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/buttonStyle.php'; ?>
28
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/buttonPosition.php'; ?>
29
+ </div>
30
+ </div>
31
+ <hr>
32
+ <div class="p-4 d-flex justify-content-end">
33
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'products-page'), iubenda()->base_url)) ?>'"/>
34
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
35
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
36
+ </button>
37
+ </div>
38
+ </form>
39
+ </div>
40
+
41
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/products-page.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/siteInfo.php'; ?>
4
+ <div class="p-3 m-3">
5
+ <?php
6
+ $result = array_filter(array_column($this->services, 'status'), function ($service) {
7
+ return (stripos($service, 'false') === false);
8
+ });
9
+ if (!$result) {
10
+ ?>
11
+ <div class="alert alert--failure is-dismissible m-4">
12
+ <div class="alert__icon p-4">
13
+ <img src="<?php echo IUBENDA_PLUGIN_URL . '/assets/images/banner_failure.svg' ?>">
14
+ </div>
15
+ <p id="products-page-alert-text" class="text-regular"><?php _e('It seems that you have not activated any of our services, we recommend you to activate them and increase your level of compliance and avoid risking fines.', 'iubenda') ?></p>
16
+ <button class="btn-close mr-3 notice-dismiss">×</button>
17
+ </div>
18
+ <?php
19
+ }
20
+
21
+ if(iubenda()->settings->print_notices()){
22
+ iubenda()->settings->print_notices();
23
+ }
24
+ ?>
25
+ <div class="configure-services-cards">
26
+ <?php
27
+ foreach (iubenda()->settings->services as $serviceKey => $serviceOptions) :
28
+ require IUBENDA_PLUGIN_PATH . '/views/partials/product-card.php';
29
+ endforeach;
30
+ ?>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <?php require_once IUBENDA_PLUGIN_PATH . 'views/partials/footer.php'; ?>
views/tc-configuration.php ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/header.php'; ?>
2
+ <div class="main-box">
3
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/siteInfo.php'; ?>
4
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/breadcrumb.php'; ?>
5
+ <form class="ajax-form-to-options">
6
+ <input hidden name="iubenda_section_name" value="iubenda_terms_conditions_solution">
7
+ <input hidden name="iubenda_section_key" value="tc">
8
+ <input hidden name="action" value="ajax_save_options">
9
+ <input hidden name="_redirect" value="<?php echo esc_url(add_query_arg(['view' => 'products-page'], iubenda()->base_url)) ?>">
10
+ <div class="mx-4 mx-lg-5">
11
+ <div class="py-4 py-lg-5 text-gray">
12
+ <p class=""><?php _e('Configure your terms and conditions on our website and paste here the embed code to integrate the button on your website.', 'iubenda') ?></p>
13
+ <div class="d-flex align-items-center ">
14
+ <div class="steps flex-shrink mr-2">1</div>
15
+ <p class="text-bold"> <?php _e('Configure terms and conditions by', 'iubenda') ?>
16
+ <a target="_blank" href="<?php echo iubenda()->settings->links['about_tc']; ?>" class="link-underline text-gray-lighter"> <?php _e('clicking here', 'iubenda') ?></a>
17
+ </p>
18
+ </div>
19
+ <div class="d-flex align-items-center ">
20
+ <div class="steps flex-shrink mr-2">2</div>
21
+ <p class="text-bold"> <?php _e('Paste your terms and conditions embed code here', 'iubenda') ?>
22
+ </p>
23
+ </div>
24
+ <div class="ml-5 mt-3">
25
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/languagesTabs.php'; ?>
26
+ </div>
27
+ </div>
28
+ <hr>
29
+ <div id="integration-div" class="py-5">
30
+ <h3 class="m-0 mb-4"><?php _e('Integration', 'iubenda') ?></h3>
31
+ <!-- Button Style -->
32
+ <h4><?php _e('Button style', 'iubenda') ?></h4>
33
+ <div class="scrollable gap-fixer">
34
+ <div class="button-style mb-3 d-flex">
35
+ <div class="m-1 mr-2">
36
+ <label class="radio-btn-style radio-btn-style-light">
37
+ <input type="radio" class="update-button-style" name="iubenda_terms_conditions_solution[button_style]" value="white" <?php echo checked( 'white', iub_array_get(iubenda()->options['tc'], 'button_style'), false) ?>>
38
+ <div>
39
+ <div class="btn-fake"></div>
40
+ </div>
41
+ <p class="text-xs text-center"><?php _e('Light', 'iubenda') ?></p>
42
+ </label>
43
+ </div>
44
+ <div class="m-1 mr-2">
45
+ <label class="radio-btn-style radio-btn-style-dark">
46
+ <input type="radio" class="update-button-style" name="iubenda_terms_conditions_solution[button_style]" value="black" <?php echo checked( 'black', iub_array_get(iubenda()->options['tc'], 'button_style'), false) ?>>
47
+ <div>
48
+ <div class="btn-fake"></div>
49
+ </div>
50
+ <p class="text-xs text-center"><?php _e('Dark', 'iubenda') ?></p>
51
+ </label>
52
+ </div>
53
+ </div>
54
+ </div>
55
+
56
+ <!-- Button Position -->
57
+ <h4><?php _e('Button position', 'iubenda') ?></h4>
58
+ <div class="mb-2 align-items-center flex-wrap">
59
+ <label class="radio-regular mb-3">
60
+ <input type="radio" name="iubenda_terms_conditions_solution[button_position]" value="automatic" class="mr-2 section-radio-control" data-section-group=".tc_button_position" data-section-name="#tc_button_position_automatic" <?php checked( 'automatic', iub_array_get(iubenda()->options['tc'], 'button_position')) ?>>
61
+ <span><?php _e('Add to the footer automatically', 'iubenda') ?></span>
62
+ </label>
63
+ <label class="mr-4 radio-regular text-xs">
64
+ <input type="radio" name="iubenda_terms_conditions_solution[button_position]" value="manual" class="mr-2 section-radio-control" data-section-group=".tc_button_position" data-section-name="#tc_button_position_manually" <?php checked( 'manual', iub_array_get(iubenda()->options['tc'], 'button_position')) ?>>
65
+ <span><?php _e('Integrate manually', 'iubenda') ?></span>
66
+ </label>
67
+ </div>
68
+ <?php
69
+ // Check if we support current theme to attach legal
70
+ if (!iubenda()->check_if_we_support_current_theme_to_attach_legal()) {
71
+ $url = 'javascript:void(0)';
72
+
73
+ if(iubenda()->widget->check_current_theme_supports_widget()){
74
+ $url = admin_url( 'widgets.php' );
75
+ }elseif(iubenda()->block->check_current_theme_supports_blocks()){
76
+ $url = admin_url( 'site-editor.php' );
77
+ }
78
+
79
+ ?>
80
+ <section id="tc_button_position_automatic" class="tc_button_position <?php echo iub_array_get(iubenda()->options['tc'], 'button_position') == 'automatic' ?:'hidden' ; ?>">
81
+ <div class="notice notice--warning mt-2 mb-4 p-3 d-flex align-items-center text-warning text-xs">
82
+ <img class="mr-2" src="<?php echo IUBENDA_PLUGIN_URL ?>/assets/images/warning-icon.svg">
83
+ <p><?php echo sprintf( __( 'We were not able to add a "Legal" widget/block to the footer as your theme is not compatible, you can position the "Legal" widget/block manually from <a href="%s" target="_blank">here</a>.', 'iubenda' ), esc_url( $url ) ) ?></p>
84
+ </div>
85
+ </section>
86
+ <?php
87
+ }
88
+ ?>
89
+ <section id="tc_button_position_manually" class="tc_button_position <?php echo iub_array_get(iubenda()->options['tc'], 'button_position') == 'manual' ?:'hidden' ; ?>">
90
+ <div class="subOptions">
91
+
92
+ <p class="text-gray text-sm mb-4"><?php _e('Just copy and paste the embed code (WP shortcode or HTML) where you want the button to appear.', 'iubenda') ?></p>
93
+
94
+ <div class="d-lg-flex">
95
+ <div class="flex-fill mb-3 mr-0 mr-lg-5">
96
+ <h4><?php _e('WP shortcode (recommended)', 'iubenda') ?></h4>
97
+ <fieldset class="paste_embed_code">
98
+ <input type="text" class="form-control text-sm m-0" value="[iub-tc-button]" readonly />
99
+ </fieldset>
100
+ <p class="text-gray-lighter"><?php _e('A shortcode is a tiny bit of code that allows embedding interactive elements or creating complex page layouts with a minimal effort.', 'iubenda') ?></p>
101
+ </div>
102
+ <div class="flex-fill mb-0">
103
+ <h4><?php _e('HTML', 'iubenda') ?></h4>
104
+ <fieldset class="paste_embed_code tabs tabs--style2">
105
+ <ul class="tabs__nav">
106
+ <?php foreach(iubenda()->languages as $k => $v): ?>
107
+ <li class="tabs__nav__item <?php echo $k == iubenda()->lang_default?'active':false ; ?>" data-target="tab-<?php echo $k ; ?>" id="iub-embed-code-readonly-<?php echo $k ; ?>" data-group="language-tabs">
108
+ <?php echo strtoupper($k) ; ?>
109
+ </li>
110
+ <?php endforeach; ?>
111
+ </ul>
112
+ <?php
113
+ $languages = (new ProductHelper())->get_languages();
114
+ foreach($languages as $lang_id => $v):
115
+ $code = iub_array_get(iubenda()->options['tc'], "code_{$lang_id}");
116
+ $code = html_entity_decode(iubenda()->parse_code($code));
117
+ ?>
118
+ <div data-target="tab-<?php echo $lang_id ; ?>" class="tabs__target <?php echo $lang_id == iubenda()->lang_default || $lang_id == 'default'? 'active': '' ; ?>" data-group="language-tabs">
119
+ <textarea readonly class='form-control text-sm m-0 iub-tc-code' id="iub-tc-code-<?php echo $lang_id; ?>" rows='4'><?php echo $code ?></textarea>
120
+ </div>
121
+ <?php endforeach; ?>
122
+
123
+ </fieldset>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </section>
128
+ </div>
129
+ </div>
130
+ <hr>
131
+ <div class="p-4 d-flex justify-content-end">
132
+ <input class="btn btn-gray-lighter btn-sm mr-2" type="button" value="<?php _e('Cancel', 'iubenda') ?>" onclick="window.location.href = '<?php echo esc_url(add_query_arg(array('view' => 'products-page'), iubenda()->base_url)) ?>'"/>
133
+ <button type="submit" class="btn btn-green-primary btn-sm" value="Save" name="save">
134
+ <span class="button__text"><?php _e('Save settings', 'iubenda') ?></span>
135
+ </button>
136
+ </div>
137
+ </form>
138
+ </div>
139
+
140
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/modals/modal_ops_embed_invalid.php'; ?>
141
+ <?php require_once IUBENDA_PLUGIN_PATH . '/views/partials/footer.php'; ?>
142
+ <script>
143
+ jQuery('.iub-language-code').on('keyup change past', function() {
144
+ if(check_if_all_embed_codes_is_empty()){
145
+ jQuery('#integration-div').hide()
146
+ }else{
147
+ jQuery('#integration-div').show()
148
+ }
149
+ }).trigger('change');
150
+
151
+ function check_if_all_embed_codes_is_empty(){
152
+ var empty = true;
153
+ jQuery('.iub-language-code').each(function() {
154
+ if (jQuery(this).val() != "") {
155
+ empty = false;
156
+ return false;
157
+ }
158
+ });
159
+
160
+ return empty
161
+ }
162
+ </script>