Version Description
- Cookie Notice Popup (Premium Edition)
- HTML nun im Hinweisfeld fr Kommentare möglich
- Bugfix: mehr als 10 Anfragen in der Liste bei Datenauszug und Löschanfrage möglich
- Bugfix: Kompatibilität zum Divi Theme hergestellt
- Text bei WooCommerce Datenschutzcheckbox nun editierbar
- Benutzerdefinierte Trackerscripts für Google Analytics und FB Pixel (ab Blog Edition)
- kleinere Bugfixes und Verbesserungen
Download this release
Release Info
Developer | shapepress |
Plugin | WP DSGVO Tools |
Version | 2.0.0 |
Comparing to | |
See all releases |
Code changes from version 1.5.6 to 2.0.0
- README.txt +22 -8
- admin/base.php +38 -38
- admin/class-sp-dsgvo-admin-action.php +24 -24
- admin/class-sp-dsgvo-admin-tab.php +2 -2
- admin/class-sp-dsgvo-admin.php +48 -37
- admin/css/sp-dsgvo-admin.css +37 -4
- admin/images/logobackuppng +0 -0
- admin/images/logobackupsvg +9 -9
- admin/js/sp-dsgvo-admin.js +113 -2
- admin/tabs/common-settings/class-sp-dsgvo-common-settings-action.php +43 -50
- admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php +99 -86
- admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php +17 -14
- admin/tabs/common-settings/page.php +218 -200
- admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-action.php +78 -60
- admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php +17 -14
- admin/tabs/cookie-notice/page.php +674 -434
- admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php +6 -3
- admin/tabs/gravity-forms/page.php +13 -21
- admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php +7 -4
- admin/tabs/imprint/page.php +21 -21
- admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php +5 -3
- admin/tabs/integrations/page.php +3 -3
- admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-action.php +8 -1
- admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php +6 -3
- admin/tabs/privacy-policy/page.php +46 -18
- admin/tabs/services/class-sp-dsgvo-add-service-action.php +6 -3
- admin/tabs/services/class-sp-dsgvo-delete-service-action.php +4 -4
- admin/tabs/services/class-sp-dsgvo-services-action.php +5 -2
- admin/tabs/services/class-sp-dsgvo-services-tab.php +8 -5
- admin/tabs/services/page.php +83 -46
- admin/tabs/setup/class-sp-dsgvo-create-page-action.php +11 -13
- admin/tabs/setup/class-sp-dsgvo-setup-tab.php +6 -4
- admin/tabs/setup/page.php +4 -99
- admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-action.php +5 -0
- admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php +7 -4
- admin/tabs/subject-access-request/page.php +76 -53
- admin/tabs/super-unsubscribe/class-sp-dsgvo-dismiss-unsubscribe-action.php +16 -0
- admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php +9 -5
- admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php +6 -4
- admin/tabs/super-unsubscribe/page.php +144 -83
- includes/class-sp-dsgvo-ajax-action.php +21 -15
- includes/class-sp-dsgvo-cron.php +2 -2
- includes/class-sp-dsgvo-data-collecter.php +456 -424
- includes/class-sp-dsgvo-log.php +121 -121
- includes/class-sp-dsgvo-mail.php +32 -23
- includes/class-sp-dsgvo-pdf.php +70 -70
- includes/class-sp-dsgvo-settings.php +92 -44
- includes/class-sp-dsgvo-slim-model.php +7 -4
- includes/class-sp-dsgvo.php +32 -24
- includes/cron/do-delete-data-request.php +12 -12
- includes/cron/do-subject-access-request.php +9 -9
- includes/helpers.php +318 -110
- includes/html/index-footer.php +37 -0
- includes/html/index-header.php +429 -0
- includes/integrations/bbpress/BbpressIntegration.php +126 -0
- includes/integrations/buddypress/BuddyPressIntegration.php +210 -0
- includes/integrations/cf7/Cf7Integration.php +145 -141
- includes/integrations/mailchimp/MailchimpAPI.php +445 -0
- includes/integrations/mailchimp/MailchimpIntegration.php +54 -0
- includes/integrations/mailchimp/page.php +20 -0
- includes/integrations/woocommerce/WoocommerceIntegration.php +141 -0
- includes/models/subject-access-request.php +17 -17
- includes/models/unsubscriber.php +19 -20
- languages/shapepress-dsgvo-de_DE.mo +0 -0
- languages/shapepress-dsgvo-de_DE.po +2216 -0
- languages/shapepress-dsgvo-en_EN.mo +0 -0
- languages/shapepress-dsgvo-en_EN.po +1967 -0
- public/actions/popup-accept.php +19 -0
- public/actions/user-permissions.php +22 -5
- public/class-sp-dsgvo-public.php +616 -435
- public/css/simplebar.css +105 -0
- public/css/sp-dsgvo-public.css +303 -10
- public/images/logo-md.png +0 -0
- public/js/simplebar.js +17 -0
- public/js/sp-dsgvo-public.js +349 -184
- public/shortcodes/decline-permission.php +1 -1
- public/shortcodes/display-services.php +1 -1
- public/shortcodes/explicit-permission.php +2 -2
- public/shortcodes/imprint.php +6 -0
- public/shortcodes/privacy-policy.php +6 -1
- public/shortcodes/privacy-settings-form-alt.php +89 -0
- public/shortcodes/privacy-settings-form.php +42 -40
- public/shortcodes/subject-access-request/download-subject-access-request.php +4 -4
- public/shortcodes/subject-access-request/subject-access-request-action.php +10 -2
- public/shortcodes/subject-access-request/subject-access-request.php +10 -10
- public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php +2 -2
- public/shortcodes/super-unsubscribe/unsubscribe-form-action.php +14 -4
- public/shortcodes/super-unsubscribe/unsubscribe-form.php +11 -11
- sp-dsgvo.php +80 -77
- templates/de_DE/emails/feedback.php +17 -0
- templates/de_DE/emails/footer.php +11 -0
- templates/de_DE/emails/header.php +220 -0
- templates/de_DE/emails/subject-access-request.php +116 -0
- templates/de_DE/emails/super-unsubscribe.php +106 -0
- templates/de_DE/imprint.txt +18 -0
- templates/de_DE/privacy-policy.txt +153 -0
- templates/en_EN/emails/feedback.php +17 -0
- templates/en_EN/emails/footer.php +11 -0
- templates/en_EN/emails/header.php +220 -0
- templates/en_EN/emails/subject-access-request.php +116 -0
- templates/en_EN/emails/super-unsubscribe.php +106 -0
- templates/en_EN/imprint.txt +18 -0
- templates/en_EN/privacy-policy.txt +156 -0
- templates/en_US/emails/feedback.php +17 -0
- templates/en_US/emails/footer.php +11 -0
- templates/en_US/emails/header.php +220 -0
- templates/en_US/emails/subject-access-request.php +116 -0
- templates/en_US/emails/super-unsubscribe.php +106 -0
- templates/en_US/imprint.txt +18 -0
- templates/en_US/privacy-policy.txt +156 -0
README.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== WP DSGVO Tools ===
|
2 |
-
Contributors: Shapepress
|
3 |
Donate link: https://wp-dsgvo.eu
|
4 |
Tags: gdpr, dsgvo, datenschutz, wordpress, compliance, data
|
5 |
Requires at least: 3.0.1
|
6 |
-
Tested up to: 4.9.
|
7 |
-
Stable tag:
|
8 |
Requires PHP: 5.6.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -24,7 +24,8 @@ Features
|
|
24 |
* Cookie Notice mit selektiven Opt-In & Opt-Out
|
25 |
* Recht auf Vergessenheit (mit Zeit Option)
|
26 |
* Userdaten Auskunft (als PDF und JSON) & Löschung
|
27 |
-
*
|
|
|
28 |
* Blog Kommentare Checkbox für DSGVO Zustimmung
|
29 |
* Pseudonomisierung
|
30 |
* VdV (Verzeichnis der Verarbeitungstätigkeiten)
|
@@ -36,19 +37,19 @@ Features
|
|
36 |
* Alle Features der Free Edition
|
37 |
* **anpassbare Cookie Notice**
|
38 |
* Texte der Checkbox bei den Kommentaren anpassbar
|
39 |
-
* **
|
|
|
40 |
|
41 |
**Premium Edition**
|
42 |
* Alle Features der Free und Blog Edition
|
|
|
43 |
* **Woocommerce Integration**
|
44 |
* Gravity Forms Integration
|
45 |
-
* **Filter zum Erweitern des Datenauszugs und der Löschanfrage**
|
46 |
* Mailchimp Integration
|
47 |
* **bbPress** Integration
|
48 |
* **buddyPress** Integration
|
49 |
* **Cookie Notice anpassbar**
|
50 |
* **Email Benachrichtigung bei neuen Anfragen**
|
51 |
-
* **WPML** Unterstützung inkl. englischer Datenschutztexte (String Translations)
|
52 |
* Support Forum & professioneller Support
|
53 |
* 12 Monate Premium Updates
|
54 |
|
@@ -76,9 +77,21 @@ WICHTIG: Vor der Installation bitte alle bisher aktivierten Cookie Notice Plugin
|
|
76 |
|
77 |
== Changelog ==
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
= 1.5.6 =
|
80 |
* Aktivierungsprobleme behoben
|
81 |
|
|
|
|
|
|
|
82 |
= 1.5.0 =
|
83 |
* WPML Unterstützung (nur Premium) inkl. englischer Datenschutztexte
|
84 |
* WooCommerce Option zur Zustimmung der Datenschutzbestimmungen beim Checkout (nur Premium)
|
@@ -102,7 +115,7 @@ WICHTIG: Vor der Installation bitte alle bisher aktivierten Cookie Notice Plugin
|
|
102 |
* Korrektur Email Betreff bei Löschanfrage
|
103 |
|
104 |
= 1.4.3 =
|
105 |
-
*
|
106 |
|
107 |
= 1.4.2 =
|
108 |
* Problem mit Cookie Notice behoben
|
@@ -130,6 +143,7 @@ WICHTIG: Vor der Installation bitte alle bisher aktivierten Cookie Notice Plugin
|
|
130 |
* Überarbeitung des Datenauszug Templates
|
131 |
* Ergänzung der Kommentartexte bei eingeloggten User beim Datenauszug
|
132 |
* Skriptverbesserung Kommentarcheckbox
|
|
|
133 |
|
134 |
= 1.3.5 =
|
135 |
* Verbesserung bei Kommentarcheckbox
|
1 |
=== WP DSGVO Tools ===
|
2 |
+
Contributors: Shapepress
|
3 |
Donate link: https://wp-dsgvo.eu
|
4 |
Tags: gdpr, dsgvo, datenschutz, wordpress, compliance, data
|
5 |
Requires at least: 3.0.1
|
6 |
+
Tested up to: 4.9.8
|
7 |
+
Stable tag: 2.0.0
|
8 |
Requires PHP: 5.6.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
24 |
* Cookie Notice mit selektiven Opt-In & Opt-Out
|
25 |
* Recht auf Vergessenheit (mit Zeit Option)
|
26 |
* Userdaten Auskunft (als PDF und JSON) & Löschung
|
27 |
+
* **WPML** Unterstützung inkl. englischer Datenschutztexte (String Translations)
|
28 |
+
* Contact Form 7 Integration
|
29 |
* Blog Kommentare Checkbox für DSGVO Zustimmung
|
30 |
* Pseudonomisierung
|
31 |
* VdV (Verzeichnis der Verarbeitungstätigkeiten)
|
37 |
* Alle Features der Free Edition
|
38 |
* **anpassbare Cookie Notice**
|
39 |
* Texte der Checkbox bei den Kommentaren anpassbar
|
40 |
+
* **Benutzerdefinierte Trackerscripts für Google Analytics und FB Pixel möglich**
|
41 |
+
* **Overlay** bei Cookie Notice um ein Agieren vor Zustimmung/Ablehnung zu verhindern
|
42 |
|
43 |
**Premium Edition**
|
44 |
* Alle Features der Free und Blog Edition
|
45 |
+
* Popup für Cookie Notice
|
46 |
* **Woocommerce Integration**
|
47 |
* Gravity Forms Integration
|
|
|
48 |
* Mailchimp Integration
|
49 |
* **bbPress** Integration
|
50 |
* **buddyPress** Integration
|
51 |
* **Cookie Notice anpassbar**
|
52 |
* **Email Benachrichtigung bei neuen Anfragen**
|
|
|
53 |
* Support Forum & professioneller Support
|
54 |
* 12 Monate Premium Updates
|
55 |
|
77 |
|
78 |
== Changelog ==
|
79 |
|
80 |
+
= 2.0.0 =
|
81 |
+
* Cookie Notice Popup (Premium Edition)
|
82 |
+
* HTML nun im Hinweisfeld f�r Kommentare möglich
|
83 |
+
* Bugfix: mehr als 10 Anfragen in der Liste bei Datenauszug und Löschanfrage möglich
|
84 |
+
* Bugfix: Kompatibilität zum Divi Theme hergestellt
|
85 |
+
* Text bei WooCommerce Datenschutzcheckbox nun editierbar
|
86 |
+
* Benutzerdefinierte Trackerscripts für Google Analytics und FB Pixel (ab Blog Edition)
|
87 |
+
* kleinere Bugfixes und Verbesserungen
|
88 |
+
|
89 |
= 1.5.6 =
|
90 |
* Aktivierungsprobleme behoben
|
91 |
|
92 |
+
= 1.5.1 =
|
93 |
+
* Bugfixes
|
94 |
+
|
95 |
= 1.5.0 =
|
96 |
* WPML Unterstützung (nur Premium) inkl. englischer Datenschutztexte
|
97 |
* WooCommerce Option zur Zustimmung der Datenschutzbestimmungen beim Checkout (nur Premium)
|
115 |
* Korrektur Email Betreff bei Löschanfrage
|
116 |
|
117 |
= 1.4.3 =
|
118 |
+
* Feature Request: Overlay bei Cookie Notice um ein Agieren vor Zustimmung/Ablehnung zu verhindern
|
119 |
|
120 |
= 1.4.2 =
|
121 |
* Problem mit Cookie Notice behoben
|
143 |
* Überarbeitung des Datenauszug Templates
|
144 |
* Ergänzung der Kommentartexte bei eingeloggten User beim Datenauszug
|
145 |
* Skriptverbesserung Kommentarcheckbox
|
146 |
+
* Filter zur Erweiterung des Datenauszugs und der Löschanfrage
|
147 |
|
148 |
= 1.3.5 =
|
149 |
* Verbesserung bei Kommentarcheckbox
|
admin/base.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<div class="wrap dsgvo-wrap" style="">
|
2 |
-
<h2
|
3 |
|
4 |
<h2 class="nav-tab-wrapper">
|
5 |
<?php foreach($tabs as $t): ?>
|
@@ -12,12 +12,12 @@
|
|
12 |
<?php endforeach; ?>
|
13 |
</h2>
|
14 |
|
15 |
-
<?php
|
16 |
-
if (isset($tabs[$tab])) {
|
17 |
-
$tabs[$tab]->page();
|
18 |
-
} else {
|
19 |
-
$tabs['common-settings']->page();
|
20 |
-
}
|
21 |
?>
|
22 |
</div>
|
23 |
|
@@ -29,81 +29,81 @@
|
|
29 |
<input type="hidden" name="action" value="admin-common-action">
|
30 |
|
31 |
<div style="border: dashed 1px black; padding: 10px;">
|
32 |
-
<span style="font-size: 1.2rem; line-height: 1.3rem;"
|
33 |
-
ist unverbindlich & ersetzt keine Expertenberatung</span>
|
34 |
</div>
|
35 |
-
<h2 style="margin-bottom: 0"
|
36 |
-
<small>(
|
37 |
<ul id="dsgvo-checklist">
|
38 |
<li><input id="cb_spdsgvo_cl_vdv" name="cb_spdsgvo_cl_vdv"
|
39 |
type="checkbox" class="cbChecklist" value="1"
|
40 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_vdv') === '1')? ' checked ' : ''; ?> /><span>
|
41 |
-
VdV (
|
42 |
-
&
|
43 |
</span></li>
|
44 |
<li><input id="cb_spdsgvo_cl_filled_out"
|
45 |
name="cb_spdsgvo_cl_filled_out" type="checkbox" class="cbChecklist"
|
46 |
value="1"
|
47 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_filled_out') === '1')? ' checked ' : ''; ?> /><span>
|
48 |
-
WP DSGVO Tools
|
49 |
<li><input id="cb_spdsgvo_cl_maintainance"
|
50 |
name="cb_spdsgvo_cl_maintainance" type="checkbox"
|
51 |
class="cbChecklist" value="1"
|
52 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_maintainance') === '1')? ' checked ' : ''; ?> /><span>
|
53 |
-
|
54 |
<li><input id="cb_spdsgvo_cl_security" name="cb_spdsgvo_cl_security"
|
55 |
type="checkbox" class="cbChecklist" value="1"
|
56 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_security') === '1')? ' checked ' : ''; ?> /><span>
|
57 |
-
|
58 |
-
Zugriff,...)</span></li>
|
59 |
<li><input id="cb_spdsgvo_cl_hosting" name="cb_spdsgvo_cl_hosting"
|
60 |
type="checkbox" class="cbChecklist" value="1"
|
61 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_hosting') === '1')? ' checked ' : ''; ?> /><span>
|
62 |
-
|
63 |
href="https://raidboxes.de/?aid=14330" target="_blank">Raidboxes</a>
|
64 |
</span></li>
|
65 |
<li><input id="cb_spdsgvo_cl_plugins" name="cb_spdsgvo_cl_plugins"
|
66 |
type="checkbox" class="cbChecklist" value="1"
|
67 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_plugins') === '1')? ' checked ' : ''; ?> /><span>
|
68 |
-
|
69 |
<li><input id="cb_spdsgvo_cl_experts" name="cb_spdsgvo_cl_experts"
|
70 |
type="checkbox" class="cbChecklist" value="1"
|
71 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_experts') === '1')? ' checked ' : ''; ?> /><span>
|
72 |
<a href="https://www.wp-dsgvo.eu/experten/"
|
73 |
-
target="_blank"
|
74 |
</span></li>
|
75 |
</ul>
|
76 |
-
<?php if (
|
77 |
-
<h1 style="margin-top: 1em"
|
78 |
<ul id="dsgvo-premium-featurelist">
|
79 |
-
<li
|
80 |
-
<li
|
81 |
</ul>
|
82 |
<div>
|
83 |
<a href="https://www.wp-dsgvo.eu/shop" target="_blank"
|
84 |
-
class="button button-primary" style="font-size: 1rem"
|
85 |
</div>
|
86 |
<?php endif;?>
|
87 |
-
|
|
|
88 |
<ul id="dsgvo-premium-featurelist">
|
89 |
-
<li
|
90 |
-
<li
|
91 |
-
<li
|
92 |
-
<li
|
93 |
-
<li
|
94 |
-
<li
|
|
|
95 |
</ul>
|
96 |
<div>
|
97 |
<a href="https://www.wp-dsgvo.eu/shop" target="_blank"
|
98 |
-
class="button button-primary" style="font-size: 1rem"
|
99 |
-
unser Premium Plugin</a>
|
100 |
</div>
|
101 |
<ul id="dsgvo-premium-featurelist-tipps">
|
102 |
-
<li
|
103 |
-
<li
|
104 |
-
<li
|
105 |
</ul>
|
|
|
106 |
|
107 |
|
108 |
</form>
|
109 |
-
</div>
|
1 |
<div class="wrap dsgvo-wrap" style="">
|
2 |
+
<h2><?php _e('WP DSGVO Tools', 'shapepress-dsgvo'); ?></h2>
|
3 |
|
4 |
<h2 class="nav-tab-wrapper">
|
5 |
<?php foreach($tabs as $t): ?>
|
12 |
<?php endforeach; ?>
|
13 |
</h2>
|
14 |
|
15 |
+
<?php
|
16 |
+
if (isset($tabs[$tab])) {
|
17 |
+
$tabs[$tab]->page();
|
18 |
+
} else {
|
19 |
+
$tabs['common-settings']->page();
|
20 |
+
}
|
21 |
?>
|
22 |
</div>
|
23 |
|
29 |
<input type="hidden" name="action" value="admin-common-action">
|
30 |
|
31 |
<div style="border: dashed 1px black; padding: 10px;">
|
32 |
+
<span style="font-size: 1.2rem; line-height: 1.3rem;"><?php _e('WP DSGVO Tools is not binding and does not replace expert advice','shapepress-dsgvo')?></span>
|
|
|
33 |
</div>
|
34 |
+
<h2 style="margin-bottom: 0"><?php _e('GDPR website self check','shapepress-dsgvo')?></h2>
|
35 |
+
<small>(<?php _e('Includes only your web presence!','shapepress-dsgvo')?>)</small>
|
36 |
<ul id="dsgvo-checklist">
|
37 |
<li><input id="cb_spdsgvo_cl_vdv" name="cb_spdsgvo_cl_vdv"
|
38 |
type="checkbox" class="cbChecklist" value="1"
|
39 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_vdv') === '1')? ' checked ' : ''; ?> /><span>
|
40 |
+
<?php _e('VdV (directory of processing times)','shapepress-dsgvo')?> <a href="https://www.wp-dsgvo.eu/spdsgvo-bin/wp-dsgvp-tools-vdv.xls"><?php _e('downloaded','shapepress-dsgvo')?></a>
|
41 |
+
& <?php _e('filled','shapepress-dsgvo')?>
|
42 |
</span></li>
|
43 |
<li><input id="cb_spdsgvo_cl_filled_out"
|
44 |
name="cb_spdsgvo_cl_filled_out" type="checkbox" class="cbChecklist"
|
45 |
value="1"
|
46 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_filled_out') === '1')? ' checked ' : ''; ?> /><span>
|
47 |
+
<?php _e('WP DSGVO Tools plugin completely filled','shapepress-dsgvo')?></span></li>
|
48 |
<li><input id="cb_spdsgvo_cl_maintainance"
|
49 |
name="cb_spdsgvo_cl_maintainance" type="checkbox"
|
50 |
class="cbChecklist" value="1"
|
51 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_maintainance') === '1')? ' checked ' : ''; ?> /><span>
|
52 |
+
<?php _e('Monthly maintenance of the website (maintenance contract with the web designer)','shapepress-dsgvo')?></span></li>
|
53 |
<li><input id="cb_spdsgvo_cl_security" name="cb_spdsgvo_cl_security"
|
54 |
type="checkbox" class="cbChecklist" value="1"
|
55 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_security') === '1')? ' checked ' : ''; ?> /><span>
|
56 |
+
<?php _e('Security Precautions (strong passwords, who has access, ...)','shapepress-dsgvo')?></span></li>
|
|
|
57 |
<li><input id="cb_spdsgvo_cl_hosting" name="cb_spdsgvo_cl_hosting"
|
58 |
type="checkbox" class="cbChecklist" value="1"
|
59 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_hosting') === '1')? ' checked ' : ''; ?> /><span>
|
60 |
+
<?php _e('GDPR compliant and secure web hosting? Our recommendation:','shapepress-dsgvo')?> <a
|
61 |
href="https://raidboxes.de/?aid=14330" target="_blank">Raidboxes</a>
|
62 |
</span></li>
|
63 |
<li><input id="cb_spdsgvo_cl_plugins" name="cb_spdsgvo_cl_plugins"
|
64 |
type="checkbox" class="cbChecklist" value="1"
|
65 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_plugins') === '1')? ' checked ' : ''; ?> /><span>
|
66 |
+
<?php _e('Check the security of unsupported plugins','shapepress-dsgvo')?></span></li>
|
67 |
<li><input id="cb_spdsgvo_cl_experts" name="cb_spdsgvo_cl_experts"
|
68 |
type="checkbox" class="cbChecklist" value="1"
|
69 |
<?= (SPDSGVOSettings::get('cb_spdsgvo_cl_experts') === '1')? ' checked ' : ''; ?> /><span>
|
70 |
<a href="https://www.wp-dsgvo.eu/experten/"
|
71 |
+
target="_blank"><?php _e('Expert advice','shapepress-dsgvo')?></a> <?php _e('requested','shapepress-dsgvo')?>
|
72 |
</span></li>
|
73 |
</ul>
|
74 |
+
<?php if (isValidPremiumEdition() == false && isValidBlogEdition() == false) : ?>
|
75 |
+
<h1 style="margin-top: 1em"><?php _e('Blog Edition','shapepress-dsgvo')?></h1>
|
76 |
<ul id="dsgvo-premium-featurelist">
|
77 |
+
<li><?php _e('Stylish Cookie Notice: Customize the look & feel of your Wordpress Page!','shapepress-dsgvo')?></li>
|
78 |
+
<li><?php _e('Texts customizable with comment checkbox','shapepress-dsgvo')?></li>
|
79 |
</ul>
|
80 |
<div>
|
81 |
<a href="https://www.wp-dsgvo.eu/shop" target="_blank"
|
82 |
+
class="button button-primary" style="font-size: 1rem"><?php _e('Get the Blog Edition now','shapepress-dsgvo')?></a>
|
83 |
</div>
|
84 |
<?php endif;?>
|
85 |
+
<?php if(isValidPremiumEdition() == false):?>
|
86 |
+
<h1 style="margin-top: 1em"><?php _e('Upgrade to Premium','shapepress-dsgvo')?></h1>
|
87 |
<ul id="dsgvo-premium-featurelist">
|
88 |
+
<li><?php _e('Cookie Notice Popup','shapepress-dsgvo')?></li>
|
89 |
+
<li><?php _e('Support & Community','shapepress-dsgvo')?></li>
|
90 |
+
<li><?php _e('More Integrations','shapepress-dsgvo')?></li>
|
91 |
+
<li><?php _e('Automatic user data reports','shapepress-dsgvo')?></li>
|
92 |
+
<li><?php _e('Email notifications','shapepress-dsgvo')?></li>
|
93 |
+
<li><?php _e('Style & Customization (from Blog Edition)','shapepress-dsgvo')?></li>
|
94 |
+
<li><?php _e('and much more','shapepress-dsgvo')?></li>
|
95 |
</ul>
|
96 |
<div>
|
97 |
<a href="https://www.wp-dsgvo.eu/shop" target="_blank"
|
98 |
+
class="button button-primary" style="font-size: 1rem"><?php _e('Get Premium version now','shapepress-dsgvo')?></a>
|
|
|
99 |
</div>
|
100 |
<ul id="dsgvo-premium-featurelist-tipps">
|
101 |
+
<li><?php _e('FAQ & checklists','shapepress-dsgvo')?></li>
|
102 |
+
<li><?php _e('GDPR experts booking','shapepress-dsgvo')?></li>
|
103 |
+
<li><?php _e('Book legal advice','shapepress-dsgvo')?></li>
|
104 |
</ul>
|
105 |
+
<?php endif;?>
|
106 |
|
107 |
|
108 |
</form>
|
109 |
+
</div>
|
admin/class-sp-dsgvo-admin-action.php
CHANGED
@@ -1,24 +1,24 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
Class SPDSGVOAdminAction extends SPDSGVOAjaxAction{
|
4 |
-
|
5 |
-
protected $action = 'admin-common-action';
|
6 |
-
|
7 |
-
protected function run(){
|
8 |
-
$this->requireAdmin();
|
9 |
-
|
10 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_vdv', $this->get('cb_spdsgvo_cl_vdv', '0'));
|
11 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_filled_out', $this->get('cb_spdsgvo_cl_filled_out', '0'));
|
12 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_maintainance', $this->get('cb_spdsgvo_cl_maintainance', '0'));
|
13 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_security', $this->get('cb_spdsgvo_cl_security', '0'));
|
14 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_hosting', $this->get('cb_spdsgvo_cl_hosting', '0'));
|
15 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_plugins', $this->get('cb_spdsgvo_cl_plugins', '0'));
|
16 |
-
SPDSGVOSettings::set('cb_spdsgvo_cl_experts', $this->get('cb_spdsgvo_cl_experts', '0'));
|
17 |
-
|
18 |
-
$this->returnBack();
|
19 |
-
}
|
20 |
-
}
|
21 |
-
|
22 |
-
SPDSGVOAdminAction::listen();
|
23 |
-
|
24 |
-
|
1 |
+
<?php
|
2 |
+
|
3 |
+
Class SPDSGVOAdminAction extends SPDSGVOAjaxAction{
|
4 |
+
|
5 |
+
protected $action = 'admin-common-action';
|
6 |
+
|
7 |
+
protected function run(){
|
8 |
+
$this->requireAdmin();
|
9 |
+
|
10 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_vdv', $this->get('cb_spdsgvo_cl_vdv', '0'));
|
11 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_filled_out', $this->get('cb_spdsgvo_cl_filled_out', '0'));
|
12 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_maintainance', $this->get('cb_spdsgvo_cl_maintainance', '0'));
|
13 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_security', $this->get('cb_spdsgvo_cl_security', '0'));
|
14 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_hosting', $this->get('cb_spdsgvo_cl_hosting', '0'));
|
15 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_plugins', $this->get('cb_spdsgvo_cl_plugins', '0'));
|
16 |
+
SPDSGVOSettings::set('cb_spdsgvo_cl_experts', $this->get('cb_spdsgvo_cl_experts', '0'));
|
17 |
+
|
18 |
+
$this->returnBack();
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
SPDSGVOAdminAction::listen();
|
23 |
+
|
24 |
+
|
admin/class-sp-dsgvo-admin-tab.php
CHANGED
@@ -37,10 +37,10 @@ abstract class SPDSGVOAdminTab{
|
|
37 |
}
|
38 |
|
39 |
public function isHighlighted(){
|
40 |
-
if(!isset($this
|
41 |
return false;
|
42 |
}
|
43 |
|
44 |
-
return $this
|
45 |
}
|
46 |
}
|
37 |
}
|
38 |
|
39 |
public function isHighlighted(){
|
40 |
+
if(!isset($this->isHighlighted)){
|
41 |
return false;
|
42 |
}
|
43 |
|
44 |
+
return $this->isHighlighted;
|
45 |
}
|
46 |
}
|
admin/class-sp-dsgvo-admin.php
CHANGED
@@ -46,11 +46,11 @@ class SPDSGVOAdmin{
|
|
46 |
'integrations' => new SPDSGVOIntegrationsTab
|
47 |
)
|
48 |
);
|
49 |
-
|
50 |
-
if (
|
51 |
{
|
52 |
$this->tabs = array_merge( $this->tabs,SPDSGVOIntegration::getAllIntegrations());
|
53 |
-
|
54 |
// Gravity Forms Tab
|
55 |
if(class_exists('GFAPI')){
|
56 |
$this->tabs = array_merge( $this->tabs, array('gravity-forms' => new SPDSGVOGravityFormsTab) );
|
@@ -60,28 +60,28 @@ class SPDSGVOAdmin{
|
|
60 |
//$this->tabs = array_merge( $this->tabs, array('premium' => new SPDSGVOPremiumTab) );
|
61 |
}
|
62 |
|
63 |
-
public function menuItem()
|
64 |
{
|
65 |
global $submenu;
|
66 |
-
|
67 |
$svg = 'data:image/svg+xml;base64,'. base64_encode(file_get_contents(SPDSGVO::pluginDir('admin/images/logo.svg')));
|
68 |
add_menu_page('WP DSGVO Tools', 'WP DSGVO Tools', 'manage_options', 'sp-dsgvo', array($this, 'adminPage'), $svg);
|
69 |
|
70 |
//add_submenu_page('sp-dsgvo', 'Terms & Conditions', 'Terms & Conditions', 'manage_options', 'admin.php?page=sp-dsgvo&tab=terms-conditions');
|
71 |
-
add_submenu_page('sp-dsgvo', '
|
72 |
-
add_submenu_page('sp-dsgvo', '
|
73 |
//add_submenu_page('sp-dsgvo', 'Integrations', 'Integrations', 'manage_options', 'admin.php?page=sp-dsgvo&tab=integrations');
|
74 |
-
|
75 |
$index = 8;
|
76 |
$menu_slug = 'sp-dsgvo';
|
77 |
-
|
78 |
-
$submenu[$menu_slug][$index++] = array('
|
79 |
-
$submenu[$menu_slug][$index++] = array('
|
80 |
-
$submenu[$menu_slug][$index++] = array('FAQ', 'manage_options', 'https://wp-dsgvo.eu/faq');
|
81 |
-
$submenu[$menu_slug][$index++] = array('
|
82 |
}
|
83 |
-
|
84 |
-
|
85 |
public function adminPage(){
|
86 |
$tabs = $this->tabs;
|
87 |
|
@@ -114,7 +114,18 @@ class SPDSGVOAdmin{
|
|
114 |
* @since 1.0.0
|
115 |
*/
|
116 |
public function enqueue_scripts(){
|
|
|
|
|
|
|
117 |
wp_enqueue_script(sp_dsgvo_VERSION, plugin_dir_url(__FILE__). 'js/sp-dsgvo-admin.js', array('jquery'), sp_dsgvo_VERSION, false );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
}
|
119 |
|
120 |
|
@@ -128,27 +139,27 @@ class SPDSGVOAdmin{
|
|
128 |
public function addCustomPostStates($states, $post){
|
129 |
|
130 |
$pages = array(
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
SPDSGVOSettings::get('imprint_page') => '
|
139 |
);
|
140 |
|
141 |
if(in_array($post->ID, array_keys($pages))){
|
142 |
-
$states[] = $pages[$post->ID];
|
143 |
-
}
|
144 |
|
145 |
return $states;
|
146 |
-
}
|
147 |
|
148 |
|
149 |
/**
|
150 |
* Filter: Adds Extra Column to users table
|
151 |
-
*
|
152 |
* @since 1.0.0
|
153 |
* @author Shapepress eU
|
154 |
*/
|
@@ -159,7 +170,7 @@ class SPDSGVOAdmin{
|
|
159 |
|
160 |
/**
|
161 |
* Filter: Adds Extra Column to users table
|
162 |
-
*
|
163 |
* @since 1.0.0
|
164 |
* @author Shapepress eU
|
165 |
*/
|
@@ -174,29 +185,29 @@ class SPDSGVOAdmin{
|
|
174 |
}
|
175 |
|
176 |
return '';
|
177 |
-
}
|
178 |
|
179 |
|
180 |
/**
|
181 |
* Hook: Displays User Permission status
|
182 |
-
*
|
183 |
* @since 1.0.0
|
184 |
* @author Shapepress eU
|
185 |
* @param WP_User $user
|
186 |
*/
|
187 |
public function showPermissonStatus($user){
|
188 |
?>
|
189 |
-
<h2
|
190 |
<table class="form-table">
|
191 |
<tbody>
|
192 |
|
193 |
<tr class="user-profile-picture">
|
194 |
-
<th
|
195 |
<td>
|
196 |
<ul>
|
197 |
<?php foreach(SPDSGVOSettings::get('services') as $slug => $service): ?>
|
198 |
<li>
|
199 |
-
<strong><?= $service['name'] ?>:</strong>
|
200 |
<?= (hasUserGivenPermissionFor($service['slug']))? '<span class="dashicons dashicons-yes"></span>' : '<span class="dashicons dashicons-no"></span>' ?>
|
201 |
</li>
|
202 |
<?php endforeach; ?>
|
@@ -224,7 +235,7 @@ class SPDSGVOAdmin{
|
|
224 |
// DELETE IP and USER AGENT
|
225 |
if( SPDSGVOSettings::get('gf_no_ip_meta') ){
|
226 |
GFAPI::update_entry_property( $entry['id'], 'ip', '' );
|
227 |
-
GFAPI::update_entry_property( $entry['id'], 'user_agent', '' );
|
228 |
}
|
229 |
|
230 |
// update fields to 'removed' that have been selected as 'do not save'
|
@@ -254,7 +265,7 @@ class SPDSGVOAdmin{
|
|
254 |
|
255 |
}
|
256 |
}
|
257 |
-
|
258 |
-
}
|
259 |
-
|
260 |
}
|
46 |
'integrations' => new SPDSGVOIntegrationsTab
|
47 |
)
|
48 |
);
|
49 |
+
|
50 |
+
if (isValidPremiumEdition())
|
51 |
{
|
52 |
$this->tabs = array_merge( $this->tabs,SPDSGVOIntegration::getAllIntegrations());
|
53 |
+
|
54 |
// Gravity Forms Tab
|
55 |
if(class_exists('GFAPI')){
|
56 |
$this->tabs = array_merge( $this->tabs, array('gravity-forms' => new SPDSGVOGravityFormsTab) );
|
60 |
//$this->tabs = array_merge( $this->tabs, array('premium' => new SPDSGVOPremiumTab) );
|
61 |
}
|
62 |
|
63 |
+
public function menuItem()
|
64 |
{
|
65 |
global $submenu;
|
66 |
+
|
67 |
$svg = 'data:image/svg+xml;base64,'. base64_encode(file_get_contents(SPDSGVO::pluginDir('admin/images/logo.svg')));
|
68 |
add_menu_page('WP DSGVO Tools', 'WP DSGVO Tools', 'manage_options', 'sp-dsgvo', array($this, 'adminPage'), $svg);
|
69 |
|
70 |
//add_submenu_page('sp-dsgvo', 'Terms & Conditions', 'Terms & Conditions', 'manage_options', 'admin.php?page=sp-dsgvo&tab=terms-conditions');
|
71 |
+
add_submenu_page('sp-dsgvo', __('Privacy policy','shapepress-dsgvo'), __('Privacy policy','shapepress-dsgvo'), 'manage_options', 'admin.php?page=sp-dsgvo&tab=privacy-policy');
|
72 |
+
add_submenu_page('sp-dsgvo', __('Imprint','shapepress-dsgvo'), __('Imprint','shapepress-dsgvo'), 'manage_options', 'admin.php?page=sp-dsgvo&tab=imprint');
|
73 |
//add_submenu_page('sp-dsgvo', 'Integrations', 'Integrations', 'manage_options', 'admin.php?page=sp-dsgvo&tab=integrations');
|
74 |
+
|
75 |
$index = 8;
|
76 |
$menu_slug = 'sp-dsgvo';
|
77 |
+
|
78 |
+
$submenu[$menu_slug][$index++] = array(__('Experts Info','shapepress-dsgvo'), 'manage_options', 'https://wp-dsgvo.eu/experten');
|
79 |
+
$submenu[$menu_slug][$index++] = array(__('Legal advice','shapepress-dsgvo'), 'manage_options', 'https://wp-dsgvo.eu/tipps-hilfe');
|
80 |
+
$submenu[$menu_slug][$index++] = array(__('FAQ','shapepress-dsgvo'), 'manage_options', 'https://wp-dsgvo.eu/faq');
|
81 |
+
$submenu[$menu_slug][$index++] = array(__('About WP DSGVO Tools','shapepress-dsgvo'), 'manage_options', 'https://wp-dsgvo.eu/about');
|
82 |
}
|
83 |
+
|
84 |
+
|
85 |
public function adminPage(){
|
86 |
$tabs = $this->tabs;
|
87 |
|
114 |
* @since 1.0.0
|
115 |
*/
|
116 |
public function enqueue_scripts(){
|
117 |
+
/* i592995 */
|
118 |
+
wp_enqueue_media();
|
119 |
+
/* i592995 */
|
120 |
wp_enqueue_script(sp_dsgvo_VERSION, plugin_dir_url(__FILE__). 'js/sp-dsgvo-admin.js', array('jquery'), sp_dsgvo_VERSION, false );
|
121 |
+
|
122 |
+
/* i592995 */
|
123 |
+
wp_localize_script(sp_dsgvo_VERSION, 'args', array(
|
124 |
+
'ajaxurl' => admin_url('admin-ajax.php'),
|
125 |
+
'dismiss_confirm' => __('Are you sure you want to dismiss this request?', 'shapepress-dsgvo')
|
126 |
+
));
|
127 |
+
/* i592995 */
|
128 |
+
|
129 |
}
|
130 |
|
131 |
|
139 |
public function addCustomPostStates($states, $post){
|
140 |
|
141 |
$pages = array(
|
142 |
+
SPDSGVOSettings::get('user_permissions_page') => __('Privacy settings user page','shapepress-dsgvo'),
|
143 |
+
SPDSGVOSettings::get('super_unsubscribe_page') => __('Delete request page','shapepress-dsgvo'),
|
144 |
+
SPDSGVOSettings::get('terms_conditions_page') => __('Terms page','shapepress-dsgvo'),
|
145 |
+
SPDSGVOSettings::get('explicit_permission_page') => __('Explicit permissions page','shapepress-dsgvo'),
|
146 |
+
SPDSGVOSettings::get('opt_out_page') => __('Opt Out page','shapepress-dsgvo'),
|
147 |
+
SPDSGVOSettings::get('privacy_policy_page') => __('Privacy policy page','shapepress-dsgvo'),
|
148 |
+
SPDSGVOSettings::get('sar_page') => __('Subject access request page','shapepress-dsgvo'),
|
149 |
+
SPDSGVOSettings::get('imprint_page') => __('Imprint page','shapepress-dsgvo')
|
150 |
);
|
151 |
|
152 |
if(in_array($post->ID, array_keys($pages))){
|
153 |
+
$states[] = $pages[$post->ID];
|
154 |
+
}
|
155 |
|
156 |
return $states;
|
157 |
+
}
|
158 |
|
159 |
|
160 |
/**
|
161 |
* Filter: Adds Extra Column to users table
|
162 |
+
*
|
163 |
* @since 1.0.0
|
164 |
* @author Shapepress eU
|
165 |
*/
|
170 |
|
171 |
/**
|
172 |
* Filter: Adds Extra Column to users table
|
173 |
+
*
|
174 |
* @since 1.0.0
|
175 |
* @author Shapepress eU
|
176 |
*/
|
185 |
}
|
186 |
|
187 |
return '';
|
188 |
+
}
|
189 |
|
190 |
|
191 |
/**
|
192 |
* Hook: Displays User Permission status
|
193 |
+
*
|
194 |
* @since 1.0.0
|
195 |
* @author Shapepress eU
|
196 |
* @param WP_User $user
|
197 |
*/
|
198 |
public function showPermissonStatus($user){
|
199 |
?>
|
200 |
+
<h2><?php _e('Privacy settings of the user','shapepress-dsgvo')?></h2>
|
201 |
<table class="form-table">
|
202 |
<tbody>
|
203 |
|
204 |
<tr class="user-profile-picture">
|
205 |
+
<th><?php _e('Dienste','shapepress-dsgvo')?></th>
|
206 |
<td>
|
207 |
<ul>
|
208 |
<?php foreach(SPDSGVOSettings::get('services') as $slug => $service): ?>
|
209 |
<li>
|
210 |
+
<strong><?= $service['name'] ?>:</strong>
|
211 |
<?= (hasUserGivenPermissionFor($service['slug']))? '<span class="dashicons dashicons-yes"></span>' : '<span class="dashicons dashicons-no"></span>' ?>
|
212 |
</li>
|
213 |
<?php endforeach; ?>
|
235 |
// DELETE IP and USER AGENT
|
236 |
if( SPDSGVOSettings::get('gf_no_ip_meta') ){
|
237 |
GFAPI::update_entry_property( $entry['id'], 'ip', '' );
|
238 |
+
GFAPI::update_entry_property( $entry['id'], 'user_agent', '' );
|
239 |
}
|
240 |
|
241 |
// update fields to 'removed' that have been selected as 'do not save'
|
265 |
|
266 |
}
|
267 |
}
|
268 |
+
|
269 |
+
}
|
270 |
+
|
271 |
}
|
admin/css/sp-dsgvo-admin.css
CHANGED
@@ -13,9 +13,9 @@ hr.sp-dsgvo {
|
|
13 |
background-color: white;
|
14 |
padding-left: 15px;
|
15 |
padding-right: 15px;
|
16 |
-
float: left;
|
17 |
width: calc(100% - 400px);
|
18 |
-
|
19 |
}
|
20 |
|
21 |
/*************************
|
@@ -105,11 +105,44 @@ textarea:hover.aio-transparent, input:hover.aio-transparent {
|
|
105 |
display: inline-block;
|
106 |
width: 30px;
|
107 |
height: 20px;
|
108 |
-
line-height: 20px;
|
109 |
font-size : 20px;
|
110 |
font-weight: 400;
|
111 |
font-style: normal;
|
112 |
vertical-align: top;
|
113 |
text-align: center;
|
114 |
color: orange;
|
115 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
background-color: white;
|
14 |
padding-left: 15px;
|
15 |
padding-right: 15px;
|
16 |
+
float: left;
|
17 |
width: calc(100% - 400px);
|
18 |
+
|
19 |
}
|
20 |
|
21 |
/*************************
|
105 |
display: inline-block;
|
106 |
width: 30px;
|
107 |
height: 20px;
|
108 |
+
line-height: 20px;
|
109 |
font-size : 20px;
|
110 |
font-weight: 400;
|
111 |
font-style: normal;
|
112 |
vertical-align: top;
|
113 |
text-align: center;
|
114 |
color: orange;
|
115 |
+
}
|
116 |
+
|
117 |
+
/* i592995 */
|
118 |
+
|
119 |
+
.cookie-notice-settings:not(.active),
|
120 |
+
.policy-popup-settings:not(.active) {
|
121 |
+
display: none;
|
122 |
+
}
|
123 |
+
|
124 |
+
.woo-privacy-text {
|
125 |
+
width: 100%;
|
126 |
+
}
|
127 |
+
|
128 |
+
.ga-code,
|
129 |
+
.fb-pixel-code {
|
130 |
+
display: block;
|
131 |
+
width: 100%;
|
132 |
+
height: 200px;
|
133 |
+
}
|
134 |
+
|
135 |
+
.unsubscribe-dismiss {
|
136 |
+
cursor: pointer;
|
137 |
+
}
|
138 |
+
|
139 |
+
.unsubscribe-dismiss line {
|
140 |
+
stroke: #000000;
|
141 |
+
stroke-width: 2px;
|
142 |
+
}
|
143 |
+
|
144 |
+
.form-table td {
|
145 |
+
vertical-align: top;
|
146 |
+
}
|
147 |
+
|
148 |
+
/* i592995 */
|
admin/images/logobackuppng
CHANGED
Binary file
|
admin/images/logobackupsvg
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<svg width="51px" height="51px" viewBox="0 0 51 51" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
-
<!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->
|
4 |
-
<title>Combined Shape</title>
|
5 |
-
<desc>Created with Sketch.</desc>
|
6 |
-
<defs></defs>
|
7 |
-
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
-
<path d="M19.3593492,33.4750511 L12.3057597,26.4214616 C11.3817513,25.4974532 9.88363778,25.4974532 8.95962941,26.4214616 C8.03562104,27.34547 8.03562104,28.8435835 8.95962941,29.7675919 L17.6862841,38.4942465 C18.1482882,38.9562507 18.7538187,39.1872528 19.3593492,39.1872528 C19.9648797,39.1872528 20.5704102,38.9562507 21.0324144,38.4942465 L21.0324144,38.4942465 L41.9673137,17.5593472 C42.8913221,16.6353388 42.8913221,15.1372252 41.9673137,14.2132169 C41.0433054,13.2892085 39.5451918,13.2892085 38.6211834,14.2132169 L38.6211834,14.2132169 L19.3593492,33.4750511 Z M25.7313287,50.1953496 C11.92421,50.1953496 0.731328714,39.0024683 0.731328714,25.1953496 C0.731328714,11.3882308 11.92421,0.195349574 25.7313287,0.195349574 C39.5384475,0.195349574 50.7313287,11.3882308 50.7313287,25.1953496 C50.7313287,39.0024683 39.5384475,50.1953496 25.7313287,50.1953496 Z" id="Combined-Shape" fill="#9FA3A8"></path>
|
9 |
-
</g>
|
10 |
</svg>
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<svg width="51px" height="51px" viewBox="0 0 51 51" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
3 |
+
<!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->
|
4 |
+
<title>Combined Shape</title>
|
5 |
+
<desc>Created with Sketch.</desc>
|
6 |
+
<defs></defs>
|
7 |
+
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
8 |
+
<path d="M19.3593492,33.4750511 L12.3057597,26.4214616 C11.3817513,25.4974532 9.88363778,25.4974532 8.95962941,26.4214616 C8.03562104,27.34547 8.03562104,28.8435835 8.95962941,29.7675919 L17.6862841,38.4942465 C18.1482882,38.9562507 18.7538187,39.1872528 19.3593492,39.1872528 C19.9648797,39.1872528 20.5704102,38.9562507 21.0324144,38.4942465 L21.0324144,38.4942465 L41.9673137,17.5593472 C42.8913221,16.6353388 42.8913221,15.1372252 41.9673137,14.2132169 C41.0433054,13.2892085 39.5451918,13.2892085 38.6211834,14.2132169 L38.6211834,14.2132169 L19.3593492,33.4750511 Z M25.7313287,50.1953496 C11.92421,50.1953496 0.731328714,39.0024683 0.731328714,25.1953496 C0.731328714,11.3882308 11.92421,0.195349574 25.7313287,0.195349574 C39.5384475,0.195349574 50.7313287,11.3882308 50.7313287,25.1953496 C50.7313287,39.0024683 39.5384475,50.1953496 25.7313287,50.1953496 Z" id="Combined-Shape" fill="#9FA3A8"></path>
|
9 |
+
</g>
|
10 |
</svg>
|
admin/js/sp-dsgvo-admin.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
(function($){
|
2 |
-
|
3 |
$(document).ready(function(){
|
4 |
|
5 |
/************************
|
@@ -31,7 +31,7 @@
|
|
31 |
}
|
32 |
}
|
33 |
});
|
34 |
-
|
35 |
$('.cbChecklist').on('change', function () {
|
36 |
var input = $(this).next('span');
|
37 |
if (this.checked) {
|
@@ -42,5 +42,116 @@
|
|
42 |
$('#checklist-form').submit();
|
43 |
});
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
});
|
46 |
})( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
(function($){
|
2 |
+
|
3 |
$(document).ready(function(){
|
4 |
|
5 |
/************************
|
31 |
}
|
32 |
}
|
33 |
});
|
34 |
+
|
35 |
$('.cbChecklist').on('change', function () {
|
36 |
var input = $(this).next('span');
|
37 |
if (this.checked) {
|
42 |
$('#checklist-form').submit();
|
43 |
});
|
44 |
|
45 |
+
/* i592995 */
|
46 |
+
function checkNoticeType($select) {
|
47 |
+
var val = $select.val(),
|
48 |
+
$popupSettings = $('.policy-popup-settings'),
|
49 |
+
$noticeSettings = $('.cookie-notice-settings');
|
50 |
+
|
51 |
+
if(val == 'cookie_notice') {
|
52 |
+
$popupSettings.removeClass('active');
|
53 |
+
$noticeSettings.addClass('active');
|
54 |
+
} else if(val == 'policy_popup') {
|
55 |
+
$popupSettings.addClass('active');
|
56 |
+
$noticeSettings.removeClass('active');
|
57 |
+
} else {
|
58 |
+
$popupSettings.removeClass('active');
|
59 |
+
$noticeSettings.removeClass('active');
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
var $noticeType = $('#cookie_notice_display');
|
64 |
+
if($noticeType.length > 0) {
|
65 |
+
checkNoticeType($noticeType);
|
66 |
+
|
67 |
+
$noticeType.on('change', function() {
|
68 |
+
var $this = $(this);
|
69 |
+
checkNoticeType($this);
|
70 |
+
});
|
71 |
+
}
|
72 |
+
|
73 |
+
$('.unsubscribe-dismiss').on('click tap', function() {
|
74 |
+
var $this = $(this),
|
75 |
+
id = $this.attr('data-id');
|
76 |
+
|
77 |
+
if(confirm(args.dismiss_confirm)) {
|
78 |
+
$this.parent().parent().fadeOut(500);
|
79 |
+
$.post( args.ajaxurl, {
|
80 |
+
action: 'admin-dismiss-unsubscribe',
|
81 |
+
id: id
|
82 |
+
},
|
83 |
+
function( data ) {
|
84 |
+
} );
|
85 |
+
}
|
86 |
+
});
|
87 |
+
/* i592995 */
|
88 |
+
|
89 |
});
|
90 |
})( jQuery );
|
91 |
+
|
92 |
+
/* i592995 */
|
93 |
+
// THIS PART OF THE SCRIPT ADDS UPLOAD IMAGE Buttons
|
94 |
+
|
95 |
+
jQuery( document ).ready( function( $ ) {
|
96 |
+
|
97 |
+
function prepareUpload($upload) {
|
98 |
+
// Uploading files
|
99 |
+
var file_frame;
|
100 |
+
var wp_media_post_id = wp.media.model.settings.post.id; // Store the old id
|
101 |
+
var set_to_post_id = $upload.find('.image-id').val(); // Set this
|
102 |
+
$upload.find('.button').on('click', function( event ){
|
103 |
+
event.preventDefault();
|
104 |
+
// If the media frame already exists, reopen it.
|
105 |
+
if ( file_frame ) {
|
106 |
+
// Set the post ID to what we want
|
107 |
+
file_frame.uploader.uploader.param( 'post_id', set_to_post_id );
|
108 |
+
// Open frame
|
109 |
+
file_frame.open();
|
110 |
+
return;
|
111 |
+
} else {
|
112 |
+
// Set the wp.media post id so the uploader grabs the ID we want when initialised
|
113 |
+
wp.media.model.settings.post.id = set_to_post_id;
|
114 |
+
}
|
115 |
+
// Create the media frame.
|
116 |
+
file_frame = wp.media.frames.file_frame = wp.media({
|
117 |
+
multiple: false // Set to true to allow multiple files to be selected
|
118 |
+
});
|
119 |
+
// When an image is selected, run a callback.
|
120 |
+
file_frame.on( 'select', function() {
|
121 |
+
// We set multiple to false so only get one image from the uploader
|
122 |
+
attachment = file_frame.state().get('selection').first().toJSON();
|
123 |
+
// Do something with attachment.id and/or attachment.url here
|
124 |
+
$upload.find('.image-preview').attr( 'src', attachment.url );
|
125 |
+
$upload.find('.image-id').val( attachment.id );
|
126 |
+
// Restore the main post ID
|
127 |
+
wp.media.model.settings.post.id = wp_media_post_id;
|
128 |
+
});
|
129 |
+
// Finally, open the modal
|
130 |
+
file_frame.open();
|
131 |
+
});
|
132 |
+
// Restore the main ID when the add media button is pressed
|
133 |
+
jQuery( 'a.add_media' ).on( 'click', function() {
|
134 |
+
wp.media.model.settings.post.id = wp_media_post_id;
|
135 |
+
});
|
136 |
+
}
|
137 |
+
|
138 |
+
$('.dsgvo-image-upload').each(function() {
|
139 |
+
var $this = $(this);
|
140 |
+
|
141 |
+
prepareUpload($this);
|
142 |
+
});
|
143 |
+
|
144 |
+
$('#own_code').on('change', function() {
|
145 |
+
var $this = $(this);
|
146 |
+
$this.toggleClass('active');
|
147 |
+
|
148 |
+
if($this.hasClass('active')) {
|
149 |
+
$('#ga_code').removeAttr('disabled');
|
150 |
+
$('#fb_pixel_code').removeAttr('disabled');
|
151 |
+
} else {
|
152 |
+
$('#ga_code').attr('disabled', 'disabled');
|
153 |
+
$('#fb_pixel_code').attr('disabled', 'disabled');
|
154 |
+
}
|
155 |
+
});
|
156 |
+
|
157 |
+
});
|
admin/tabs/common-settings/class-sp-dsgvo-common-settings-action.php
CHANGED
@@ -1,50 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SPDSGVOCommonSettingsAction extends SPDSGVOAjaxAction
|
4 |
-
{
|
5 |
-
|
6 |
-
protected $action = 'admin-common-settings';
|
7 |
-
|
8 |
-
protected function run()
|
9 |
-
{
|
10 |
-
$this->requireAdmin();
|
11 |
-
|
12 |
-
|
13 |
-
SPDSGVOSettings::set('
|
14 |
-
|
15 |
-
|
16 |
-
if (
|
17 |
-
{
|
18 |
-
SPDSGVOSettings::set('spdsgvo_comments_checkbox_info', $this->get('spdsgvo_comments_checkbox_info', ''));
|
19 |
-
SPDSGVOSettings::set('spdsgvo_comments_checkbox_confirm', $this->get('spdsgvo_comments_checkbox_confirm', ''));
|
20 |
-
SPDSGVOSettings::set('spdsgvo_comments_checkbox_text', $this->get('spdsgvo_comments_checkbox_text', ''));
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
SPDSGVOSettings::set('
|
28 |
-
|
29 |
-
SPDSGVOSettings::set('
|
30 |
-
SPDSGVOSettings::set('
|
31 |
-
SPDSGVOSettings::set('
|
32 |
-
SPDSGVOSettings::set('
|
33 |
-
SPDSGVOSettings::set('
|
34 |
-
SPDSGVOSettings::set('
|
35 |
-
SPDSGVOSettings::set('
|
36 |
-
SPDSGVOSettings::set('
|
37 |
-
SPDSGVOSettings::set('
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
$this->returnBack();
|
45 |
-
}
|
46 |
-
}
|
47 |
-
|
48 |
-
SPDSGVOCommonSettingsAction::listen();
|
49 |
-
|
50 |
-
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOCommonSettingsAction extends SPDSGVOAjaxAction
|
4 |
+
{
|
5 |
+
|
6 |
+
protected $action = 'admin-common-settings';
|
7 |
+
|
8 |
+
protected function run()
|
9 |
+
{
|
10 |
+
$this->requireAdmin();
|
11 |
+
|
12 |
+
SPDSGVOSettings::set('admin_email', $this->get('admin_email', ''));
|
13 |
+
SPDSGVOSettings::set('use_wpml_strings', $this->get('use_wpml_strings', '0'));
|
14 |
+
|
15 |
+
SPDSGVOSettings::set('sp_dsgvo_comments_checkbox', $this->get('sp_dsgvo_comments_checkbox', '0'));
|
16 |
+
if (isValidBlogEdition() || isValidPremiumEdition())
|
17 |
+
{
|
18 |
+
SPDSGVOSettings::set('spdsgvo_comments_checkbox_info', $this->get('spdsgvo_comments_checkbox_info', ''));
|
19 |
+
SPDSGVOSettings::set('spdsgvo_comments_checkbox_confirm', $this->get('spdsgvo_comments_checkbox_confirm', ''));
|
20 |
+
SPDSGVOSettings::set('spdsgvo_comments_checkbox_text', $this->get('spdsgvo_comments_checkbox_text', ''));
|
21 |
+
SPDSGVOSettings::set('sp_dsgvo_cf7_acceptance_replace', $this->get('sp_dsgvo_cf7_acceptance_replace', ''));
|
22 |
+
}
|
23 |
+
|
24 |
+
SPDSGVOSettings::set('spdsgvo_company_info_name', $this->get('spdsgvo_company_info_name', ''));
|
25 |
+
SPDSGVOSettings::set('spdsgvo_company_info_street', $this->get('spdsgvo_company_info_street', ''));
|
26 |
+
SPDSGVOSettings::set('spdsgvo_company_info_loc_zip', $this->get('spdsgvo_company_info_loc_zip', ''));
|
27 |
+
SPDSGVOSettings::set('spdsgvo_company_fn_nr', $this->get('spdsgvo_company_fn_nr', ''));
|
28 |
+
SPDSGVOSettings::set('spdsgvo_company_law_loc', $this->get('spdsgvo_company_law_loc', ''));
|
29 |
+
SPDSGVOSettings::set('spdsgvo_company_uid_nr', $this->get('spdsgvo_company_uid_nr', ''));
|
30 |
+
SPDSGVOSettings::set('spdsgvo_company_law_person', $this->get('spdsgvo_company_law_person', ''));
|
31 |
+
SPDSGVOSettings::set('spdsgvo_company_chairmen', $this->get('spdsgvo_company_chairmen', ''));
|
32 |
+
SPDSGVOSettings::set('spdsgvo_company_resp_content', $this->get('spdsgvo_company_resp_content', ''));
|
33 |
+
SPDSGVOSettings::set('spdsgvo_company_info_phone', $this->get('spdsgvo_company_info_phone', ''));
|
34 |
+
SPDSGVOSettings::set('spdsgvo_company_info_fax', $this->get('spdsgvo_company_info_fax', ''));
|
35 |
+
SPDSGVOSettings::set('spdsgvo_company_info_email', $this->get('spdsgvo_company_info_email', ''));
|
36 |
+
SPDSGVOSettings::set('spdsgvo_newsletter_service', $this->get('spdsgvo_newsletter_service', ''));
|
37 |
+
SPDSGVOSettings::set('spdsgvo_newsletter_service_privacy_policy_url', $this->get('spdsgvo_newsletter_service_privacy_policy_url', ''));
|
38 |
+
|
39 |
+
$this->returnBack();
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
SPDSGVOCommonSettingsAction::listen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php
CHANGED
@@ -1,86 +1,99 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SPDSGVOCommonSettingsActivateAction extends SPDSGVOAjaxAction
|
4 |
-
{
|
5 |
-
|
6 |
-
protected $action = 'admin-common-settings-activate';
|
7 |
-
|
8 |
-
protected function run()
|
9 |
-
{
|
10 |
-
$this->requireAdmin();
|
11 |
-
|
12 |
-
$oldLicenceKey = SPDSGVOSettings::get('dsgvo_licence');
|
13 |
-
$licenceKey = $this->get('dsgvo_licence', '');
|
14 |
-
|
15 |
-
if (SPDSGVOSettings::get('license_activated') === '0')
|
16 |
-
{
|
17 |
-
//error_log('activating licence '.$licenceKey);
|
18 |
-
SPDSGVOSettings::set('license_activated', '0');
|
19 |
-
SPDSGVOSettings::set('license_key_error', '1');
|
20 |
-
|
21 |
-
$url = '
|
22 |
-
$url .= '?license_key=' .$licenceKey;
|
23 |
-
|
24 |
-
$request = wp_remote_get($url);
|
25 |
-
|
26 |
-
if( is_wp_error( $request ) ) {
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
}
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
}
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOCommonSettingsActivateAction extends SPDSGVOAjaxAction
|
4 |
+
{
|
5 |
+
|
6 |
+
protected $action = 'admin-common-settings-activate';
|
7 |
+
|
8 |
+
protected function run()
|
9 |
+
{
|
10 |
+
$this->requireAdmin();
|
11 |
+
|
12 |
+
$oldLicenceKey = SPDSGVOSettings::get('dsgvo_licence');
|
13 |
+
$licenceKey = $this->get('dsgvo_licence', '');
|
14 |
+
|
15 |
+
if (SPDSGVOSettings::get('license_activated') === '0')
|
16 |
+
{
|
17 |
+
//error_log('activating licence '.$licenceKey);
|
18 |
+
SPDSGVOSettings::set('license_activated', '0');
|
19 |
+
SPDSGVOSettings::set('license_key_error', '1');
|
20 |
+
|
21 |
+
$url = 'https://wp-dsgvo.eu/spdsgvo-bin/activate.php';
|
22 |
+
$url .= '?license_key=' .$licenceKey;
|
23 |
+
|
24 |
+
$request = wp_remote_get($url);
|
25 |
+
|
26 |
+
if( is_wp_error( $request ) ) {
|
27 |
+
|
28 |
+
error_log(__('error during license activation: ', 'shapepress-dsgvo') . $request); // Bail early
|
29 |
+
} else {
|
30 |
+
$result = wp_remote_retrieve_body( $request );
|
31 |
+
if (strpos($result, 'OK') !== false) {
|
32 |
+
SPDSGVOSettings::set('license_key_error', '0');
|
33 |
+
SPDSGVOSettings::set('license_activated', '1');
|
34 |
+
} else
|
35 |
+
{
|
36 |
+
SPDSGVOSettings::set('license_activation_error', $result);
|
37 |
+
SPDSGVOSettings::set('license_key_error', '1');
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
41 |
+
} elseif(SPDSGVOSettings::get('license_activated') === '1')
|
42 |
+
{
|
43 |
+
$url = 'https://wp-dsgvo.eu/spdsgvo-bin/deactivate.php';
|
44 |
+
$url .= '?license_key=' .$licenceKey;
|
45 |
+
|
46 |
+
$request = wp_remote_get($url);
|
47 |
+
|
48 |
+
if( is_wp_error( $request ) ) {
|
49 |
+
|
50 |
+
error_log(__('error during license activation: ', 'shapepress-dsgvo').$request); // Bail early
|
51 |
+
} else {
|
52 |
+
$result = wp_remote_retrieve_body( $request );
|
53 |
+
if (strpos($result, 'OK') !== false) {
|
54 |
+
SPDSGVOSettings::set('license_key_error', '1');
|
55 |
+
SPDSGVOSettings::set('license_activated', '0');
|
56 |
+
SPDSGVOSettings::set('licence_valid_to', '');
|
57 |
+
SPDSGVOSettings::set('licence_activated_on', '');
|
58 |
+
} else
|
59 |
+
{
|
60 |
+
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
if ($licenceKey !== '' && SPDSGVOSettings::get('license_activated') === '1') {
|
67 |
+
|
68 |
+
//error_log('validating licence '.$licenceKey);
|
69 |
+
|
70 |
+
$url = 'https://wp-dsgvo.eu/spdsgvo-bin/licensedetails.php';
|
71 |
+
$url .= '?license_key=' .$licenceKey;
|
72 |
+
|
73 |
+
$request = wp_remote_get($url);
|
74 |
+
|
75 |
+
if( is_wp_error( $request ) ) {
|
76 |
+
|
77 |
+
error_log(__('error during license details: ', 'shapepress-dsgvo').$request); // Bail early
|
78 |
+
} else {
|
79 |
+
|
80 |
+
$body = wp_remote_retrieve_body( $request );
|
81 |
+
|
82 |
+
if ($body !== false)
|
83 |
+
{
|
84 |
+
$data = json_decode( $body );
|
85 |
+
SPDSGVOSettings::set('licence_activated_on', $data->activation_date);
|
86 |
+
SPDSGVOSettings::set('licence_valid_to', $data->expiration_date);
|
87 |
+
|
88 |
+
SPDSGVOSettings::set('licence_details_fetched', '1');
|
89 |
+
}
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
SPDSGVOSettings::set('dsgvo_licence', $licenceKey);
|
94 |
+
|
95 |
+
$this->returnBack();
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
SPDSGVOCommonSettingsActivateAction::listen();
|
admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php
CHANGED
@@ -1,14 +1,17 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SPDSGVOCommonSettingsTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
-
public $title = 'Allgemeine Einstellungen';
|
6 |
-
public $slug = 'common-settings';
|
7 |
-
public $isHidden = FALSE;
|
8 |
-
|
9 |
-
public function __construct(){
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOCommonSettingsTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
+
public $title = 'Allgemeine Einstellungen';
|
6 |
+
public $slug = 'common-settings';
|
7 |
+
public $isHidden = FALSE;
|
8 |
+
|
9 |
+
public function __construct(){
|
10 |
+
|
11 |
+
$this->title = __('Common Settings','shapepress-dsgvo');
|
12 |
+
}
|
13 |
+
|
14 |
+
public function page(){
|
15 |
+
include plugin_dir_path(__FILE__) .'page.php';
|
16 |
+
}
|
17 |
+
}
|
admin/tabs/common-settings/page.php
CHANGED
@@ -1,200 +1,218 @@
|
|
1 |
-
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
-
<input type="hidden" name="action" value="admin-common-settings-activate">
|
3 |
-
|
4 |
-
<h1
|
5 |
-
|
6 |
-
<table class="form-table">
|
7 |
-
<tr>
|
8 |
-
<th scope="row"
|
9 |
-
<td><label for="dsgvo_licence"> <input name="dsgvo_licence"
|
10 |
-
type="text" id="dsgvo_licence" style="width:
|
11 |
-
value="<?= SPDSGVOSettings::get('dsgvo_licence'); ?>">
|
12 |
-
</label>
|
13 |
-
<?php if(SPDSGVOSettings::get('license_activated') === '1'): ?>
|
14 |
-
<span class="info-text">
|
15 |
-
|
16 |
-
|
17 |
-
<?php
|
18 |
-
<?php
|
19 |
-
|
20 |
-
<?php
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
<
|
52 |
-
|
53 |
-
<
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
<?=
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
<tr>
|
79 |
-
|
80 |
-
<td
|
81 |
-
|
82 |
-
|
83 |
-
id="
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
<
|
99 |
-
<
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
+
<input type="hidden" name="action" value="admin-common-settings-activate">
|
3 |
+
|
4 |
+
<h1><?php _e('Activate Blog/Premium','shapepress-dsgvo')?></h1>
|
5 |
+
|
6 |
+
<table class="form-table">
|
7 |
+
<tr>
|
8 |
+
<th scope="row"><?php _e('License','shapepress-dsgvo')?></th>
|
9 |
+
<td><label for="dsgvo_licence"> <input name="dsgvo_licence"
|
10 |
+
type="text" id="dsgvo_licence" style="width: 200px"
|
11 |
+
value="<?= SPDSGVOSettings::get('dsgvo_licence'); ?>">
|
12 |
+
</label>
|
13 |
+
<?php if(SPDSGVOSettings::get('license_activated') === '1'): ?>
|
14 |
+
<span class="info-text">
|
15 |
+
<?php if(isPremiumEdition()): ?>
|
16 |
+
<?= isValidPremiumEdition() ? _e('Premium version has been activated','shapepress-dsgvo') : _e('Invalid or expired license.','shapepress-dsgvo'); ?>
|
17 |
+
<?php endif; ?>
|
18 |
+
<?php if(isBlogEdition()): ?>
|
19 |
+
<?= isValidBlogEdition() ? _e('Blog version has been activated','shapepress-dsgvo') : _e('Invalid license.','shapepress-dsgvo'); ?>
|
20 |
+
<?php endif; ?>
|
21 |
+
</span>
|
22 |
+
<?php if(isPremiumEdition() && SPDSGVOSettings::get('licence_details_fetched') === '1'): ?>
|
23 |
+
<span class="info-text"><?php _e('Activated on:','shapepress-dsgvo'); ?> <?= date("d.m.Y", strtotime(SPDSGVOSettings::get('licence_activated_on'))); ?>
|
24 |
+
<?php _e('Valid to:','shapepress-dsgvo'); ?> <?= date("d.m.Y", strtotime(SPDSGVOSettings::get('licence_valid_to'))); ?></span>
|
25 |
+
<?php endif; ?>
|
26 |
+
<?php submit_button(__('Deactivate license','shapepress-dsgvo')); ?>
|
27 |
+
<?php else: ?>
|
28 |
+
<span class="info-text"><?php _e('Activating the license unlocks more features.','shapepress-dsgvo'); ?></span>
|
29 |
+
<?php submit_button(__('Activate license','shapepress-dsgvo')); ?>
|
30 |
+
<?php endif; ?>
|
31 |
+
</td>
|
32 |
+
</tr>
|
33 |
+
</table>
|
34 |
+
</form>
|
35 |
+
|
36 |
+
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
37 |
+
<input type="hidden" name="action" value="admin-common-settings">
|
38 |
+
|
39 |
+
<input type="hidden" value="<?= SPDSGVOSettings::get('dsgvo_licence'); ?>" id="dsgvo_licence_hidden" name="dsgvo_licence_hidden" />
|
40 |
+
|
41 |
+
<h1><?php _e('Common Settings','shapepress-dsgvo')?></h1>
|
42 |
+
|
43 |
+
<table class="form-table">
|
44 |
+
<tr>
|
45 |
+
<th scope="row"><?php _e('Admin Email','shapepress-dsgvo')?></th>
|
46 |
+
<td><label for="admin_email"> <input name="admin_email"
|
47 |
+
type="text" id="admin_email" style="width: 300px"
|
48 |
+
value="<?= SPDSGVOSettings::get('admin_email'); ?>">
|
49 |
+
</label><span class="info-text"><?php _e('Used by sending emails.','shapepress-dsgvo')?></span></td>
|
50 |
+
</tr>
|
51 |
+
<tr>
|
52 |
+
<th scope="row"><?php _e('Use WPML Strings','shapepress-dsgvo')?></th>
|
53 |
+
<td><label for="use_wpml_strings"> <input
|
54 |
+
name="use_wpml_strings" type="checkbox"
|
55 |
+
id="use_wpml_strings" value="1"
|
56 |
+
<?= (SPDSGVOSettings::get('use_wpml_strings') === '1')? ' checked ' : ''; ?>>
|
57 |
+
</label><span class="info-text"><?php _e('Use WPML String Translation for text inputs. (E.g. Checkbox for comments.)','shapepress-dsgvo')?></span></td>
|
58 |
+
</tr>
|
59 |
+
</table>
|
60 |
+
|
61 |
+
<?php if (isLicenceValid()) : ?>
|
62 |
+
<h2><?php _e('Comments','shapepress-dsgvo')?></h2>
|
63 |
+
<?php else : ?>
|
64 |
+
<h2><?php _e('Comments','shapepress-dsgvo')?></h2><span style="color: orange"><?php _e('Customizing possible with Blog/Premium edition.','shapepress-dsgvo')?></span>
|
65 |
+
<small><a href="https://www.wp-dsgvo.eu/shop"><?php _e('Click here to get a license.','shapepress-dsgvo')?></a></small>
|
66 |
+
<?php endif; ?>
|
67 |
+
<?php $disableCommentInputs = isLicenceValid() == false; ?>
|
68 |
+
<table class="form-table">
|
69 |
+
<tr>
|
70 |
+
<th scope="row"><?php _e('Checkbox for comments:','shapepress-dsgvo')?></th>
|
71 |
+
<td><label for="sp_dsgvo_comments_checkbox"> <input
|
72 |
+
name="sp_dsgvo_comments_checkbox" type="checkbox"
|
73 |
+
id="sp_dsgvo_comments_checkbox" value="1"
|
74 |
+
<?= (SPDSGVOSettings::get('sp_dsgvo_comments_checkbox') === '1')? ' checked ' : ''; ?>>
|
75 |
+
</label><span class="info-text"><?php _e('Displays at checkbox which requires confirmation when creating a comment.','shapepress-dsgvo')?></span></td>
|
76 |
+
</tr>
|
77 |
+
<?php if (class_exists('WPCF7_ContactForm')) : ?>
|
78 |
+
<tr>
|
79 |
+
|
80 |
+
<td><?php _e('Replace CF7 Acceptance text','shapepress-dsgvo')?></td>
|
81 |
+
<td><label for="sp_dsgvo_cf7_acceptance_replace"> <input
|
82 |
+
name="sp_dsgvo_cf7_acceptance_replace" type="checkbox"
|
83 |
+
id="sp_dsgvo_cf7_acceptance_replace" value="1"
|
84 |
+
<?php /* i592995 */ ?>
|
85 |
+
<?= $disableCommentInputs ? 'disabled' : ''; ?>
|
86 |
+
<?= (SPDSGVOSettings::get('sp_dsgvo_cf7_acceptance_replace') === '1')? ' checked ' : ''; ?>>
|
87 |
+
</label><span class="info-text"><?php _e('Replaces the text of CF7 Acceptance Checkboxes with following text. (Add to your form: [acceptance dsgvo] Text[/acceptance])','shapepress-dsgvo')?></span></td>
|
88 |
+
</tr>
|
89 |
+
<?php endif; ?>
|
90 |
+
<tr>
|
91 |
+
<th scope="row"><?php _e('Text','shapepress-dsgvo')?></th>
|
92 |
+
<td><label for="spdsgvo_comments_checkbox_text"> <textarea name="spdsgvo_comments_checkbox_text"
|
93 |
+
placeholder="<?php _e('Message text:','shapepress-dsgvo')?>" id="spdsgvo_comments_checkbox_text" rows="3"
|
94 |
+
<?= $disableCommentInputs ? 'disabled' : ''; ?>
|
95 |
+
style="width: 100%"><?= htmlentities(SPDSGVOSettings::get('spdsgvo_comments_checkbox_text')) ?></textarea>
|
96 |
+
</label></td>
|
97 |
+
</tr>
|
98 |
+
<tr>
|
99 |
+
<th scope="row"><?php _e('Info text:','shapepress-dsgvo')?></th>
|
100 |
+
<td><label for="spdsgvo_comments_checkbox_info"> <input
|
101 |
+
name="spdsgvo_comments_checkbox_info" type="text" style="width: 500px"
|
102 |
+
<?= $disableCommentInputs ? 'disabled' : ''; ?>
|
103 |
+
id="spdsgvo_comments_checkbox_info" value="<?= htmlentities(SPDSGVOSettings::get('spdsgvo_comments_checkbox_info')); ?>">
|
104 |
+
</label></td>
|
105 |
+
</tr>
|
106 |
+
<tr>
|
107 |
+
<th scope="row"><?php _e('Confirmation text','shapepress-dsgvo')?></th>
|
108 |
+
<td><label for="spdsgvo_comments_checkbox_confirm"> <input
|
109 |
+
name="spdsgvo_comments_checkbox_confirm" type="text" style="width: 300px"
|
110 |
+
<?= $disableCommentInputs ? 'disabled' : ''; ?>
|
111 |
+
id="spdsgvo_comments_checkbox_confirm" value="<?= htmlentities(SPDSGVOSettings::get('spdsgvo_comments_checkbox_confirm')); ?>">
|
112 |
+
</label></td>
|
113 |
+
</tr>
|
114 |
+
</table>
|
115 |
+
|
116 |
+
<hr class="sp-dsgvo">
|
117 |
+
|
118 |
+
<h2><?php _e('Company data','shapepress-dsgvo')?></h2>
|
119 |
+
<p><?php _e('The following input fields represent the basic data necessary for the creation of GDPR compliant data protection regulations and an imprint.<br />All entries made here are automatically used in the privacy policy and imprint generated by the WP DSGVO Tools Plugin.','shapepress-dsgvo')?></p>
|
120 |
+
|
121 |
+
<table class="form-table">
|
122 |
+
<tr>
|
123 |
+
<td><?php _e('Company name:','shapepress-dsgvo')?></td>
|
124 |
+
<td><label for="spdsgvo_company_info_name"> <input name="spdsgvo_company_info_name"
|
125 |
+
type="text" id="spdsgvo_company_info_name" style="width: 300px"
|
126 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_info_name'); ?>">
|
127 |
+
</label><span class="info-text"></span></td>
|
128 |
+
</tr>
|
129 |
+
<tr>
|
130 |
+
<td><?php _e('Street:','shapepress-dsgvo')?></td>
|
131 |
+
<td><label for="spdsgvo_company_info_street"> <input name="spdsgvo_company_info_street"
|
132 |
+
type="text" id="spdsgvo_company_info_street" style="width: 300px"
|
133 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_info_street'); ?>">
|
134 |
+
</label><span class="info-text"></span></td>
|
135 |
+
</tr>
|
136 |
+
<tr>
|
137 |
+
<td><?php _e('ZIP + Location:','shapepress-dsgvo')?></td>
|
138 |
+
<td><label for="spdsgvo_company_info_loc_zip"> <input name="spdsgvo_company_info_loc_zip"
|
139 |
+
type="text" id="spdsgvo_company_info_loc_zip" style="width: 300px"
|
140 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_info_loc_zip'); ?>">
|
141 |
+
</label><span class="info-text"></span></td>
|
142 |
+
</tr>
|
143 |
+
<tr>
|
144 |
+
<td><?php _e('Commercial book no.:','shapepress-dsgvo')?></td>
|
145 |
+
<td><label for="spdsgvo_company_fn_nr"> <input name="spdsgvo_company_fn_nr"
|
146 |
+
type="text" id="spdsgvo_company_fn_nr" style="width: 300px"
|
147 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_fn_nr'); ?>">
|
148 |
+
</label><span class="info-text"></span></td>
|
149 |
+
</tr>
|
150 |
+
<tr>
|
151 |
+
<td><?php _e('§11 Place of Jurisdiction:','shapepress-dsgvo')?></td>
|
152 |
+
<td><label for="spdsgvo_company_law_loc"> <input name="spdsgvo_company_law_loc"
|
153 |
+
type="text" id="spdsgvo_company_law_loc" style="width: 300px"
|
154 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_law_loc'); ?>">
|
155 |
+
</label><span class="info-text"></span></td>
|
156 |
+
</tr>
|
157 |
+
<tr>
|
158 |
+
<td><?php _e('VAT No.:','shapepress-dsgvo')?></td>
|
159 |
+
<td><label for="spdsgvo_company_uid_nr"> <input name="spdsgvo_company_uid_nr"
|
160 |
+
type="text" id="spdsgvo_company_uid_nr" style="width: 300px"
|
161 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_uid_nr'); ?>">
|
162 |
+
</label><span class="info-text"></span></td>
|
163 |
+
</tr>
|
164 |
+
<tr>
|
165 |
+
<td><?php _e('Legal representatives:','shapepress-dsgvo')?></td>
|
166 |
+
<td><label for="spdsgvo_company_law_person"> <input name="spdsgvo_company_law_person"
|
167 |
+
type="text" id="spdsgvo_company_law_person" style="width: 300px"
|
168 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_law_person'); ?>">
|
169 |
+
</label><span class="info-text"><?php _e('The person who legally represents the company.','shapepress-dsgvo')?></span></td>
|
170 |
+
</tr>
|
171 |
+
<tr>
|
172 |
+
<td><?php _e('Shareholder','shapepress-dsgvo')?></td>
|
173 |
+
<td><label for="spdsgvo_company_chairmen"> <input name="spdsgvo_company_chairmen"
|
174 |
+
type="text" id="spdsgvo_company_chairmen" style="width: 300px"
|
175 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_chairmen'); ?>">
|
176 |
+
</label><span class="info-text"><?php _e('In case of companies please contact all shareholders here.','shapepress-dsgvo')?></span></td>
|
177 |
+
</tr>
|
178 |
+
<tr>
|
179 |
+
<td><?php _e('Responsible for content:','shapepress-dsgvo')?></td>
|
180 |
+
<td><label for="spdsgvo_company_resp_content"> <input name="spdsgvo_company_resp_content"
|
181 |
+
type="text" id="spdsgvo_company_resp_content" style="width: 300px"
|
182 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_resp_content'); ?>">
|
183 |
+
</label><span class="info-text"><?php _e('The person responsible for the content on this website.','shapepress-dsgvo')?></span></td>
|
184 |
+
</tr>
|
185 |
+
<tr>
|
186 |
+
<td><?php _e('Phone:','shapepress-dsgvo')?></td>
|
187 |
+
<td><label for="spdsgvo_company_info_phone"> <input name="spdsgvo_company_info_phone"
|
188 |
+
type="text" id="spdsgvo_company_info_phone" style="width: 300px"
|
189 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_info_phone'); ?>">
|
190 |
+
</label><span class="info-text"></span></td>
|
191 |
+
</tr>
|
192 |
+
<tr>
|
193 |
+
<td><?php _e('Email:','shapepress-dsgvo')?></td>
|
194 |
+
<td><label for="spdsgvo_company_info_email"> <input name="spdsgvo_company_info_email"
|
195 |
+
type="text" id="spdsgvo_company_info_email" style="width: 300px"
|
196 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_company_info_email'); ?>">
|
197 |
+
</label><span class="info-text"></span></td>
|
198 |
+
</tr>
|
199 |
+
<tr>
|
200 |
+
<td><?php _e('Newsletter service:','shapepress-dsgvo')?></td>
|
201 |
+
<td><label for="spdsgvo_newsletter_service"> <input name="spdsgvo_newsletter_service"
|
202 |
+
type="text" id="spdsgvo_newsletter_service" style="width: 300px"
|
203 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_newsletter_service'); ?>">
|
204 |
+
</label><span class="info-text"><?php _e('Name of the shipping service provider with which the newsletters will be sent.','shapepress-dsgvo')?></span></td>
|
205 |
+
</tr>
|
206 |
+
<tr>
|
207 |
+
<td><?php _e('URL Privacy Police of Newsletter Service:','shapepress-dsgvo')?></td>
|
208 |
+
<td><label for="spdsgvo_newsletter_service_privacy_policy_url"> <input name="spdsgvo_newsletter_service_privacy_policy_url"
|
209 |
+
type="text" id="spdsgvo_newsletter_service_privacy_policy_url" style="width: 300px"
|
210 |
+
value="<?= SPDSGVOSettings::get('spdsgvo_newsletter_service_privacy_policy_url'); ?>">
|
211 |
+
</label><span class="info-text"><?php _e('The URL to the terms of the newsletter service.','shapepress-dsgvo')?></span></td>
|
212 |
+
</tr>
|
213 |
+
</table>
|
214 |
+
|
215 |
+
|
216 |
+
<br>
|
217 |
+
<?php submit_button(); ?>
|
218 |
+
</form>
|
admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-action.php
CHANGED
@@ -1,60 +1,78 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
Class SPDSGVOCookieNoticeAction extends SPDSGVOAjaxAction{
|
4 |
-
|
5 |
-
protected $action = 'admin-cookie-notice';
|
6 |
-
|
7 |
-
protected function run(){
|
8 |
-
$this->requireAdmin();
|
9 |
-
|
10 |
-
SPDSGVOSettings::set('cn_tracker_init', $this->get('cn_tracker_init', 'on_load'));
|
11 |
-
|
12 |
-
SPDSGVOSettings::set('ga_enable_analytics', $this->get('ga_enable_analytics', '0'));
|
13 |
-
SPDSGVOSettings::set('ga_tag_number', $this->get('ga_tag_number', ''));
|
14 |
-
|
15 |
-
SPDSGVOSettings::set('fb_enable_pixel', $this->get('fb_enable_pixel', '0'));
|
16 |
-
SPDSGVOSettings::set('fb_pixel_number', $this->get('fb_pixel_number', ''));
|
17 |
-
|
18 |
-
SPDSGVOSettings::set('display_cookie_notice', $this->get('display_cookie_notice', '0'));
|
19 |
-
SPDSGVOSettings::set('cookie_notice_custom_text', $this->get('cookie_notice_custom_text', ''));
|
20 |
-
SPDSGVOSettings::set('cn_cookie_validity', $this->get('cn_cookie_validity', '86400'));
|
21 |
-
|
22 |
-
SPDSGVOSettings::set('cn_button_text_ok', $this->get('cn_button_text_ok', ''));
|
23 |
-
SPDSGVOSettings::set('cn_reload_on_confirm', $this->get('cn_reload_on_confirm', '0'));
|
24 |
-
|
25 |
-
SPDSGVOSettings::set('cn_activate_cancel_btn', $this->get('cn_activate_cancel_btn', '0'));
|
26 |
-
SPDSGVOSettings::set('cn_button_text_cancel', $this->get('cn_button_text_cancel', ''));
|
27 |
-
SPDSGVOSettings::set('cn_decline_target_url', $this->get('cn_decline_target_url', ''));
|
28 |
-
SPDSGVOSettings::set('cn_decline_no_cookie', $this->get('cn_decline_no_cookie', '0'));
|
29 |
-
|
30 |
-
SPDSGVOSettings::set('cn_activate_more_btn', $this->get('cn_activate_more_btn', '0'));
|
31 |
-
SPDSGVOSettings::set('cn_button_text_more', $this->get('cn_button_text_more', ''));
|
32 |
-
SPDSGVOSettings::set('cn_read_more_page', $this->get('cn_read_more_page', ''));
|
33 |
-
|
34 |
-
SPDSGVOSettings::set('cn_position', $this->get('cn_position', 'bottom'));
|
35 |
-
SPDSGVOSettings::set('cn_animation', $this->get('cn_animation', 'none'));
|
36 |
-
|
37 |
-
if (
|
38 |
-
{
|
39 |
-
SPDSGVOSettings::set('cn_background_color', $this->get('cn_background_color', '#333333'));
|
40 |
-
SPDSGVOSettings::set('cn_text_color', $this->get('cn_text_color', '#ffffff'));
|
41 |
-
SPDSGVOSettings::set('cn_background_color_button', $this->get('cn_background_color_button', '#F3F3F3'));
|
42 |
-
SPDSGVOSettings::set('cn_text_color_button', $this->get('cn_text_color_button', '#333333'));
|
43 |
-
SPDSGVOSettings::set('cn_custom_css_container', $this->get('cn_custom_css_container', ''));
|
44 |
-
SPDSGVOSettings::set('cn_custom_css_text', $this->get('cn_custom_css_text', ''));
|
45 |
-
SPDSGVOSettings::set('cn_custom_css_buttons', $this->get('cn_custom_css_buttons', ''));
|
46 |
-
|
47 |
-
SPDSGVOSettings::set('cn_size_text', $this->get('cn_size_text', 'auto'));
|
48 |
-
SPDSGVOSettings::set('cn_height_container', $this->get('cn_height_container', 'auto'));
|
49 |
-
SPDSGVOSettings::set('cn_show_dsgvo_icon', $this->get('cn_show_dsgvo_icon', '0'));
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
Class SPDSGVOCookieNoticeAction extends SPDSGVOAjaxAction{
|
4 |
+
|
5 |
+
protected $action = 'admin-cookie-notice';
|
6 |
+
|
7 |
+
protected function run(){
|
8 |
+
$this->requireAdmin();
|
9 |
+
|
10 |
+
SPDSGVOSettings::set('cn_tracker_init', $this->get('cn_tracker_init', 'on_load'));
|
11 |
+
|
12 |
+
SPDSGVOSettings::set('ga_enable_analytics', $this->get('ga_enable_analytics', '0'));
|
13 |
+
SPDSGVOSettings::set('ga_tag_number', $this->get('ga_tag_number', ''));
|
14 |
+
|
15 |
+
SPDSGVOSettings::set('fb_enable_pixel', $this->get('fb_enable_pixel', '0'));
|
16 |
+
SPDSGVOSettings::set('fb_pixel_number', $this->get('fb_pixel_number', ''));
|
17 |
+
|
18 |
+
SPDSGVOSettings::set('display_cookie_notice', $this->get('display_cookie_notice', '0'));
|
19 |
+
SPDSGVOSettings::set('cookie_notice_custom_text', $this->get('cookie_notice_custom_text', ''));
|
20 |
+
SPDSGVOSettings::set('cn_cookie_validity', $this->get('cn_cookie_validity', '86400'));
|
21 |
+
|
22 |
+
SPDSGVOSettings::set('cn_button_text_ok', $this->get('cn_button_text_ok', ''));
|
23 |
+
SPDSGVOSettings::set('cn_reload_on_confirm', $this->get('cn_reload_on_confirm', '0'));
|
24 |
+
|
25 |
+
SPDSGVOSettings::set('cn_activate_cancel_btn', $this->get('cn_activate_cancel_btn', '0'));
|
26 |
+
SPDSGVOSettings::set('cn_button_text_cancel', $this->get('cn_button_text_cancel', ''));
|
27 |
+
SPDSGVOSettings::set('cn_decline_target_url', $this->get('cn_decline_target_url', ''));
|
28 |
+
SPDSGVOSettings::set('cn_decline_no_cookie', $this->get('cn_decline_no_cookie', '0'));
|
29 |
+
|
30 |
+
SPDSGVOSettings::set('cn_activate_more_btn', $this->get('cn_activate_more_btn', '0'));
|
31 |
+
SPDSGVOSettings::set('cn_button_text_more', $this->get('cn_button_text_more', ''));
|
32 |
+
SPDSGVOSettings::set('cn_read_more_page', $this->get('cn_read_more_page', ''));
|
33 |
+
|
34 |
+
SPDSGVOSettings::set('cn_position', $this->get('cn_position', 'bottom'));
|
35 |
+
SPDSGVOSettings::set('cn_animation', $this->get('cn_animation', 'none'));
|
36 |
+
|
37 |
+
if (isValidBlogEdition() || isValidPremiumEdition())
|
38 |
+
{
|
39 |
+
SPDSGVOSettings::set('cn_background_color', $this->get('cn_background_color', '#333333'));
|
40 |
+
SPDSGVOSettings::set('cn_text_color', $this->get('cn_text_color', '#ffffff'));
|
41 |
+
SPDSGVOSettings::set('cn_background_color_button', $this->get('cn_background_color_button', '#F3F3F3'));
|
42 |
+
SPDSGVOSettings::set('cn_text_color_button', $this->get('cn_text_color_button', '#333333'));
|
43 |
+
SPDSGVOSettings::set('cn_custom_css_container', $this->get('cn_custom_css_container', ''));
|
44 |
+
SPDSGVOSettings::set('cn_custom_css_text', $this->get('cn_custom_css_text', ''));
|
45 |
+
SPDSGVOSettings::set('cn_custom_css_buttons', $this->get('cn_custom_css_buttons', ''));
|
46 |
+
|
47 |
+
SPDSGVOSettings::set('cn_size_text', $this->get('cn_size_text', 'auto'));
|
48 |
+
SPDSGVOSettings::set('cn_height_container', $this->get('cn_height_container', 'auto'));
|
49 |
+
SPDSGVOSettings::set('cn_show_dsgvo_icon', $this->get('cn_show_dsgvo_icon', '0'));
|
50 |
+
SPDSGVOSettings::set('cn_use_overlay', $this->get('cn_use_overlay', '0'));
|
51 |
+
}
|
52 |
+
|
53 |
+
if (isValidPremiumEdition())
|
54 |
+
{
|
55 |
+
/* i592995 */
|
56 |
+
SPDSGVOSettings::set('cookie_notice_display', $this->get('cookie_notice_display', 'no_popup'));
|
57 |
+
SPDSGVOSettings::set('logo_image_id', $this->get('logo_image_id', ''));
|
58 |
+
SPDSGVOSettings::set('close_button_action', $this->get('close_button_action', '0'));
|
59 |
+
SPDSGVOSettings::set('close_button_url', $this->get('close_button_url', ''));
|
60 |
+
SPDSGVOSettings::set('accordion_top', $this->get('accordion_top', ''));
|
61 |
+
SPDSGVOSettings::set('popup_background', $this->get('popup_background', '#ffffff'));
|
62 |
+
SPDSGVOSettings::set('separators_color', $this->get('separators_color', '#f1f1f1'));
|
63 |
+
SPDSGVOSettings::set('text_color', $this->get('text_color', '#222222'));
|
64 |
+
SPDSGVOSettings::set('links_color', $this->get('links_color', '#4285f'));
|
65 |
+
SPDSGVOSettings::set('links_color_hover', $this->get('links_color_hover', '#4285f'));
|
66 |
+
SPDSGVOSettings::set('accept_button_text_color', $this->get('accept_button_text_color', '#ffffff'));
|
67 |
+
SPDSGVOSettings::set('accept_button_bg_color', $this->get('accept_button_bg_color', '#4285f'));
|
68 |
+
SPDSGVOSettings::set('ga_code', $this->get('ga_code', ''));
|
69 |
+
SPDSGVOSettings::set('fb_pixel_code', $this->get('fb_pixel_code', ''));
|
70 |
+
SPDSGVOSettings::set('own_code', $this->get('own_code', ''));
|
71 |
+
/* i592995 */
|
72 |
+
}
|
73 |
+
|
74 |
+
$this->returnBack();
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
SPDSGVOCookieNoticeAction::listen();
|
admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php
CHANGED
@@ -1,14 +1,17 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SPDSGVOCookieNoticeTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
-
public $title = 'Cookie Notice';
|
6 |
-
public $slug = 'cookie-notice';
|
7 |
-
public $isHidden = FALSE;
|
8 |
-
|
9 |
-
public function __construct(){
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOCookieNoticeTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
+
public $title = 'Cookie Notice';
|
6 |
+
public $slug = 'cookie-notice';
|
7 |
+
public $isHidden = FALSE;
|
8 |
+
|
9 |
+
public function __construct(){
|
10 |
+
|
11 |
+
$this->title = __('Cookie Notice','shapepress-dsgvo');
|
12 |
+
}
|
13 |
+
|
14 |
+
public function page(){
|
15 |
+
include plugin_dir_path(__FILE__) .'page.php';
|
16 |
+
}
|
17 |
+
}
|
admin/tabs/cookie-notice/page.php
CHANGED
@@ -1,434 +1,674 @@
|
|
1 |
-
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
-
<input type="hidden" name="action" value="admin-cookie-notice">
|
3 |
-
|
4 |
-
<h1
|
5 |
-
|
6 |
-
<table class="form-table">
|
7 |
-
<tr>
|
8 |
-
<th scope="row"
|
9 |
-
<td>
|
10 |
-
<?php $cnTrackerInit = SPDSGVOSettings::get('cn_tracker_init'); ?>
|
11 |
-
<label for="cn_tracker_init"> <select name="cn_tracker_init"
|
12 |
-
id="cn_tracker_init">
|
13 |
-
<option value="on_load" <?= selected($cnTrackerInit == 'on_load') ?>>
|
14 |
-
<option value="after_confirm" <?= selected($cnTrackerInit == 'after_confirm')
|
15 |
-
</select>
|
16 |
-
</label> <span class="info-text"
|
17 |
-
</td>
|
18 |
-
</tr>
|
19 |
-
</table>
|
20 |
-
|
21 |
-
<table class="form-table" style="margin-top: 0">
|
22 |
-
<tbody>
|
23 |
-
<tr>
|
24 |
-
<td>
|
25 |
-
<table class="form-table">
|
26 |
-
<tr>
|
27 |
-
<th scope="row"
|
28 |
-
<td><label for="ga_enable_analytics"> <input
|
29 |
-
name="ga_enable_analytics" type="checkbox"
|
30 |
-
id="ga_enable_analytics" value="1"
|
31 |
-
<?= (SPDSGVOSettings::get('ga_enable_analytics') === '1')? ' checked ' : ''; ?>>
|
32 |
-
</label></td>
|
33 |
-
</tr>
|
34 |
-
<tr>
|
35 |
-
<th scope="row"
|
36 |
-
<td><label for="ga_tag_number"> <input name="ga_tag_number"
|
37 |
-
type="text" id="ga_tag_number"
|
38 |
-
value="<?= SPDSGVOSettings::get('ga_tag_number'); ?>">
|
39 |
-
</label></td>
|
40 |
-
</tr>
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
</
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
<
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
</td>
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
<td>
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
<
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
<td
|
301 |
-
|
302 |
-
|
303 |
-
value="
|
304 |
-
</label>
|
305 |
-
</td>
|
306 |
-
</tr>
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
<td>
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
<
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
<td>
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
+
<input type="hidden" name="action" value="admin-cookie-notice">
|
3 |
+
|
4 |
+
<h1><?php _e('Cookie Notice','shapepress-dsgvo')?></h1>
|
5 |
+
|
6 |
+
<table class="form-table">
|
7 |
+
<tr>
|
8 |
+
<th scope="row"><?php _e('Tracker initialization:','shapepress-dsgvo')?></th>
|
9 |
+
<td>
|
10 |
+
<?php $cnTrackerInit = SPDSGVOSettings::get('cn_tracker_init'); ?>
|
11 |
+
<label for="cn_tracker_init"> <select name="cn_tracker_init"
|
12 |
+
id="cn_tracker_init">
|
13 |
+
<option value="on_load" <?= selected($cnTrackerInit == 'on_load') ?>> <?php _e('When loading the page','shapepress-dsgvo')?></option>
|
14 |
+
<option value="after_confirm" <?= selected($cnTrackerInit == 'after_confirm') ?>><?php _e('After approval of the cookie','shapepress-dsgvo')?></option>
|
15 |
+
</select>
|
16 |
+
</label> <span class="info-text"><?php _e('Specifies when the trackers should be active. Whether before the consent of the cookie or after clicking on Ok. For After approval Reload after approval must be checked.','shapepress-dsgvo')?></span>
|
17 |
+
</td>
|
18 |
+
</tr>
|
19 |
+
</table>
|
20 |
+
|
21 |
+
<table class="form-table" style="margin-top: 0">
|
22 |
+
<tbody>
|
23 |
+
<tr>
|
24 |
+
<td style="width: 50%;">
|
25 |
+
<table class="form-table">
|
26 |
+
<tr>
|
27 |
+
<th scope="row"><?php _e('Google Analyics','shapepress-dsgvo')?></th>
|
28 |
+
<td><label for="ga_enable_analytics"> <input
|
29 |
+
name="ga_enable_analytics" type="checkbox"
|
30 |
+
id="ga_enable_analytics" value="1"
|
31 |
+
<?= (SPDSGVOSettings::get('ga_enable_analytics') === '1')? ' checked ' : ''; ?>>
|
32 |
+
</label></td>
|
33 |
+
</tr>
|
34 |
+
<tr>
|
35 |
+
<th scope="row"><?php _e('GTAG number:','shapepress-dsgvo')?></th>
|
36 |
+
<td><label for="ga_tag_number"> <input name="ga_tag_number"
|
37 |
+
type="text" id="ga_tag_number" placeholder="XX-XXXXXX-X"
|
38 |
+
value="<?= SPDSGVOSettings::get('ga_tag_number'); ?>">
|
39 |
+
</label></td>
|
40 |
+
</tr>
|
41 |
+
|
42 |
+
<tr>
|
43 |
+
<td colspan="2" class="info-text"><?php _e('The IP address will be anonymously and visitors get the option refuse tracking. <br />Tip: Country specific geodata will be further tracked even with anonymization.','shapepress-dsgvo')?>
|
44 |
+
</td>
|
45 |
+
</tr>
|
46 |
+
</table>
|
47 |
+
</td>
|
48 |
+
<td style="width: 50%:">
|
49 |
+
<table class="form-table">
|
50 |
+
<tr>
|
51 |
+
<th scope="row"><?php _e('Facebook Pixel','shapepress-dsgvo')?></th>
|
52 |
+
<td><label for="fb_enable_pixel"> <input name="fb_enable_pixel"
|
53 |
+
type="checkbox" id="fb_enable_pixel" value="1"
|
54 |
+
<?= (SPDSGVOSettings::get('fb_enable_pixel') === '1')? ' checked ' : ''; ?>>
|
55 |
+
</label></td>
|
56 |
+
</tr>
|
57 |
+
<tr>
|
58 |
+
<th scope="row"><?php _e('FB Pixel Id:','shapepress-dsgvo')?></th>
|
59 |
+
<td><label for="fb_pixel_number"> <input name="fb_pixel_number"
|
60 |
+
type="text" id="fb_pixel_number" placeholder="123456789"
|
61 |
+
value="<?= SPDSGVOSettings::get('fb_pixel_number'); ?>">
|
62 |
+
</label></td>
|
63 |
+
</tr>
|
64 |
+
|
65 |
+
<tr>
|
66 |
+
<td colspan="2" style="vertical-align: top" class="info-text"><?php _e('Visitors maintained the opportunity to reject the tracking.','shapepress-dsgvo')?></td>
|
67 |
+
</tr>
|
68 |
+
</table>
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
|
72 |
+
<!-- i592995 -->
|
73 |
+
<?php $disableOwnTracker = (isValidBlogEdition() || isValidPremiumEdition()) == false; ?>
|
74 |
+
<tr>
|
75 |
+
<th scope="row">
|
76 |
+
<?php _e('Use your own Codes (at own risk)','shapepress-dsgvo')?>
|
77 |
+
<label for="own_code"> <input
|
78 |
+
name="own_code" type="checkbox"
|
79 |
+
id="own_code" value="1"
|
80 |
+
<?= $disableOwnTracker ? 'disabled' : true; ?>
|
81 |
+
<?= (SPDSGVOSettings::get('own_code') === '1')? ' checked ' : ''; ?>>
|
82 |
+
</label>
|
83 |
+
</th>
|
84 |
+
<td>
|
85 |
+
</td>
|
86 |
+
</tr>
|
87 |
+
|
88 |
+
<tr>
|
89 |
+
<td>
|
90 |
+
<table class="form-table">
|
91 |
+
|
92 |
+
<?php
|
93 |
+
$ga_code = SPDSGVOSettings::get('ga_code', '');
|
94 |
+
if($ga_code == '') {
|
95 |
+
$ga_code = googleAnalyticsScript(true);
|
96 |
+
}
|
97 |
+
?>
|
98 |
+
|
99 |
+
<tr>
|
100 |
+
<th scope="row"><?php _e('Google Analytics code:','shapepress-dsgvo')?></th>
|
101 |
+
<td>
|
102 |
+
<label for="ga_code">
|
103 |
+
<textarea id="ga_code" name="ga_code" class="ga-code" <?= (SPDSGVOSettings::get('own_code') === '1')? '' : 'disabled'; ?>>
|
104 |
+
<?php echo $ga_code; ?>
|
105 |
+
</textarea>
|
106 |
+
<?php _e('If left blank, the standard GA script will be used','shapepress-dsgvo'); ?>
|
107 |
+
</label>
|
108 |
+
</td>
|
109 |
+
</tr>
|
110 |
+
<!-- .i592995 -->
|
111 |
+
</table>
|
112 |
+
</td>
|
113 |
+
<td>
|
114 |
+
<table class="form-table">
|
115 |
+
<!-- .i592995 -->
|
116 |
+
|
117 |
+
<?php
|
118 |
+
$fb_pixel_code = SPDSGVOSettings::get('fb_pixel_code', '');
|
119 |
+
if($fb_pixel_code == '') {
|
120 |
+
$fb_pixel_code = facebookPixelScript(true);
|
121 |
+
}
|
122 |
+
?>
|
123 |
+
|
124 |
+
<tr>
|
125 |
+
<th scope="row"><?php _e('Facebook Pixel code:','shapepress-dsgvo')?></th>
|
126 |
+
<td>
|
127 |
+
<label for="fb_pixel_code">
|
128 |
+
<textarea id="fb_pixel_code" name="fb_pixel_code" class="fb-pixel-code" <?= (SPDSGVOSettings::get('own_code') === '1')? '' : 'disabled'; ?>>
|
129 |
+
<?php echo $fb_pixel_code; ?>
|
130 |
+
</textarea>
|
131 |
+
<?php _e('If left blank, the standard FB Pixel script will be used. [pixel_number] will be replaced with FB Pixel ID.','shapepress-dsgvo'); ?>
|
132 |
+
</label>
|
133 |
+
</td>
|
134 |
+
</tr>
|
135 |
+
</table>
|
136 |
+
</td>
|
137 |
+
</tr>
|
138 |
+
|
139 |
+
<!-- i592995 -->
|
140 |
+
|
141 |
+
</table>
|
142 |
+
<hr class="sp-dsgvo">
|
143 |
+
|
144 |
+
<!-- i592995 -->
|
145 |
+
<table class="form-table">
|
146 |
+
<tr>
|
147 |
+
<th scope="row"><?php _e('Notice type','shapepress-dsgvo')?></th>
|
148 |
+
<td>
|
149 |
+
<label for="cookie_notice_display">
|
150 |
+
<select id="cookie_notice_display" name="cookie_notice_display">
|
151 |
+
<option value="no_popup" <?php if(SPDSGVOSettings::get('cookie_notice_display') == 'no_popup') {echo 'selected';} ?>><?php _e('No notice','shapepress-dsgvo')?></option>
|
152 |
+
<option value="cookie_notice" <?php if(SPDSGVOSettings::get('cookie_notice_display') == 'cookie_notice') {echo 'selected';} ?>><?php _e('Cookie Notice','shapepress-dsgvo')?></option>
|
153 |
+
<?php if(isValidPremiumEdition()):?>
|
154 |
+
<option value="policy_popup" <?php if(SPDSGVOSettings::get('cookie_notice_display') == 'policy_popup') {echo 'selected';} ?>><?php _e('Privacy Popup','shapepress-dsgvo')?></option>
|
155 |
+
<?php endif?>
|
156 |
+
</select><!-- #cookie_notice_display -->
|
157 |
+
</label>
|
158 |
+
</td>
|
159 |
+
</tr>
|
160 |
+
</table>
|
161 |
+
|
162 |
+
<table class="form-table policy-popup-settings" id="policy_popup_settings">
|
163 |
+
<tr>
|
164 |
+
<th scope="row"><?php _e('Popup logo','shapepress-dsgvo')?></th>
|
165 |
+
<td>
|
166 |
+
<?php
|
167 |
+
$src = '';
|
168 |
+
$img_id = '';
|
169 |
+
if(SPDSGVOSettings::get('logo_image_id', '') != '') {
|
170 |
+
$img_id = SPDSGVOSettings::get('logo_image_id');
|
171 |
+
$src = wp_get_attachment_url(intval($img_id));
|
172 |
+
}
|
173 |
+
?>
|
174 |
+
<?php $disableUploadButton = (isValidBlogEdition() || isValidPremiumEdition()) == false; ?>
|
175 |
+
<div class="dsgvo-image-upload">
|
176 |
+
<div class='image-preview-wrapper'>
|
177 |
+
<img id='logo_image-preview' class="image-preview" src='<?php echo $src; ?>' style="width: 200px">
|
178 |
+
</div>
|
179 |
+
<input id="logo_upload_image_button" type="button"
|
180 |
+
class="button"
|
181 |
+
<?= $disableUploadButton ? 'disabled' : true; ?>
|
182 |
+
value="<?php _e( 'Upload image', 'shapepress-dsgvo' ); ?>" />
|
183 |
+
<input type='hidden' class="image-id" name='logo_image_id' id='logo_image_id' value='<?php echo $img_id; ?>'>
|
184 |
+
</div><!-- .dsgvo-image-upload -->
|
185 |
+
</td>
|
186 |
+
</tr>
|
187 |
+
|
188 |
+
<tr>
|
189 |
+
<th scope="row"><?php _e('Close button action','shapepress-dsgvo')?></th>
|
190 |
+
<td>
|
191 |
+
<label for="close_button_action">
|
192 |
+
<select id="close_button_action" name="close_button_action">
|
193 |
+
<option value="0" <?php if(SPDSGVOSettings::get('close_button_action') == '0') {echo 'selected';} ?>><?php _e('Close popup','shapepress-dsgvo')?></option>
|
194 |
+
<option value="1" <?php if(SPDSGVOSettings::get('close_button_action') == '1') {echo 'selected';} ?>><?php _e('Redirect to URL','shapepress-dsgvo')?></option>
|
195 |
+
</select><!-- #close_button_action -->
|
196 |
+
</label>
|
197 |
+
</td>
|
198 |
+
</tr>
|
199 |
+
|
200 |
+
<tr>
|
201 |
+
<th scope="row"><?php _e('Close button URL','shapepress-dsgvo')?></th>
|
202 |
+
<td>
|
203 |
+
<label for="close_button_url">
|
204 |
+
<input type="text" value="<?php echo SPDSGVOSettings::get('close_button_url', ''); ?>" name="close_button_url" id="close_button_url" />
|
205 |
+
</label>
|
206 |
+
</td>
|
207 |
+
</tr>
|
208 |
+
|
209 |
+
<tr>
|
210 |
+
<th scope="row"><?php _e('Accordion title text','shapepress-dsgvo')?></th>
|
211 |
+
<td>
|
212 |
+
<label for="accordion_top">
|
213 |
+
<input type="text" value="<?php echo SPDSGVOSettings::get('accordion_top', ''); ?>" name="accordion_top" id="accordion_top" />
|
214 |
+
</label>
|
215 |
+
</td>
|
216 |
+
</tr>
|
217 |
+
|
218 |
+
<tr>
|
219 |
+
<?php
|
220 |
+
$val = SPDSGVOSettings::get('popup_background');
|
221 |
+
if($val == '') {
|
222 |
+
$val = '#ffffff';
|
223 |
+
}
|
224 |
+
?>
|
225 |
+
<td style="width: 200px"><?php _e('Popup background:','shapepress-dsgvo')?></td>
|
226 |
+
<td><label for="popup_background"> <input
|
227 |
+
name="popup_background" type="color" id="popup_background"
|
228 |
+
value="<?php echo $val; ?>">
|
229 |
+
</label>
|
230 |
+
</td>
|
231 |
+
</tr>
|
232 |
+
|
233 |
+
<tr>
|
234 |
+
<?php
|
235 |
+
$val = SPDSGVOSettings::get('separators_color');
|
236 |
+
if($val == '') {
|
237 |
+
$val = '#f1f1f1';
|
238 |
+
}
|
239 |
+
?>
|
240 |
+
<td style="width: 200px"><?php _e('Separators color:','shapepress-dsgvo')?></td>
|
241 |
+
<td><label for="separators_color"> <input
|
242 |
+
name="separators_color" type="color" id="separators_color"
|
243 |
+
value="<?php echo $val; ?>">
|
244 |
+
</label>
|
245 |
+
</td>
|
246 |
+
</tr>
|
247 |
+
|
248 |
+
<tr>
|
249 |
+
<?php
|
250 |
+
$val = SPDSGVOSettings::get('text_color');
|
251 |
+
if($val == '') {
|
252 |
+
$val = '#222222';
|
253 |
+
}
|
254 |
+
?>
|
255 |
+
<td style="width: 200px"><?php _e('Font color:','shapepress-dsgvo')?></td>
|
256 |
+
<td><label for="text_color"> <input
|
257 |
+
name="text_color" type="color" id="text_color"
|
258 |
+
value="<?php echo $val; ?>">
|
259 |
+
</label>
|
260 |
+
</td>
|
261 |
+
</tr>
|
262 |
+
|
263 |
+
<tr>
|
264 |
+
<?php
|
265 |
+
$val = SPDSGVOSettings::get('links_color');
|
266 |
+
if($val == '') {
|
267 |
+
$val = '#4285f4';
|
268 |
+
}
|
269 |
+
?>
|
270 |
+
<td style="width: 200px"><?php _e('Links color:','shapepress-dsgvo')?></td>
|
271 |
+
<td><label for="links_color"> <input
|
272 |
+
name="links_color" type="color" id="links_color"
|
273 |
+
value="<?php echo $val; ?>">
|
274 |
+
</label>
|
275 |
+
</td>
|
276 |
+
</tr>
|
277 |
+
|
278 |
+
<tr>
|
279 |
+
<?php
|
280 |
+
$val = SPDSGVOSettings::get('links_color_hover');
|
281 |
+
if($val == '') {
|
282 |
+
$val = '#4285f4';
|
283 |
+
}
|
284 |
+
?>
|
285 |
+
<td style="width: 200px"><?php _e('Links color (hover):','shapepress-dsgvo')?></td>
|
286 |
+
<td><label for="links_color_hover"> <input
|
287 |
+
name="links_color_hover" type="color" id="links_color_hover"
|
288 |
+
value="<?php echo $val; ?>">
|
289 |
+
</label>
|
290 |
+
</td>
|
291 |
+
</tr>
|
292 |
+
|
293 |
+
<tr>
|
294 |
+
<?php
|
295 |
+
$val = SPDSGVOSettings::get('accept_button_text_color');
|
296 |
+
if($val == '') {
|
297 |
+
$val = '#ffffff';
|
298 |
+
}
|
299 |
+
?>
|
300 |
+
<td style="width: 200px"><?php _e('Accept button font color:','shapepress-dsgvo')?></td>
|
301 |
+
<td><label for="accept_button_text_color"> <input
|
302 |
+
name="accept_button_text_color" type="color" id="accept_button_text_color"
|
303 |
+
value="<?php echo $val; ?>">
|
304 |
+
</label>
|
305 |
+
</td>
|
306 |
+
</tr>
|
307 |
+
|
308 |
+
<tr>
|
309 |
+
<?php
|
310 |
+
$val = SPDSGVOSettings::get('accept_button_bg_color');
|
311 |
+
if($val == '') {
|
312 |
+
$val = '#4285f4';
|
313 |
+
}
|
314 |
+
?>
|
315 |
+
<td style="width: 200px"><?php _e('Accept button background color:','shapepress-dsgvo')?></td>
|
316 |
+
<td><label for="accept_button_bg_color"> <input
|
317 |
+
name="accept_button_bg_color" type="color" id="accept_button_bg_color"
|
318 |
+
value="<?php echo $val; ?>">
|
319 |
+
</label>
|
320 |
+
</td>
|
321 |
+
</tr>
|
322 |
+
|
323 |
+
</table>
|
324 |
+
|
325 |
+
<table class="form-table cookie-notice-settings">
|
326 |
+
<?php /*
|
327 |
+
<tr>
|
328 |
+
|
329 |
+
<th scope="row"><?php _e('Cookie Notice','shapepress-dsgvo')?></th>
|
330 |
+
<td><label for="display_cookie_notice"> <input
|
331 |
+
name="display_cookie_notice" type="checkbox"
|
332 |
+
id="display_cookie_notice" value="1"
|
333 |
+
<?= (SPDSGVOSettings::get('display_cookie_notice') === '1')? ' checked ' : ''; ?>>
|
334 |
+
</label></td>
|
335 |
+
</tr>
|
336 |
+
|
337 |
+
*/ ?>
|
338 |
+
|
339 |
+
<!-- i592995 -->
|
340 |
+
|
341 |
+
<tr>
|
342 |
+
<th scope="row"><?php _e('Notice text:','shapepress-dsgvo')?></th>
|
343 |
+
<td><textarea name="cookie_notice_custom_text"
|
344 |
+
placeholder="<?php _e('Insert the text here', 'shapepress-dsgvo'); ?>" id="cookie_notice_custom_text" rows="10"
|
345 |
+
style="width: 100%"><?= SPDSGVOSettings::get('cookie_notice_custom_text') ?></textarea></td>
|
346 |
+
</tr>
|
347 |
+
<tr>
|
348 |
+
<td><?php _e('Validity:','shapepress-dsgvo')?></td>
|
349 |
+
<td>
|
350 |
+
<?php $cnCookieValidity = SPDSGVOSettings::get('cn_cookie_validity'); ?>
|
351 |
+
<label for="cn_cookie_validity"> <select name="cn_cookie_validity"
|
352 |
+
id="cn_cookie_validity">
|
353 |
+
<option value="86400" <?= selected($cnCookieValidity == 86400) ?>>1
|
354 |
+
<?php _e('Tag','shapepress-dsgvo')?></option>
|
355 |
+
<option value="604800" <?= selected($cnCookieValidity == 604800) ?>>1
|
356 |
+
<?php _e('Woche','shapepress-dsgvo')?></option>
|
357 |
+
<option value="2592000"
|
358 |
+
<?= selected($cnCookieValidity == 2592000) ?>>1 <?php _e('Month','shapepress-dsgvo')?></option>
|
359 |
+
<option value="7862400"
|
360 |
+
<?= selected($cnCookieValidity == 7862400) ?>>2 <?php _e('Month','shapepress-dsgvo')?></option>
|
361 |
+
<option value="15811200"
|
362 |
+
<?= selected($cnCookieValidity == 15811200) ?>>6 <?php _e('Month','shapepress-dsgvo')?></option>
|
363 |
+
<option value="31536000"
|
364 |
+
<?= selected($cnCookieValidity == 31536000) ?>>1 <?php _e('Year','shapepress-dsgvo')?></option>
|
365 |
+
</select>
|
366 |
+
</label> <span class="info-text"><?php _e('For this period, the cookie is navigation use validly.','shapepress-dsgvo')?></span>
|
367 |
+
</td>
|
368 |
+
</tr>
|
369 |
+
<tr>
|
370 |
+
<th scope="row"></th>
|
371 |
+
<td></td>
|
372 |
+
</tr>
|
373 |
+
|
374 |
+
<tr>
|
375 |
+
<th scope="row"><?php _e('Confirmation','shapepress-dsgvo')?></th>
|
376 |
+
<td></td>
|
377 |
+
</tr>
|
378 |
+
|
379 |
+
<tr>
|
380 |
+
<td><?php _e('Button text:','shapepress-dsgvo')?></td>
|
381 |
+
|
382 |
+
<td><label for="cn_button_text_ok"> <input name="cn_button_text_ok"
|
383 |
+
style="width: 300px" type="text" id="cn_button_text_ok"
|
384 |
+
value="<?= SPDSGVOSettings::get('cn_button_text_ok'); ?>"
|
385 |
+
placeholder="<?php _e('zB.: Ok', 'shapepress-dsgvo'); ?>">
|
386 |
+
</label><span class="info-text"><?php _e('The text to be displayed is to accept the note and hide the message.','shapepress-dsgvo')?></span></td>
|
387 |
+
|
388 |
+
</tr>
|
389 |
+
|
390 |
+
<tr>
|
391 |
+
<td><?php _e('Reload after confirm:','shapepress-dsgvo')?></td>
|
392 |
+
|
393 |
+
<td><label for="cn_reload_on_confirm"> <input
|
394 |
+
name="cn_reload_on_confirm" type="checkbox"
|
395 |
+
id="cn_reload_on_confirm" value="1"
|
396 |
+
<?= (SPDSGVOSettings::get('cn_reload_on_confirm') === '1')? ' checked ' : ''; ?>>
|
397 |
+
</label><span class="info-text"><?php _e('Enable this option to reload the page after accepting cookies.','shapepress-dsgvo')?></span></td>
|
398 |
+
|
399 |
+
</tr>
|
400 |
+
|
401 |
+
<tr>
|
402 |
+
<th scope="row"><?php _e('Decline','shapepress-dsgvo')?></th>
|
403 |
+
<td></td>
|
404 |
+
</tr>
|
405 |
+
|
406 |
+
<tr>
|
407 |
+
<td><?php _e('Button active:','shapepress-dsgvo')?></td>
|
408 |
+
|
409 |
+
<td><label for="cn_activate_cancel_btn"> <input
|
410 |
+
name="cn_activate_cancel_btn" type="checkbox"
|
411 |
+
id="cn_activate_cancel_btn" value="1"
|
412 |
+
<?= (SPDSGVOSettings::get('cn_activate_cancel_btn') === '1')? ' checked ' : ''; ?>>
|
413 |
+
</label></td>
|
414 |
+
|
415 |
+
</tr>
|
416 |
+
<tr>
|
417 |
+
<td><?php _e('Button text:','shapepress-dsgvo')?></td>
|
418 |
+
|
419 |
+
<td><label for="cn_button_text_cancel"> <input
|
420 |
+
name="cn_button_text_cancel" type="text" id="cn_button_text_cancel"
|
421 |
+
style="width: 300px"
|
422 |
+
value="<?= SPDSGVOSettings::get('cn_button_text_cancel'); ?>"
|
423 |
+
placeholder="<?php _e('eg.: Decline','shapepress-dsgvo')?>">
|
424 |
+
</label><span class="info-text"><?php _e('The text of the option to decline cookies.','shapepress-dsgvo')?></span></td>
|
425 |
+
|
426 |
+
</tr>
|
427 |
+
|
428 |
+
<tr>
|
429 |
+
<td><?php _e('Link target for rejection:','shapepress-dsgvo')?></td>
|
430 |
+
|
431 |
+
<td><label for="cn_decline_target_url"> <input
|
432 |
+
name="cn_decline_target_url" type="text" id="cn_decline_target_url"
|
433 |
+
style="width: 300px"
|
434 |
+
value="<?= SPDSGVOSettings::get('cn_decline_target_url'); ?>"
|
435 |
+
placeholder="<?php _e('zb.: www.google.at','shapepress-dsgvo')?>">
|
436 |
+
</label><span class="info-text"><?php _e('Specifies the destination where visitors who want to reject the message should be forwarded.','shapepress-dsgvo')?></span></td>
|
437 |
+
|
438 |
+
</tr>
|
439 |
+
<tr>
|
440 |
+
<td><?php _e('Do not set a cookie on forwarding:','shapepress-dsgvo')?></td>
|
441 |
+
<td><label for="cn_decline_no_cookie"> <input
|
442 |
+
name="cn_decline_no_cookie" type="checkbox"
|
443 |
+
id="cn_decline_no_cookie" value="1"
|
444 |
+
<?= (SPDSGVOSettings::get('cn_decline_no_cookie') === '1')? ' checked ' : ''; ?>>
|
445 |
+
</label><span class="info-text"><?php _e('If active, the visitor refuses and returns to the page, the notice will reappear.','shapepress-dsgvo')?></span></td>
|
446 |
+
</tr>
|
447 |
+
|
448 |
+
<tr>
|
449 |
+
<th scope="row"><?php _e('Read more','shapepress-dsgvo')?></th>
|
450 |
+
<td></td>
|
451 |
+
</tr>
|
452 |
+
|
453 |
+
<tr>
|
454 |
+
<td><?php _e('Button active:','shapepress-dsgvo')?></td>
|
455 |
+
|
456 |
+
<td><label for="cn_activate_more_btn"> <input
|
457 |
+
name="cn_activate_more_btn" type="checkbox"
|
458 |
+
id="cn_activate_more_btn" value="1"
|
459 |
+
<?= (SPDSGVOSettings::get('cn_activate_more_btn') === '1')? ' checked ' : ''; ?>>
|
460 |
+
</label></td>
|
461 |
+
|
462 |
+
</tr>
|
463 |
+
|
464 |
+
<tr>
|
465 |
+
<td><?php _e('Button text:','shapepress-dsgvo')?></td>
|
466 |
+
|
467 |
+
<td><label for="cn_button_text_more"> <input
|
468 |
+
name="cn_button_text_more" type="text" id="cn_button_text_more"
|
469 |
+
style="width: 300px"
|
470 |
+
value="<?= SPDSGVOSettings::get('cn_button_text_more'); ?>"
|
471 |
+
placeholder="<?php _e('zB.: Erfahre mehr','shapepress-dsgvo')?>">
|
472 |
+
</label><span class="info-text"><?php _e('The text of the option to obtain more information','shapepress-dsgvo')?></span></td>
|
473 |
+
|
474 |
+
</tr>
|
475 |
+
<tr>
|
476 |
+
<td><?php _e('Link destination to read on:','shapepress-dsgvo')?></td>
|
477 |
+
|
478 |
+
<td>
|
479 |
+
<?php $readMorePage = SPDSGVOSettings::get('cn_read_more_page'); ?>
|
480 |
+
<label for="cn_read_more_page"><select style="width: 300px"
|
481 |
+
name="cn_read_more_page" id="cn_read_more_page">
|
482 |
+
<option value="0">Wählen</option>
|
483 |
+
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
484 |
+
<option <?= selected($readMorePage == $page->ID) ?>
|
485 |
+
value="<?= $page->ID ?>">
|
486 |
+
<?= $page->post_title ?>
|
487 |
+
</option>
|
488 |
+
<?php endforeach; ?>
|
489 |
+
</select> </label><span class="info-text"><?php _e('Specifies the destination to where visitors will find more information about cookies.','shapepress-dsgvo')?></span>
|
490 |
+
</td>
|
491 |
+
|
492 |
+
</tr>
|
493 |
+
|
494 |
+
<tr>
|
495 |
+
<th scope="row" colspan="2"><?php _e('Options for displaying the cookie notice.','shapepress-dsgvo')?></th>
|
496 |
+
</tr>
|
497 |
+
|
498 |
+
<tr>
|
499 |
+
<td><?php _e('Position:','shapepress-dsgvo')?></td>
|
500 |
+
<td>
|
501 |
+
<?php $cnNoticePosition = SPDSGVOSettings::get('cn_position'); ?>
|
502 |
+
<label for="cn_position"> <select name="cn_position" id="cn_position">
|
503 |
+
<option value="top" <?= selected($cnNoticePosition == 'top') ?>><?php _e('On top','shapepress-dsgvo')?></option>
|
504 |
+
<option value="bottom"
|
505 |
+
<?= selected($cnNoticePosition == 'bottom') ?>><?php _e('Bottom','shapepress-dsgvo')?></option>
|
506 |
+
</select>
|
507 |
+
</label> <span class="info-text"><?php _e('Specifies the location where the cookie notice should be displayed.','shapepress-dsgvo')?></span>
|
508 |
+
</td>
|
509 |
+
</tr>
|
510 |
+
<tr>
|
511 |
+
<td><?php _e('Animation','shapepress-dsgvo')?></td>
|
512 |
+
<td>
|
513 |
+
<?php $cnNoticeAnimation = SPDSGVOSettings::get('cn_animation'); ?>
|
514 |
+
<label for="cn_animation"> <select name="cn_animation"
|
515 |
+
id="cn_animation">
|
516 |
+
<option value="none" <?= selected($cnNoticeAnimation == 'none') ?>><?php _e('None','shapepress-dsgvo')?></option>
|
517 |
+
<option value="fade"
|
518 |
+
<?= selected($cnNoticeAnimation == 'fade') ?>><?php _e('fade','shapepress-dsgvo')?></option>
|
519 |
+
<option value="hide"
|
520 |
+
<?= selected($cnNoticeAnimation == 'hide') ?>><?php _e('hide','shapepress-dsgvo')?></option>
|
521 |
+
</select>
|
522 |
+
</label> <span class="info-text"><?php _e('Animation when accepting the cookie message.','shapepress-dsgvo')?></span>
|
523 |
+
</td>
|
524 |
+
</tr>
|
525 |
+
</tbody>
|
526 |
+
</table>
|
527 |
+
|
528 |
+
<?php $disableCnStylingOptionTableInput = (isValidBlogEdition() || isValidPremiumEdition()) == false; ?>
|
529 |
+
<table class="form-table cookie-notice-settings" id="cnStylingOptionTable">
|
530 |
+
<tbody>
|
531 |
+
<tr>
|
532 |
+
<?php if (isValidBlogEdition() || isValidPremiumEdition()) : ?>
|
533 |
+
<th scope="row" colspan="2"><?php _e('Color adjustment','shapepress-dsgvo')?></th>
|
534 |
+
<?php else : ?>
|
535 |
+
<th scope="row" colspan="2"><?php _e('Color adjustment','shapepress-dsgvo')?><span style="color: orange"><?php _e('Possible with blog or premium edition','shapepress-dsgvo')?></span>
|
536 |
+
<small><a href="https://www.wp-dsgvo.eu/shop"><?php _e('Click here to get a license','shapepress-dsgvo')?></a></small>
|
537 |
+
</th>
|
538 |
+
<?php endif; ?>
|
539 |
+
</tr>
|
540 |
+
<tr>
|
541 |
+
<td style="width: 200px"><?php _e('Background:','shapepress-dsgvo')?></td>
|
542 |
+
<td><label for="cn_background_color"> <input
|
543 |
+
name="cn_background_color" type="color" id="cn_background_color"
|
544 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
545 |
+
value="<?= SPDSGVOSettings::get('cn_background_color'); ?>">
|
546 |
+
</label>
|
547 |
+
</td>
|
548 |
+
</tr>
|
549 |
+
<tr>
|
550 |
+
<td><?php _e('Text:','shapepress-dsgvo')?></td>
|
551 |
+
<td><label for="cn_text_color"> <input
|
552 |
+
name="cn_text_color" type="color" id="cn_text_color"
|
553 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
554 |
+
value="<?= SPDSGVOSettings::get('cn_text_color'); ?>">
|
555 |
+
</label></td>
|
556 |
+
</tr>
|
557 |
+
<tr>
|
558 |
+
<td><?php _e('Buttons','shapepress-dsgvo')?></td>
|
559 |
+
<td><?php _e('Background','shapepress-dsgvo')?> <label for="cn_background_color"> <input
|
560 |
+
name="cn_background_color_button" type="color" id="cn_background_color_button"
|
561 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
562 |
+
value="<?= SPDSGVOSettings::get('cn_background_color_button'); ?>">
|
563 |
+
</label>
|
564 |
+
<?php _e('Font:','shapepress-dsgvo')?> <label for="cn_text_color_button"> <input
|
565 |
+
name="cn_text_color_button" type="color" id="cn_text_color_button"
|
566 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
567 |
+
value="<?= SPDSGVOSettings::get('cn_text_color_button'); ?>">
|
568 |
+
</label></td>
|
569 |
+
</tr>
|
570 |
+
<tr>
|
571 |
+
<th scope="row"><?php _e('CSS Classes','shapepress-dsgvo')?></th>
|
572 |
+
<td><span class="info-text"><?php _e('The colors listed under "Color Changes“ must be overwritten with !Important.','shapepress-dsgvo')?></span></td>
|
573 |
+
</tr>
|
574 |
+
<tr>
|
575 |
+
<td><?php _e('Cookie notice:','shapepress-dsgvo')?></td>
|
576 |
+
<td><label for="cn_custom_css_container"> <input
|
577 |
+
name="cn_custom_css_container" type="text" id="cn_custom_css_container"
|
578 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
579 |
+
value="<?= SPDSGVOSettings::get('cn_custom_css_container'); ?>">
|
580 |
+
</label></td>
|
581 |
+
</tr>
|
582 |
+
<tr>
|
583 |
+
<td><?php _e('Text','shapepress-dsgvo')?></td>
|
584 |
+
<td><label for="cn_custom_css_text"> <input
|
585 |
+
name="cn_custom_css_text" type="text" id="cn_custom_css_text"
|
586 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
587 |
+
value="<?= SPDSGVOSettings::get('cn_custom_css_text'); ?>">
|
588 |
+
</label></td>
|
589 |
+
</tr>
|
590 |
+
<tr>
|
591 |
+
<td><?php _e('Buttons:','shapepress-dsgvo')?></td>
|
592 |
+
<td><label for="cn_custom_css_buttons"> <input
|
593 |
+
name="cn_custom_css_buttons" type="text" id="cn_custom_css_buttons"
|
594 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
595 |
+
value="<?= SPDSGVOSettings::get('cn_custom_css_buttons'); ?>">
|
596 |
+
</label></td>
|
597 |
+
</tr>
|
598 |
+
<tr>
|
599 |
+
<th scope="row" colspan="2"><?php _e('Further display options','shapepress-dsgvo')?></th>
|
600 |
+
</tr>
|
601 |
+
<tr>
|
602 |
+
<td><?php _e('Font size','shapepress-dsgvo')?></td>
|
603 |
+
<td><label for="cn_size_text">
|
604 |
+
|
605 |
+
<?php $cnSizeText = SPDSGVOSettings::get('cn_size_text'); ?>
|
606 |
+
<select name="cn_size_text"
|
607 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
608 |
+
id="cn_size_text">
|
609 |
+
<option value="auto" <?= selected($cnSizeText == '11px') ?>><?php _e('Default','shapepress-dsgvo')?></option>
|
610 |
+
<option value="11px" <?= selected($cnSizeText == '11px') ?>>11px</option>
|
611 |
+
<option value="12px" <?= selected($cnSizeText == '12px') ?>>12px</option>
|
612 |
+
<option value="13px" <?= selected($cnSizeText == '13px') ?>>13px</option>
|
613 |
+
<option value="14px" <?= selected($cnSizeText == '14px') ?>>14px</option>
|
614 |
+
<option value="15px" <?= selected($cnSizeText == '15px') ?>>15px</option>
|
615 |
+
<option value="16px" <?= selected($cnSizeText == '16px') ?>>16px</option>
|
616 |
+
<option value="17px" <?= selected($cnSizeText == '17px') ?>>17px</option>
|
617 |
+
<option value="18px" <?= selected($cnSizeText == '18px') ?>>18px</option>
|
618 |
+
<option value="19px" <?= selected($cnSizeText == '19px') ?>>19px</option>
|
619 |
+
<option value="20px" <?= selected($cnSizeText == '20px') ?>>20px</option>
|
620 |
+
</select>
|
621 |
+
|
622 |
+
</label></td>
|
623 |
+
</tr>
|
624 |
+
<tr>
|
625 |
+
<td><?php _e('Height of cookie notice','shapepress-dsgvo')?></td>
|
626 |
+
<td><label for="cn_height_container">
|
627 |
+
|
628 |
+
<?php $cnHeightContainer = SPDSGVOSettings::get('cn_height_container'); ?>
|
629 |
+
<select name="cn_height_container"
|
630 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
631 |
+
id="cn_height_container">
|
632 |
+
<option value="auto" <?= selected($cnHeightContainer == 'auto') ?>><?php _e('Default','shapepress-dsgvo')?></option>
|
633 |
+
<option value="40px" <?= selected($cnHeightContainer == '40px') ?>>40px</option>
|
634 |
+
<option value="45px" <?= selected($cnHeightContainer == '45px') ?>>45px</option>
|
635 |
+
<option value="50px" <?= selected($cnHeightContainer == '50px') ?>>50px</option>
|
636 |
+
<option value="55px" <?= selected($cnHeightContainer == '55px') ?>>55px</option>
|
637 |
+
<option value="60px" <?= selected($cnHeightContainer == '60px') ?>>60px</option>
|
638 |
+
<option value="65px" <?= selected($cnHeightContainer == '65px') ?>>65px</option>
|
639 |
+
<option value="70px" <?= selected($cnHeightContainer == '70px') ?>>70px</option>
|
640 |
+
<option value="75px" <?= selected($cnHeightContainer == '75px') ?>>75px</option>
|
641 |
+
<option value="80px" <?= selected($cnHeightContainer == '80px') ?>>80px</option>
|
642 |
+
</select>
|
643 |
+
|
644 |
+
</label></td>
|
645 |
+
</tr>
|
646 |
+
<tr>
|
647 |
+
<td><?php _e('Show icon:','shapepress-dsgvo')?></td>
|
648 |
+
<td><label for="cn_show_dsgvo_icon"> <input
|
649 |
+
name="cn_show_dsgvo_icon" type="checkbox"
|
650 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : true; ?>
|
651 |
+
id="cn_show_dsgvo_icon" value="1"
|
652 |
+
<?= (SPDSGVOSettings::get('cn_show_dsgvo_icon') === '1')? ' checked ' : ''; ?>>
|
653 |
+
</label></td>
|
654 |
+
</tr>
|
655 |
+
<tr>
|
656 |
+
<td><?php _e('Use overlay','shapepress-dsgvo')?></td>
|
657 |
+
<td><label for="cn_use_overlay"> <input
|
658 |
+
name="cn_use_overlay" type="checkbox"
|
659 |
+
<?= $disableCnStylingOptionTableInput ? 'disabled' : ''; ?>
|
660 |
+
id="cn_use_overlay" value="1"
|
661 |
+
<?= (SPDSGVOSettings::get('cn_use_overlay') === '1')? ' checked ' : ''; ?>>
|
662 |
+
</label><span class="info-text"><?php _e('Displays a gray background and prevents the visitor from interacting with the site before making a choice.','shapepress-dsgvo')?></span></td>
|
663 |
+
</tr>
|
664 |
+
</tbody>
|
665 |
+
</table>
|
666 |
+
|
667 |
+
<hr class="sp-dsgvo">
|
668 |
+
|
669 |
+
|
670 |
+
|
671 |
+
|
672 |
+
<br>
|
673 |
+
<?php submit_button(); ?>
|
674 |
+
</form>
|
admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php
CHANGED
@@ -1,11 +1,14 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOGravityFormsTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
public $title = 'Gravity Forms';
|
6 |
public $slug = 'gravity-forms';
|
7 |
|
8 |
-
public function __construct(){
|
|
|
|
|
|
|
9 |
|
10 |
public function page(){
|
11 |
include plugin_dir_path(__FILE__) .'page.php';
|
@@ -28,4 +31,4 @@ class SPDSGVOGravityFormsTab extends SPDSGVOAdminTab{
|
|
28 |
|
29 |
}
|
30 |
|
31 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOGravityFormsTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
public $title = 'Gravity Forms';
|
6 |
public $slug = 'gravity-forms';
|
7 |
|
8 |
+
public function __construct(){
|
9 |
+
|
10 |
+
$this->title = __('Gravity Forms','shapepress-dsgvo');
|
11 |
+
}
|
12 |
|
13 |
public function page(){
|
14 |
include plugin_dir_path(__FILE__) .'page.php';
|
31 |
|
32 |
}
|
33 |
|
34 |
+
}
|
admin/tabs/gravity-forms/page.php
CHANGED
@@ -1,32 +1,27 @@
|
|
1 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
<input type="hidden" name="action" value="admin-gravity-forms">
|
3 |
|
4 |
-
<h1
|
5 |
|
6 |
-
<p
|
7 |
-
Forms konfiguriert werden.</p>
|
8 |
|
9 |
<hr>
|
10 |
|
11 |
<table class="form-table">
|
12 |
<tbody>
|
13 |
<tr>
|
14 |
-
<th scope="row"
|
15 |
<td><label for="gf_save_no_data"> <input name="gf_save_no_data"
|
16 |
type="checkbox" id="gf_save_no_data" value="1"
|
17 |
<?= (SPDSGVOSettings::get('gf_save_no_data') === '1')? ' checked ' : ''; ?>>
|
18 |
-
</label> <span class="info-text"
|
19 |
-
gespeichert, sonder nur per Email versendet. (Anmerkung: Diese
|
20 |
-
Option überschreibt formularspezfische Einstellungen).</span></td>
|
21 |
</tr>
|
22 |
<tr>
|
23 |
-
<th scope="row"
|
24 |
<td><label for="gf_no_ip_meta"> <input name="gf_no_ip_meta"
|
25 |
type="checkbox" id="gf_no_ip_meta" value="1"
|
26 |
<?= (SPDSGVOSettings::get('gf_no_ip_meta') === '1')? ' checked ' : ''; ?>>
|
27 |
-
</label> <span class="info-text">
|
28 |
-
Gravity Forms die IP Adresse und den User Agent des Absenders.
|
29 |
-
Wenn diese Checkbox aktiviert ist, wird dies verhindert.</span></td>
|
30 |
</tr>
|
31 |
|
32 |
</tbody>
|
@@ -36,22 +31,20 @@
|
|
36 |
|
37 |
<div>
|
38 |
|
39 |
-
<h2
|
40 |
-
<h4
|
41 |
-
definiert werden, ob die Daten des Eingabefeldes in der Datenbank
|
42 |
-
gespeichert werden oder nicht.</h4>
|
43 |
<table class="form-table ">
|
44 |
<tbody>
|
45 |
-
<?php foreach( SPDSGVOGravityFormsTab::get_gf_forms() as $form ) :?>
|
46 |
<tr>
|
47 |
<th scope="row">Form: <?= $form['title'];?></th>
|
48 |
<td>
|
49 |
<?php foreach( $form['fields'] as $field ): ?>
|
50 |
-
|
51 |
<input type="checkbox" id="" value="1"
|
52 |
name="gf_save_no_[<?= $form['id'];?>][<?= $field->id;?>]"
|
53 |
-
<?= (isset( $gf_save_no_[$form['id']][$field->id] ) && $gf_save_no_[$form['id']][$field->id] === '1')? ' checked ' : ''; ?>> <?= $field->label; ?> <small><em>(Nicht in der Datenbank speichern.)</em></small>
|
54 |
-
|
55 |
<?php endforeach; ?>
|
56 |
</td>
|
57 |
</tr>
|
@@ -61,7 +54,6 @@
|
|
61 |
</table>
|
62 |
</div>
|
63 |
<hr>
|
64 |
-
|
65 |
<?php submit_button(); ?>
|
66 |
</form>
|
67 |
-
|
1 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
2 |
<input type="hidden" name="action" value="admin-gravity-forms">
|
3 |
|
4 |
+
<h1><?php _e('Gravity Forms','shapepress-dsgvo')?></h1>
|
5 |
|
6 |
+
<p><?php _e('With these settings the saving behavior of Gravity Forms can be configured.','shapepress-dsgvo')?></p>
|
|
|
7 |
|
8 |
<hr>
|
9 |
|
10 |
<table class="form-table">
|
11 |
<tbody>
|
12 |
<tr>
|
13 |
+
<th scope="row"><?php _e('Do not save form data in the database','shapepress-dsgvo')?></th>
|
14 |
<td><label for="gf_save_no_data"> <input name="gf_save_no_data"
|
15 |
type="checkbox" id="gf_save_no_data" value="1"
|
16 |
<?= (SPDSGVOSettings::get('gf_save_no_data') === '1')? ' checked ' : ''; ?>>
|
17 |
+
</label> <span class="info-text"><?php _e('If activated, no data will be stored, but only sent by e-mail. (Note: This option overrides form-specific settings).).','shapepress-dsgvo')?></span></td>
|
|
|
|
|
18 |
</tr>
|
19 |
<tr>
|
20 |
+
<th scope="row"><?php _e('Do not save IP address and user agent in database','shapepress-dsgvo')?></th>
|
21 |
<td><label for="gf_no_ip_meta"> <input name="gf_no_ip_meta"
|
22 |
type="checkbox" id="gf_no_ip_meta" value="1"
|
23 |
<?= (SPDSGVOSettings::get('gf_no_ip_meta') === '1')? ' checked ' : ''; ?>>
|
24 |
+
</label> <span class="info-text"><?php _e('By default, if this checkbox is checked, this will be prevented from saving the IP address and user agent of the sender.','shapepress-dsgvo')?></span></td>
|
|
|
|
|
25 |
</tr>
|
26 |
|
27 |
</tbody>
|
31 |
|
32 |
<div>
|
33 |
|
34 |
+
<h2><?php _e('Specific form settings','shapepress-dsgvo')?></h2>
|
35 |
+
<h4><?php _e('For each Gravity Forms form, it can be subsequently defined for each field whether the data of the input field is stored in the database or not.','shapepress-dsgvo')?></h4>
|
|
|
|
|
36 |
<table class="form-table ">
|
37 |
<tbody>
|
38 |
+
<?php foreach( SPDSGVOGravityFormsTab::get_gf_forms() as $form ) :?>
|
39 |
<tr>
|
40 |
<th scope="row">Form: <?= $form['title'];?></th>
|
41 |
<td>
|
42 |
<?php foreach( $form['fields'] as $field ): ?>
|
43 |
+
|
44 |
<input type="checkbox" id="" value="1"
|
45 |
name="gf_save_no_[<?= $form['id'];?>][<?= $field->id;?>]"
|
46 |
+
<?= (isset( $gf_save_no_[$form['id']][$field->id] ) && $gf_save_no_[$form['id']][$field->id] === '1')? ' checked ' : ''; ?>> <?= $field->label; ?> <small><em>(<?php _e('Nicht in der Datenbank speichern.','shapepress-dsgvo'); ?>)</em></small>
|
47 |
+
|
48 |
<?php endforeach; ?>
|
49 |
</td>
|
50 |
</tr>
|
54 |
</table>
|
55 |
</div>
|
56 |
<hr>
|
57 |
+
|
58 |
<?php submit_button(); ?>
|
59 |
</form>
|
|
admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php
CHANGED
@@ -1,14 +1,17 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOImprintTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
public $title = 'Impressum';
|
6 |
public $slug = 'imprint';
|
7 |
public $isHidden = TRUE;
|
8 |
|
9 |
-
public function __construct(){
|
10 |
-
|
|
|
|
|
|
|
11 |
public function page(){
|
12 |
include plugin_dir_path(__FILE__) .'page.php';
|
13 |
}
|
14 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOImprintTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
public $title = 'Impressum';
|
6 |
public $slug = 'imprint';
|
7 |
public $isHidden = TRUE;
|
8 |
|
9 |
+
public function __construct(){
|
10 |
+
|
11 |
+
$this->title = __('Imprint','shapepress-dsgvo');
|
12 |
+
}
|
13 |
+
|
14 |
public function page(){
|
15 |
include plugin_dir_path(__FILE__) .'page.php';
|
16 |
}
|
17 |
+
}
|
admin/tabs/imprint/page.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
<h1
|
2 |
-
<p
|
3 |
|
4 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
5 |
<input type="hidden" name="action" value="imprint">
|
@@ -7,49 +7,49 @@
|
|
7 |
<table class="form-table btn-settings-show">
|
8 |
<tbody>
|
9 |
<tr>
|
10 |
-
<th scope="row"
|
11 |
<td>
|
12 |
-
|
13 |
<?php $imprintPage = SPDSGVOSettings::get('imprint_page'); ?>
|
14 |
-
<label for="imprint_page"
|
15 |
<select name="imprint_page" id="imprint_page">
|
16 |
-
<option value="0"
|
17 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
18 |
<option <?= selected($imprintPage == $page->ID) ?> value="<?= $page->ID ?>">
|
19 |
<?= $page->post_title ?>
|
20 |
</option>
|
21 |
<?php endforeach; ?>
|
22 |
</select>
|
23 |
-
</label>
|
24 |
|
25 |
<?php if($imprintPage == '0'): ?>
|
26 |
-
<p
|
27 |
<?php elseif(!pageContainsString($imprintPage, 'imprint')): ?>
|
28 |
-
<p
|
29 |
<?php else: ?>
|
30 |
-
<a href="<?= get_edit_post_link($imprintPage) ?>"
|
31 |
<?php endif; ?>
|
32 |
</td>
|
33 |
</tr>
|
34 |
|
35 |
-
|
36 |
</tbody>
|
37 |
</table>
|
38 |
<hr class="sp-dsgvo">
|
39 |
-
|
40 |
-
|
|
|
41 |
<br>
|
42 |
-
<?php
|
43 |
$imprintContent = SPDSGVOSettings::get('imprint');
|
44 |
if ($imprintContent == NULL || strlen($imprintContent) < 10)
|
45 |
{
|
46 |
-
$imprintContent = file_get_contents(SPDSGVO::pluginDir('imprint.txt'));
|
47 |
-
|
48 |
-
|
49 |
}
|
50 |
-
wp_editor($imprintContent, 'imprint', array('textarea_rows'=> '20'));
|
51 |
-
|
52 |
-
?>
|
53 |
<?php submit_button(); ?>
|
54 |
</form>
|
55 |
-
|
1 |
+
<h1><?php _e('Imprint', 'shapepress-dsgvo'); ?></h1>
|
2 |
+
<p><?php _e('With the shortcode <code>[imprint]</code> an inprint automatically gets generated. The data will be taken from general settings.', 'shapepress-dsgvo'); ?></p>
|
3 |
|
4 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
5 |
<input type="hidden" name="action" value="imprint">
|
7 |
<table class="form-table btn-settings-show">
|
8 |
<tbody>
|
9 |
<tr>
|
10 |
+
<th scope="row"><?php _e('Imprint Page','shapepress-dsgvo')?></th>
|
11 |
<td>
|
12 |
+
|
13 |
<?php $imprintPage = SPDSGVOSettings::get('imprint_page'); ?>
|
14 |
+
<label for="imprint_page"><?php _e('Page', 'shapepress-dsgvo'); ?>:
|
15 |
<select name="imprint_page" id="imprint_page">
|
16 |
+
<option value="0"><?php _e('Select','shapepress-dsgvo')?></option>
|
17 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
18 |
<option <?= selected($imprintPage == $page->ID) ?> value="<?= $page->ID ?>">
|
19 |
<?= $page->post_title ?>
|
20 |
</option>
|
21 |
<?php endforeach; ?>
|
22 |
</select>
|
23 |
+
</label>
|
24 |
|
25 |
<?php if($imprintPage == '0'): ?>
|
26 |
+
<p><?php _e('Create a page that uses the shortcode <code>[imprint]</code>.','shapepress-dsgvo')?><a class="button button-default" href="<?= SPDSGVOCreatePageAction::url(array('imprint_page' => '1')) ?>"><?php _e('Create page','shapepress-dsgvo')?></a></p>
|
27 |
<?php elseif(!pageContainsString($imprintPage, 'imprint')): ?>
|
28 |
+
<p><?php _e('Attention: The shortcode <code>[imprint]</code> was not found on the page you selected.','shapepress-dsgvo')?> <a href="<?= get_edit_post_link($imprintPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a></p>
|
29 |
<?php else: ?>
|
30 |
+
<a href="<?= get_edit_post_link($imprintPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
31 |
<?php endif; ?>
|
32 |
</td>
|
33 |
</tr>
|
34 |
|
35 |
+
|
36 |
</tbody>
|
37 |
</table>
|
38 |
<hr class="sp-dsgvo">
|
39 |
+
<br>
|
40 |
+
<span class="info-text" style="margin-bottom: 20px;"><?php _e('Note: In order to be able to reset or reload the text (eg: after changing the language), highlight the text, delete it and click save. Thus, the text is reloaded.','shapepress-dsgvo')?></span>
|
41 |
+
<div style="clear: both"></div>
|
42 |
<br>
|
43 |
+
<?php
|
44 |
$imprintContent = SPDSGVOSettings::get('imprint');
|
45 |
if ($imprintContent == NULL || strlen($imprintContent) < 10)
|
46 |
{
|
47 |
+
$imprintContent = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/imprint.txt'));
|
48 |
+
|
49 |
+
|
50 |
}
|
51 |
+
wp_editor($imprintContent, 'imprint', array('textarea_rows'=> '20'));
|
52 |
+
|
53 |
+
?>
|
54 |
<?php submit_button(); ?>
|
55 |
</form>
|
|
admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php
CHANGED
@@ -1,14 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOIntegrationsTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
public $title = 'Integrations';
|
6 |
public $slug = 'integrations';
|
7 |
public $isHidden = true;
|
8 |
|
9 |
-
public function __construct(){
|
|
|
|
|
10 |
|
11 |
public function page(){
|
12 |
include plugin_dir_path(__FILE__) .'page.php';
|
13 |
}
|
14 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOIntegrationsTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
public $title = 'Integrations';
|
6 |
public $slug = 'integrations';
|
7 |
public $isHidden = true;
|
8 |
|
9 |
+
public function __construct(){
|
10 |
+
$this->title = __('Integrations','shapepress-dsgvo');
|
11 |
+
}
|
12 |
|
13 |
public function page(){
|
14 |
include plugin_dir_path(__FILE__) .'page.php';
|
15 |
}
|
16 |
+
}
|
admin/tabs/integrations/page.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<h1
|
2 |
<hr>
|
3 |
|
4 |
<form method="post" action="<?= SPDSGVOIntegrationsAction::formURL() ?>">
|
@@ -6,12 +6,12 @@
|
|
6 |
|
7 |
<table class="form-table">
|
8 |
<tbody>
|
9 |
-
|
10 |
<?php $integrations = SPDSGVOIntegration::getAllIntegrations(FALSE); ?>
|
11 |
<?php if(count($integrations) === 0): ?>
|
12 |
|
13 |
<tr>
|
14 |
-
<th scope="row"
|
15 |
<td></td>
|
16 |
</tr>
|
17 |
|
1 |
+
<h1><?php _e('Integrations', 'shapepress-dsgvo'); ?></h1>
|
2 |
<hr>
|
3 |
|
4 |
<form method="post" action="<?= SPDSGVOIntegrationsAction::formURL() ?>">
|
6 |
|
7 |
<table class="form-table">
|
8 |
<tbody>
|
9 |
+
|
10 |
<?php $integrations = SPDSGVOIntegration::getAllIntegrations(FALSE); ?>
|
11 |
<?php if(count($integrations) === 0): ?>
|
12 |
|
13 |
<tr>
|
14 |
+
<th scope="row"><?php _e('No integrations installed','shapepress-dsgvo')?></th>
|
15 |
<td></td>
|
16 |
</tr>
|
17 |
|
admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-action.php
CHANGED
@@ -13,6 +13,13 @@ Class SPDSGVOPrivacyPolicyAction extends SPDSGVOAjaxAction{
|
|
13 |
SPDSGVOSettings::set('privacy_policy_page', $this->get('privacy_policy_page', '0'));
|
14 |
}
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
// Update privacy policy
|
17 |
if($this->has('privacy_policy')){
|
18 |
$version = SPDSGVOSettings::get('privacy_policy_version');
|
@@ -24,7 +31,7 @@ Class SPDSGVOPrivacyPolicyAction extends SPDSGVOAjaxAction{
|
|
24 |
SPDSGVOLog::insert("Privacy policy updated by {$this->user->user_email}");
|
25 |
}
|
26 |
|
27 |
-
|
28 |
$this->returnBack();
|
29 |
}
|
30 |
}
|
13 |
SPDSGVOSettings::set('privacy_policy_page', $this->get('privacy_policy_page', '0'));
|
14 |
}
|
15 |
|
16 |
+
|
17 |
+
SPDSGVOSettings::set('woo_show_privacy_checkbox', $this->get('woo_show_privacy_checkbox', '0'));
|
18 |
+
SPDSGVOSettings::set('woo_show_privacy_checkbox_register', $this->get('woo_show_privacy_checkbox_register', '0'));
|
19 |
+
/* i592995 */
|
20 |
+
SPDSGVOSettings::set('woo_privacy_text', $this->get('woo_privacy_text', ''));
|
21 |
+
/* i592995 */
|
22 |
+
|
23 |
// Update privacy policy
|
24 |
if($this->has('privacy_policy')){
|
25 |
$version = SPDSGVOSettings::get('privacy_policy_version');
|
31 |
SPDSGVOLog::insert("Privacy policy updated by {$this->user->user_email}");
|
32 |
}
|
33 |
|
34 |
+
|
35 |
$this->returnBack();
|
36 |
}
|
37 |
}
|
admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php
CHANGED
@@ -1,14 +1,17 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOPrivacyPolicyTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
public $title = 'Privacy Policy';
|
6 |
public $slug = 'privacy-policy';
|
7 |
public $isHidden = TRUE;
|
8 |
|
9 |
-
public function __construct(){
|
|
|
|
|
|
|
10 |
|
11 |
public function page(){
|
12 |
include plugin_dir_path(__FILE__) .'page.php';
|
13 |
}
|
14 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOPrivacyPolicyTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
public $title = 'Privacy Policy';
|
6 |
public $slug = 'privacy-policy';
|
7 |
public $isHidden = TRUE;
|
8 |
|
9 |
+
public function __construct(){
|
10 |
+
|
11 |
+
$this->title = __('Privacy Policy','shapepress-dsgvo');
|
12 |
+
}
|
13 |
|
14 |
public function page(){
|
15 |
include plugin_dir_path(__FILE__) .'page.php';
|
16 |
}
|
17 |
+
}
|
admin/tabs/privacy-policy/page.php
CHANGED
@@ -1,56 +1,84 @@
|
|
1 |
-
<h1
|
2 |
<p>
|
3 |
-
|
4 |
</p>
|
5 |
-
<p
|
6 |
</p>
|
7 |
|
8 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
9 |
<table class="form-table btn-settings-show">
|
10 |
<tbody>
|
11 |
<tr>
|
12 |
-
<th scope="row"
|
13 |
<td>
|
14 |
<?php $privacyPolicyPage = SPDSGVOSettings::get('privacy_policy_page'); ?>
|
15 |
-
<label for="privacy_policy_page"
|
16 |
<select name="privacy_policy_page" id="privacy_policy_page">
|
17 |
-
<option value="0"
|
18 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
19 |
<option <?= selected($privacyPolicyPage == $page->ID) ?> value="<?= $page->ID ?>">
|
20 |
<?= $page->post_title ?>
|
21 |
</option>
|
22 |
<?php endforeach; ?>
|
23 |
</select>
|
24 |
-
</label>
|
25 |
|
26 |
<?php if($privacyPolicyPage == '0'): ?>
|
27 |
-
<p
|
28 |
<?php elseif(!pageContainsString($privacyPolicyPage, 'privacy_policy')): ?>
|
29 |
-
<p
|
30 |
<?php else: ?>
|
31 |
-
<a href="<?= get_edit_post_link($privacyPolicyPage) ?>"
|
32 |
<?php endif; ?>
|
33 |
</td>
|
34 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
</tbody>
|
36 |
</table>
|
37 |
<hr class="sp-dsgvo">
|
38 |
-
|
|
|
|
|
|
|
39 |
|
40 |
<input type="hidden" name="action" value="privacy-policy">
|
41 |
-
|
42 |
<br>
|
43 |
-
<?php
|
44 |
$pageContent = SPDSGVOSettings::get('privacy_policy');
|
45 |
if ($pageContent == NULL || strlen($pageContent) < 10)
|
46 |
{
|
47 |
-
$pageContent = file_get_contents(SPDSGVO::pluginDir('privacy-policy.txt'));
|
|
|
48 |
//$pageContent = mb_convert_encoding($pageContent, 'HTML-ENTITIES', "UTF-8");
|
49 |
}
|
50 |
-
|
51 |
-
wp_editor($pageContent, 'privacy_policy', array('textarea_rows'=> '20'));
|
52 |
?>
|
53 |
<?php submit_button(); ?>
|
54 |
-
|
55 |
-
</form>
|
56 |
|
|
1 |
+
<h1><?php _e('Privacy policy','shapepress-dsgvo')?></h1>
|
2 |
<p>
|
3 |
+
<?php _e('The shortcode <code>[privacy_policy]</code> generates a privacy page from the input made under General Settings.','shapepress-dsgvo')?>
|
4 |
</p>
|
5 |
+
<p><?php _e('Initially, this text is filled with a template. The text blocks in the square brackets ([]) are filled with the values that you entered in the General Settings. You can customize the entire text to your requirements, as well as delete passages if they do not apply to them.','shapepress-dsgvo')?>
|
6 |
</p>
|
7 |
|
8 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
9 |
<table class="form-table btn-settings-show">
|
10 |
<tbody>
|
11 |
<tr>
|
12 |
+
<th scope="row"><?php _e('Privacy policy page','shapepress-dsgvo')?></th>
|
13 |
<td>
|
14 |
<?php $privacyPolicyPage = SPDSGVOSettings::get('privacy_policy_page'); ?>
|
15 |
+
<label for="privacy_policy_page"><?php _e('Page', 'shapepress-dsgvo'); ?>:
|
16 |
<select name="privacy_policy_page" id="privacy_policy_page">
|
17 |
+
<option value="0"><?php _e('Select', 'shapepress-dsgvo'); ?></option>
|
18 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
19 |
<option <?= selected($privacyPolicyPage == $page->ID) ?> value="<?= $page->ID ?>">
|
20 |
<?= $page->post_title ?>
|
21 |
</option>
|
22 |
<?php endforeach; ?>
|
23 |
</select>
|
24 |
+
</label>
|
25 |
|
26 |
<?php if($privacyPolicyPage == '0'): ?>
|
27 |
+
<p><?php _e('Create a page that uses the shortcode <code>[privacy_policy]</code>.','shapepress-dsgvo')?> <a class="button button-default" href="<?= SPDSGVOCreatePageAction::url(array('privacy_policy_page' => '1')) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a></p>
|
28 |
<?php elseif(!pageContainsString($privacyPolicyPage, 'privacy_policy')): ?>
|
29 |
+
<p><?php _e('Attention: The shortcode <code>[privacy_policy]</code> was not found on the page you selected.','shapepress-dsgvo')?> <a href="<?= get_edit_post_link($privacyPolicyPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a></p>
|
30 |
<?php else: ?>
|
31 |
+
<a href="<?= get_edit_post_link($privacyPolicyPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
32 |
<?php endif; ?>
|
33 |
</td>
|
34 |
</tr>
|
35 |
+
<?php if (isValidPremiumEdition()) : ?>
|
36 |
+
<tr>
|
37 |
+
<th scope="row"><?php _e('Show checkbox at WooCommerce checkout to confirm privacy policy','shapepress-dsgvo')?></th>
|
38 |
+
<td><label for="woo_show_privacy_checkbox"> <input
|
39 |
+
name="woo_show_privacy_checkbox" type="checkbox"
|
40 |
+
id="woo_show_privacy_checkbox" value="1"
|
41 |
+
<?= (SPDSGVOSettings::get('woo_show_privacy_checkbox') === '1')? ' checked ' : ''; ?>>
|
42 |
+
</label></td>
|
43 |
+
</tr>
|
44 |
+
|
45 |
+
<!-- i592995 -->
|
46 |
+
<tr>
|
47 |
+
<?php
|
48 |
+
$privacy_text = SPDSGVOSettings::get('woo_privacy_text', '');
|
49 |
+
if($privacy_text == '') {
|
50 |
+
$privacy_text = __('I have read and accepted the Privacy Policy.','shapepress-dsgvo');
|
51 |
+
}
|
52 |
+
?>
|
53 |
+
<th scope="row"><?php _e('WooCommerce privacy policy text','shapepress-dsgvo')?></th>
|
54 |
+
<td><label for="woo_privacy_text">
|
55 |
+
<input type="text" name="woo_privacy_text" id="woo_privacy_text" class="woo-privacy-text" value="<?php echo $privacy_text; ?>" />
|
56 |
+
</label></td>
|
57 |
+
</tr>
|
58 |
+
<!-- i592995 -->
|
59 |
+
<?php endif; ?>
|
60 |
</tbody>
|
61 |
</table>
|
62 |
<hr class="sp-dsgvo">
|
63 |
+
<br>
|
64 |
+
<span class="info-text" style="margin-bottom: 20px;"><?php _e('Note: In order to be able to reset or reload the text (eg: after changing the language), highlight the text, delete it and click save. Thus, the text is reloaded.','shapepress-dsgvo')?></span>
|
65 |
+
<div style="clear: both"></div>
|
66 |
+
<br>
|
67 |
|
68 |
<input type="hidden" name="action" value="privacy-policy">
|
69 |
+
|
70 |
<br>
|
71 |
+
<?php
|
72 |
$pageContent = SPDSGVOSettings::get('privacy_policy');
|
73 |
if ($pageContent == NULL || strlen($pageContent) < 10)
|
74 |
{
|
75 |
+
$pageContent = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/privacy-policy.txt'));
|
76 |
+
|
77 |
//$pageContent = mb_convert_encoding($pageContent, 'HTML-ENTITIES', "UTF-8");
|
78 |
}
|
79 |
+
|
80 |
+
wp_editor($pageContent, 'privacy_policy', array('textarea_rows'=> '20'));
|
81 |
?>
|
82 |
<?php submit_button(); ?>
|
|
|
|
|
83 |
|
84 |
+
</form>
|
admin/tabs/services/class-sp-dsgvo-add-service-action.php
CHANGED
@@ -8,15 +8,16 @@ Class SPDSGVOAddServiceAction extends SPDSGVOAjaxAction{
|
|
8 |
$this->requireAdmin();
|
9 |
|
10 |
if(!empty($this->get('new_name')) && !empty($this->get('new_reason'))){
|
11 |
-
|
12 |
// Make Slug
|
13 |
$slug = $slug_ = SPDSGVO::slugify($this->get('new_name'));
|
14 |
-
$tries = 0;
|
15 |
while(in_array($slug, array_keys($meta))){
|
16 |
$tries++;
|
17 |
$slug = ($slug_ .'-'. $tries);
|
18 |
}
|
19 |
|
|
|
20 |
// Append new service to services
|
21 |
$meta = SPDSGVOSettings::get('services');
|
22 |
if(!is_array($meta)){ $meta = array(); }
|
@@ -26,7 +27,9 @@ Class SPDSGVOAddServiceAction extends SPDSGVOAjaxAction{
|
|
26 |
'reason' => $this->get('new_reason'),
|
27 |
'link' => $this->get('new_link'),
|
28 |
'default' => $this->get('new_default'),
|
|
|
29 |
);
|
|
|
30 |
SPDSGVOSettings::set('services', $meta);
|
31 |
}
|
32 |
|
@@ -34,4 +37,4 @@ Class SPDSGVOAddServiceAction extends SPDSGVOAjaxAction{
|
|
34 |
}
|
35 |
}
|
36 |
|
37 |
-
SPDSGVOAddServiceAction::listen();
|
8 |
$this->requireAdmin();
|
9 |
|
10 |
if(!empty($this->get('new_name')) && !empty($this->get('new_reason'))){
|
11 |
+
|
12 |
// Make Slug
|
13 |
$slug = $slug_ = SPDSGVO::slugify($this->get('new_name'));
|
14 |
+
$tries = 0;
|
15 |
while(in_array($slug, array_keys($meta))){
|
16 |
$tries++;
|
17 |
$slug = ($slug_ .'-'. $tries);
|
18 |
}
|
19 |
|
20 |
+
/* i592995 */
|
21 |
// Append new service to services
|
22 |
$meta = SPDSGVOSettings::get('services');
|
23 |
if(!is_array($meta)){ $meta = array(); }
|
27 |
'reason' => $this->get('new_reason'),
|
28 |
'link' => $this->get('new_link'),
|
29 |
'default' => $this->get('new_default'),
|
30 |
+
'image' => $this->get('new_image')
|
31 |
);
|
32 |
+
/* i592995 */
|
33 |
SPDSGVOSettings::set('services', $meta);
|
34 |
}
|
35 |
|
37 |
}
|
38 |
}
|
39 |
|
40 |
+
SPDSGVOAddServiceAction::listen();
|
admin/tabs/services/class-sp-dsgvo-delete-service-action.php
CHANGED
@@ -6,8 +6,8 @@ Class SPDSGVODeleteServiceAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
-
|
10 |
-
|
11 |
$services = SPDSGVOSettings::get('services');
|
12 |
|
13 |
if(is_array($services)){
|
@@ -19,11 +19,11 @@ Class SPDSGVODeleteServiceAction extends SPDSGVOAjaxAction{
|
|
19 |
}
|
20 |
|
21 |
SPDSGVOSettings::set('services', $meta);
|
22 |
-
SPDSGVOLog::insert(
|
23 |
}
|
24 |
|
25 |
$this->returnBack();
|
26 |
}
|
27 |
}
|
28 |
|
29 |
-
SPDSGVODeleteServiceAction::listen();
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
+
|
10 |
+
|
11 |
$services = SPDSGVOSettings::get('services');
|
12 |
|
13 |
if(is_array($services)){
|
19 |
}
|
20 |
|
21 |
SPDSGVOSettings::set('services', $meta);
|
22 |
+
SPDSGVOLog::insert(__('Third-party service deleted by', 'shapepress-dsgvo') . " {$this->user->user_email}");
|
23 |
}
|
24 |
|
25 |
$this->returnBack();
|
26 |
}
|
27 |
}
|
28 |
|
29 |
+
SPDSGVODeleteServiceAction::listen();
|
admin/tabs/services/class-sp-dsgvo-services-action.php
CHANGED
@@ -6,7 +6,7 @@ Class SPDSGVOServicesAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
-
|
10 |
|
11 |
// User permissons page
|
12 |
if($this->has('user_permissions_page')){
|
@@ -18,15 +18,18 @@ Class SPDSGVOServicesAction extends SPDSGVOAjaxAction{
|
|
18 |
$services = $this->get('services', NULL, FALSE);
|
19 |
$meta = array();
|
20 |
if(is_array($services)){
|
|
|
21 |
foreach($services as $key => $service){
|
22 |
$meta[$service['slug']] = array(
|
23 |
'slug' => stripslashes($service['slug']),
|
24 |
'name' => stripslashes($service['name']),
|
25 |
'reason' => stripslashes($service['reason']),
|
26 |
'link' => stripslashes($service['link']),
|
|
|
27 |
'default' => stripslashes($service['default']),
|
28 |
);
|
29 |
}
|
|
|
30 |
}
|
31 |
|
32 |
SPDSGVOSettings::set('services', $meta);
|
@@ -37,4 +40,4 @@ Class SPDSGVOServicesAction extends SPDSGVOAjaxAction{
|
|
37 |
}
|
38 |
}
|
39 |
|
40 |
-
SPDSGVOServicesAction::listen();
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
+
|
10 |
|
11 |
// User permissons page
|
12 |
if($this->has('user_permissions_page')){
|
18 |
$services = $this->get('services', NULL, FALSE);
|
19 |
$meta = array();
|
20 |
if(is_array($services)){
|
21 |
+
/* i592995 */
|
22 |
foreach($services as $key => $service){
|
23 |
$meta[$service['slug']] = array(
|
24 |
'slug' => stripslashes($service['slug']),
|
25 |
'name' => stripslashes($service['name']),
|
26 |
'reason' => stripslashes($service['reason']),
|
27 |
'link' => stripslashes($service['link']),
|
28 |
+
'image' => stripslashes($service['image']),
|
29 |
'default' => stripslashes($service['default']),
|
30 |
);
|
31 |
}
|
32 |
+
/* i592995 */
|
33 |
}
|
34 |
|
35 |
SPDSGVOSettings::set('services', $meta);
|
40 |
}
|
41 |
}
|
42 |
|
43 |
+
SPDSGVOServicesAction::listen();
|
admin/tabs/services/class-sp-dsgvo-services-tab.php
CHANGED
@@ -1,13 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOServicesTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
-
public $title = '
|
6 |
public $slug = 'services';
|
7 |
|
8 |
-
public function __construct(){
|
9 |
-
|
|
|
|
|
|
|
10 |
public function page(){
|
11 |
include plugin_dir_path(__FILE__) .'page.php';
|
12 |
}
|
13 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOServicesTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
+
public $title = 'Privacy policy & Plugins';
|
6 |
public $slug = 'services';
|
7 |
|
8 |
+
public function __construct(){
|
9 |
+
|
10 |
+
$this->title = __('Privacy policy & Plugins','shapepress-dsgvo');
|
11 |
+
}
|
12 |
+
|
13 |
public function page(){
|
14 |
include plugin_dir_path(__FILE__) .'page.php';
|
15 |
}
|
16 |
+
}
|
admin/tabs/services/page.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
-
<h1
|
2 |
-
<p
|
3 |
-
<p
|
4 |
|
5 |
|
6 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
@@ -9,14 +9,14 @@
|
|
9 |
<table class="form-table btn-settings-show" >
|
10 |
<tbody>
|
11 |
<tr>
|
12 |
-
<th scope="row"
|
13 |
<td>
|
14 |
|
15 |
<ul>
|
16 |
<li>
|
17 |
-
<label for="user_permissions_page"
|
18 |
<select name="user_permissions_page" id="user_permissions_page">
|
19 |
-
<option value="0"
|
20 |
|
21 |
<?php $userPermissionsPage = SPDSGVOSettings::get('user_permissions_page'); ?>
|
22 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
@@ -26,21 +26,23 @@
|
|
26 |
<?php endforeach; ?>
|
27 |
</select>
|
28 |
</label>
|
29 |
-
<span class="info-text"
|
30 |
</li>
|
31 |
</ul>
|
32 |
-
|
33 |
<?php if($userPermissionsPage == '0'): ?>
|
34 |
<p>
|
35 |
-
|
36 |
<a class="button button-default"
|
37 |
-
href="<?= SPDSGVOCreatePageAction::url(array('user_privacy_settings_page' => '1')) ?>"
|
38 |
</p>
|
39 |
-
|
40 |
<?php elseif($userPermissionsPage != '0' && strpos(get_post($userPermissionsPage)->post_content, 'user_privacy_settings_form') === FALSE): ?>
|
41 |
-
<p
|
42 |
<?php else: ?>
|
43 |
-
|
|
|
|
|
44 |
<?php endif; ?>
|
45 |
</td>
|
46 |
</tr>
|
@@ -49,16 +51,17 @@
|
|
49 |
<hr class="sp-dsgvo">
|
50 |
|
51 |
|
52 |
-
|
53 |
<table class="widefat fixed" cellspacing="0">
|
54 |
<thead>
|
55 |
<tr>
|
56 |
-
<th id="slug" class="manage-column column-slug" scope="col" style="width:12%"
|
57 |
-
<th id="name" class="manage-column column-name" scope="col"
|
58 |
-
<th id="reason" class="manage-column column-reason" scope="col"
|
59 |
-
<th id="reason" class="manage-column column-link" scope="col"
|
60 |
-
<th id="default" class="manage-column column-default" scope="col" style="width:10%"
|
61 |
-
<th id="
|
|
|
62 |
</tr>
|
63 |
</thead>
|
64 |
|
@@ -79,79 +82,113 @@
|
|
79 |
</td>
|
80 |
|
81 |
<td class="column-link">
|
82 |
-
<input type="text" class="aio-transparent" placeholder="Terms & Conditions link" name="services[<?= $slug ?>][link]" value="<?= $service['link'] ?>">
|
83 |
</td>
|
84 |
<td class="column-default">
|
85 |
<select name="services[<?= $slug ?>][default]">
|
86 |
-
<option <?= ($service['default'] == '1')? ' selected ' : '' ?> value="1"
|
87 |
-
<option <?= ($service['default'] == '0')? ' selected ' : '' ?> value="0"
|
88 |
</select>
|
89 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
<td class="column-reason">
|
91 |
-
<a href="<?= SPDSGVODeleteServiceAction::url(['slug' => $slug]) ?>"
|
92 |
</td>
|
93 |
</tr>
|
94 |
-
|
95 |
<?php $i++; ?>
|
96 |
<?php endforeach; ?>
|
97 |
</tbody>
|
98 |
|
99 |
<tfoot>
|
100 |
<tr>
|
101 |
-
<th class="manage-column column-slug" scope="col"
|
102 |
-
<th class="manage-column column-name" scope="col"
|
103 |
-
<th class="manage-column column-reason" scope="col"
|
104 |
-
<th class="manage-column column-link" scope="col"
|
105 |
-
<th class="manage-column column-default" scope="col"
|
106 |
-
<th class="manage-column column-delete" scope="col"
|
107 |
</tr>
|
108 |
</tfoot>
|
109 |
</table>
|
110 |
-
|
111 |
<?php submit_button(); ?>
|
112 |
</form>
|
113 |
|
114 |
|
115 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
116 |
<input type="hidden" name="action" value="admin-add-service">
|
117 |
-
<br><br>
|
118 |
|
119 |
-
<h3
|
120 |
<table class="form-table">
|
121 |
<tbody>
|
122 |
<tr>
|
123 |
-
<th scope="row"><label for="new_name"
|
124 |
<td>
|
125 |
<input name="new_name" type="text" id="new_name" value="" class="regular-text ltr">
|
126 |
-
<p class="description"
|
127 |
</td>
|
128 |
</tr>
|
129 |
<tr>
|
130 |
-
<th scope="row"><label for="new_reason"
|
131 |
<td>
|
132 |
<input name="new_reason" type="text" id="new_reason" value="" class="regular-text ltr">
|
133 |
-
<p class="description"
|
134 |
</td>
|
135 |
</tr>
|
136 |
<tr>
|
137 |
-
<th scope="row"><label for="new_link"
|
138 |
<td>
|
139 |
<input name="new_link" type="text" id="new_link" value="" class="regular-text ltr">
|
140 |
-
<p class="description"
|
141 |
</td>
|
142 |
</tr>
|
143 |
<tr>
|
144 |
-
<th scope="row"><label for="new_default"
|
145 |
<td>
|
146 |
<select name="new_default">
|
147 |
-
<option value="1"
|
148 |
-
<option value="0"
|
149 |
</select>
|
150 |
-
<p class="description"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
</td>
|
152 |
</tr>
|
|
|
153 |
</tbody>
|
154 |
</table>
|
155 |
|
156 |
-
<?php submit_button('
|
157 |
-
</form>
|
1 |
+
<h1><?php _e('Privacy: Settings and 3rd party plugins','shapepress-dsgvo')?></h1>
|
2 |
+
<p><?php _e('All 3rd Party Plugins (Google Analytics, Facebook Pixel, ..) can be listed here to give their users a selective opt-in / opt-out.','shapepress-dsgvo')?></p>
|
3 |
+
<p><?php _e('With the shortcode <code>[display_services]</code> these services can then be displayed to the user.','shapepress-dsgvo')?></p>
|
4 |
|
5 |
|
6 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
9 |
<table class="form-table btn-settings-show" >
|
10 |
<tbody>
|
11 |
<tr>
|
12 |
+
<th scope="row"><?php _e('Datenschutz Seite für ihre Benutzer','shapepress-dsgvo')?></th>
|
13 |
<td>
|
14 |
|
15 |
<ul>
|
16 |
<li>
|
17 |
+
<label for="user_permissions_page"><?php _e('Page','shapepress-dsgvo')?>
|
18 |
<select name="user_permissions_page" id="user_permissions_page">
|
19 |
+
<option value="0"><?php _e('Select','shapepress-dsgvo')?></option>
|
20 |
|
21 |
<?php $userPermissionsPage = SPDSGVOSettings::get('user_permissions_page'); ?>
|
22 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
26 |
<?php endforeach; ?>
|
27 |
</select>
|
28 |
</label>
|
29 |
+
<span class="info-text"><?php _e('Specifies the page where users have the option to customize their privacy settings (selective opt-in / opt-out).','shapepress-dsgvo')?></span>
|
30 |
</li>
|
31 |
</ul>
|
32 |
+
|
33 |
<?php if($userPermissionsPage == '0'): ?>
|
34 |
<p>
|
35 |
+
<?php _e('Create a page that uses the shortcode <code>[user_privacy_settings_form]</code>.','shapepress-dsgvo')?>
|
36 |
<a class="button button-default"
|
37 |
+
href="<?= SPDSGVOCreatePageAction::url(array('user_privacy_settings_page' => '1')) ?>"><?php _e('Create page','shapepress-dsgvo')?></a>
|
38 |
</p>
|
39 |
+
|
40 |
<?php elseif($userPermissionsPage != '0' && strpos(get_post($userPermissionsPage)->post_content, 'user_privacy_settings_form') === FALSE): ?>
|
41 |
+
<p><?php _e('Attention: The shortcode <code>[user_privacy_settings_form]</code> was not found on the selected page. The form will not be displayed.','shapepress-dsgvo')?> <a href="<?= get_edit_post_link($userPermissionsPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a></p>
|
42 |
<?php else: ?>
|
43 |
+
<a href="<?= get_edit_post_link($userPermissionsPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a> <br/>
|
44 |
+
<?php _e('The shortcode <code>[user_privacy_settings_form]</code> allows the user to activate or deactivate services on the selected page.','shapepress-dsgvo')?>
|
45 |
+
|
46 |
<?php endif; ?>
|
47 |
</td>
|
48 |
</tr>
|
51 |
<hr class="sp-dsgvo">
|
52 |
|
53 |
|
54 |
+
|
55 |
<table class="widefat fixed" cellspacing="0">
|
56 |
<thead>
|
57 |
<tr>
|
58 |
+
<th id="slug" class="manage-column column-slug" scope="col" style="width:12%"><?php _e('Slug','shapepress-dsgvo')?></th>
|
59 |
+
<th id="name" class="manage-column column-name" scope="col"><?php _e('Name','shapepress-dsgvo')?></th>
|
60 |
+
<th id="reason" class="manage-column column-reason" scope="col"><?php _e('Reason','shapepress-dsgvo')?></th>
|
61 |
+
<th id="reason" class="manage-column column-link" scope="col"><?php _e('Terms Url','shapepress-dsgvo')?></th>
|
62 |
+
<th id="default" class="manage-column column-default" scope="col" style="width:10%"><?php _e('Default','shapepress-dsgvo')?></th>
|
63 |
+
<th id="image" class="manage-column column-image" scope="col" style="width:10%"><?php _e('Image','shapepress-dsgvo')?></th>
|
64 |
+
<th id="delete" class="manage-column column-delete" scope="col" style="width:10%"><?php _e('Delete','shapepress-dsgvo')?></th>
|
65 |
</tr>
|
66 |
</thead>
|
67 |
|
82 |
</td>
|
83 |
|
84 |
<td class="column-link">
|
85 |
+
<input type="text" class="aio-transparent" placeholder="<?php _e('Terms & Conditions link', 'shapepress-dsgvo'); ?>" name="services[<?= $slug ?>][link]" value="<?= $service['link'] ?>">
|
86 |
</td>
|
87 |
<td class="column-default">
|
88 |
<select name="services[<?= $slug ?>][default]">
|
89 |
+
<option <?= ($service['default'] == '1')? ' selected ' : '' ?> value="1"><?php _e('Enabled','shapepress-dsgvo')?></option>
|
90 |
+
<option <?= ($service['default'] == '0')? ' selected ' : '' ?> value="0"><?php _e('Disabled','shapepress-dsgvo')?></option>
|
91 |
</select>
|
92 |
</td>
|
93 |
+
<!-- i592995 -->
|
94 |
+
<td class="column-image">
|
95 |
+
<?php
|
96 |
+
$src = '';
|
97 |
+
$img_id = '';
|
98 |
+
if(isset($service['image'])) {
|
99 |
+
$img_id = $service['image'];
|
100 |
+
$src = wp_get_attachment_url(intval($img_id));
|
101 |
+
}
|
102 |
+
?>
|
103 |
+
|
104 |
+
<div class="dsgvo-image-upload">
|
105 |
+
<div class='image-preview-wrapper'>
|
106 |
+
<img id='<?= $slug ?>_image-preview' class="image-preview" src='<?php echo $src; ?>' style="width: 100%">
|
107 |
+
</div>
|
108 |
+
<input id="<?= $slug ?>_upload_image_button" type="button" class="button" value="<?php _e( 'Upload image', 'shapepress-dsgvo' ); ?>" />
|
109 |
+
<input type='hidden' class="image-id" name='services[<?= $slug ?>][image]' id='<?= $slug ?>_image_id' value='<?php echo $img_id; ?>'>
|
110 |
+
</div><!-- .dsgvo-image-upload -->
|
111 |
+
</td>
|
112 |
+
<!-- i592995 -->
|
113 |
<td class="column-reason">
|
114 |
+
<a href="<?= SPDSGVODeleteServiceAction::url(['slug' => $slug]) ?>"><?php _e('Delete','shapepress-dsgvo')?></a>
|
115 |
</td>
|
116 |
</tr>
|
117 |
+
|
118 |
<?php $i++; ?>
|
119 |
<?php endforeach; ?>
|
120 |
</tbody>
|
121 |
|
122 |
<tfoot>
|
123 |
<tr>
|
124 |
+
<th class="manage-column column-slug" scope="col"><?php _e('Slug','shapepress-dsgvo')?></th>
|
125 |
+
<th class="manage-column column-name" scope="col"><?php _e('Name','shapepress-dsgvo')?></th>
|
126 |
+
<th class="manage-column column-reason" scope="col"><?php _e('Reason','shapepress-dsgvo')?></th>
|
127 |
+
<th class="manage-column column-link" scope="col"><?php _e('Terms Url','shapepress-dsgvo')?></th>
|
128 |
+
<th class="manage-column column-default" scope="col"><?php _e('Default','shapepress-dsgvo')?></th>
|
129 |
+
<th class="manage-column column-delete" scope="col"><?php _e('Delete','shapepress-dsgvo')?></th>
|
130 |
</tr>
|
131 |
</tfoot>
|
132 |
</table>
|
133 |
+
|
134 |
<?php submit_button(); ?>
|
135 |
</form>
|
136 |
|
137 |
|
138 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
139 |
<input type="hidden" name="action" value="admin-add-service">
|
140 |
+
<br><br>
|
141 |
|
142 |
+
<h3><?php _e('Add service','shapepress-dsgvo')?></h3>
|
143 |
<table class="form-table">
|
144 |
<tbody>
|
145 |
<tr>
|
146 |
+
<th scope="row"><label for="new_name"><?php _e('Name','shapepress-dsgvo')?></label></th>
|
147 |
<td>
|
148 |
<input name="new_name" type="text" id="new_name" value="" class="regular-text ltr">
|
149 |
+
<p class="description" ><?php _e('Service name','shapepress-dsgvo')?></p>
|
150 |
</td>
|
151 |
</tr>
|
152 |
<tr>
|
153 |
+
<th scope="row"><label for="new_reason"><?php _e('Reason','shapepress-dsgvo')?></label></th>
|
154 |
<td>
|
155 |
<input name="new_reason" type="text" id="new_reason" value="" class="regular-text ltr">
|
156 |
+
<p class="description"><?php _e('Reason for use','shapepress-dsgvo')?></p>
|
157 |
</td>
|
158 |
</tr>
|
159 |
<tr>
|
160 |
+
<th scope="row"><label for="new_link"><?php _e('Terms Url','shapepress-dsgvo')?></label></th>
|
161 |
<td>
|
162 |
<input name="new_link" type="text" id="new_link" value="" class="regular-text ltr">
|
163 |
+
<p class="description"><?php _e('The URL pointing to the terms of the service','shapepress-dsgvo')?></p>
|
164 |
</td>
|
165 |
</tr>
|
166 |
<tr>
|
167 |
+
<th scope="row"><label for="new_default"><?php _e('Default','shapepress-dsgvo')?></label></th>
|
168 |
<td>
|
169 |
<select name="new_default">
|
170 |
+
<option value="1"><?php _e('Enabled','shapepress-dsgvo')?></option>
|
171 |
+
<option value="0"><?php _e('Disabled','shapepress-dsgvo')?></option>
|
172 |
</select>
|
173 |
+
<p class="description"><?php _e('Indicates whether the service should be enabled by default or not.','shapepress-dsgvo')?></p>
|
174 |
+
</td>
|
175 |
+
</tr>
|
176 |
+
<!-- i592995 -->
|
177 |
+
<tr>
|
178 |
+
<th scope="row"><label for="new_image"><?php _e('Image','shapepress-dsgvo')?></label></th>
|
179 |
+
<td>
|
180 |
+
<div class="dsgvo-image-upload">
|
181 |
+
<div class='image-preview-wrapper'>
|
182 |
+
<img id='image-preview-new' class="image-preview" src='' style="width: 200px">
|
183 |
+
</div>
|
184 |
+
<input id="upload_image_button_new" type="button" class="button" value="<?php _e( 'Upload image', 'shapepress-dsgvo' ); ?>" />
|
185 |
+
<input type='hidden' class="image-id" name='new_image' id='new_image' value=''>
|
186 |
+
</div><!-- .dsgvo-image-upload -->
|
187 |
</td>
|
188 |
</tr>
|
189 |
+
<!-- i592995 -->
|
190 |
</tbody>
|
191 |
</table>
|
192 |
|
193 |
+
<?php submit_button(__('Add service','shapepress-dsgvo')); ?>
|
194 |
+
</form>
|
admin/tabs/setup/class-sp-dsgvo-create-page-action.php
CHANGED
@@ -15,7 +15,7 @@ Class SPDSGVOCreatePageAction extends SPDSGVOAjaxAction{
|
|
15 |
}
|
16 |
|
17 |
SPDSGVOLog::migrate();
|
18 |
-
SPDSGVOLog::insert('Plugin installed');
|
19 |
}
|
20 |
}
|
21 |
|
@@ -33,47 +33,47 @@ Class SPDSGVOCreatePageAction extends SPDSGVOAjaxAction{
|
|
33 |
}
|
34 |
|
35 |
if($this->has('sar')){
|
36 |
-
$ID = $this->createPage('
|
37 |
SPDSGVOSettings::set('sar_page', $ID);
|
38 |
}
|
39 |
|
40 |
if($this->has('user_privacy_settings_page')){
|
41 |
-
$ID = $this->createPage('
|
42 |
SPDSGVOSettings::set('user_permissions_page', $ID);
|
43 |
}
|
44 |
|
45 |
if($this->has('terms_conditions_page')){
|
46 |
-
$ID = $this->createPage('Terms & Conditions', '[terms_conditions]');
|
47 |
SPDSGVOSettings::set('terms_conditions_page', $ID);
|
48 |
}
|
49 |
|
50 |
if($this->has('privacy_policy_page')){
|
51 |
-
$ID = $this->createPage('
|
52 |
SPDSGVOSettings::set('privacy_policy_page', $ID);
|
53 |
}
|
54 |
|
55 |
if($this->has('super_unsubscribe_page')){
|
56 |
-
$ID = $this->createPage('
|
57 |
SPDSGVOSettings::set('super_unsubscribe_page', $ID);
|
58 |
}
|
59 |
|
60 |
if($this->has('imprint_page')){
|
61 |
-
$ID = $this->createPage('
|
62 |
SPDSGVOSettings::set('imprint_page', $ID);
|
63 |
}
|
64 |
|
65 |
// Other Pages
|
66 |
if($this->has('explicit_permission_page')){
|
67 |
-
$ID = $this->createPage('Terms & Conditions
|
68 |
SPDSGVOSettings::set('explicit_permission_page', $ID);
|
69 |
}
|
70 |
-
|
71 |
if($this->has('opt_out_page')){
|
72 |
-
$ID = $this->createPage('Opt-out', '[decline_permission]');
|
73 |
SPDSGVOSettings::set('opt_out_page', $ID);
|
74 |
}
|
75 |
|
76 |
-
|
77 |
// Show Set Up
|
78 |
if($this->has('show_setup')){
|
79 |
SPDSGVOSettings::set('show_setup', '1');
|
@@ -95,5 +95,3 @@ Class SPDSGVOCreatePageAction extends SPDSGVOAjaxAction{
|
|
95 |
}
|
96 |
|
97 |
SPDSGVOCreatePageAction::listen();
|
98 |
-
|
99 |
-
|
15 |
}
|
16 |
|
17 |
SPDSGVOLog::migrate();
|
18 |
+
SPDSGVOLog::insert(__('Plugin installed', 'shapepress-dsgvo'));
|
19 |
}
|
20 |
}
|
21 |
|
33 |
}
|
34 |
|
35 |
if($this->has('sar')){
|
36 |
+
$ID = $this->createPage(__('Subject Access Request','shapepress-dsgvo'), '[sar_form]');
|
37 |
SPDSGVOSettings::set('sar_page', $ID);
|
38 |
}
|
39 |
|
40 |
if($this->has('user_privacy_settings_page')){
|
41 |
+
$ID = $this->createPage(__('User privacy settings','shapepress-dsgvo'), '[user_privacy_settings_form]');
|
42 |
SPDSGVOSettings::set('user_permissions_page', $ID);
|
43 |
}
|
44 |
|
45 |
if($this->has('terms_conditions_page')){
|
46 |
+
$ID = $this->createPage(__('Terms & Conditions', 'shapepress-dsgvo'), '[terms_conditions]');
|
47 |
SPDSGVOSettings::set('terms_conditions_page', $ID);
|
48 |
}
|
49 |
|
50 |
if($this->has('privacy_policy_page')){
|
51 |
+
$ID = $this->createPage(__('Privacy Policy','shapepress-dsgvo'), '[privacy_policy]');
|
52 |
SPDSGVOSettings::set('privacy_policy_page', $ID);
|
53 |
}
|
54 |
|
55 |
if($this->has('super_unsubscribe_page')){
|
56 |
+
$ID = $this->createPage(__('Delete Request','shapepress-dsgvo'), '[unsubscribe_form]');
|
57 |
SPDSGVOSettings::set('super_unsubscribe_page', $ID);
|
58 |
}
|
59 |
|
60 |
if($this->has('imprint_page')){
|
61 |
+
$ID = $this->createPage(__('Imprint','shapepress-dsgvo'), '[imprint]');
|
62 |
SPDSGVOSettings::set('imprint_page', $ID);
|
63 |
}
|
64 |
|
65 |
// Other Pages
|
66 |
if($this->has('explicit_permission_page')){
|
67 |
+
$ID = $this->createPage(__('Terms & Conditions', 'shapepress-dsgvo'), '[explicit_permission]');
|
68 |
SPDSGVOSettings::set('explicit_permission_page', $ID);
|
69 |
}
|
70 |
+
|
71 |
if($this->has('opt_out_page')){
|
72 |
+
$ID = $this->createPage(__('Opt-out', 'shapepress-dsgvo'), '[decline_permission]');
|
73 |
SPDSGVOSettings::set('opt_out_page', $ID);
|
74 |
}
|
75 |
|
76 |
+
|
77 |
// Show Set Up
|
78 |
if($this->has('show_setup')){
|
79 |
SPDSGVOSettings::set('show_setup', '1');
|
95 |
}
|
96 |
|
97 |
SPDSGVOCreatePageAction::listen();
|
|
|
|
admin/tabs/setup/class-sp-dsgvo-setup-tab.php
CHANGED
@@ -1,13 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSetupTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
public $title = 'Setup';
|
6 |
public $slug = 'setup';
|
7 |
|
8 |
-
public function __construct(){
|
|
|
|
|
9 |
|
10 |
-
public function page(){
|
11 |
include plugin_dir_path(__FILE__) .'page.php';
|
12 |
}
|
13 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSetupTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
public $title = 'Setup';
|
6 |
public $slug = 'setup';
|
7 |
|
8 |
+
public function __construct(){
|
9 |
+
$this->title = __('Setup','shapepress-dsgvo');
|
10 |
+
}
|
11 |
|
12 |
+
public function page(){
|
13 |
include plugin_dir_path(__FILE__) .'page.php';
|
14 |
}
|
15 |
+
}
|
admin/tabs/setup/page.php
CHANGED
@@ -1,103 +1,8 @@
|
|
1 |
-
<h1
|
2 |
-
<p>Welcome to All-in-One GDPR, a GDPR toolkit for WordPress that makes it even easier to comply with the GDPR.</p>
|
3 |
-
<hr>
|
4 |
|
5 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
6 |
-
<input type="hidden" name="action" value="<?= SPDSGVOCreatePageAction::getActionName(); ?>">
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
<tr>
|
11 |
-
<th scope="row">License Key</th>
|
12 |
-
<td>
|
13 |
-
<fieldset>
|
14 |
-
<legend class="screen-reader-text">
|
15 |
-
<span>License Key</span>
|
16 |
-
</legend>
|
17 |
-
|
18 |
-
<label for="license_key">
|
19 |
-
<input name="license_key" type="text" id="license_key" required value="<?php echo SPDSGVOSettings::get('license_key');?>" />
|
20 |
-
<p class="description" id="admin-email-description">If you need a license key you can buy one <a href="https://gdprplug.in">here</a></p>
|
21 |
-
</label>
|
22 |
-
</fieldset>
|
23 |
-
</td>
|
24 |
-
</tr>
|
25 |
-
|
26 |
-
|
27 |
-
<?php if(SPDSGVOSettings::get('show_setup') == '1'): ?>
|
28 |
-
<tr>
|
29 |
-
<th scope="row">
|
30 |
-
Enable Cookie Notice
|
31 |
-
</th>
|
32 |
-
<td>
|
33 |
-
<label for="display_cookie_notice">
|
34 |
-
<input name="display_cookie_notice" type="checkbox" id="display_cookie_notice" value="1" checked>
|
35 |
-
</label>
|
36 |
-
</td>
|
37 |
-
</tr>
|
38 |
-
|
39 |
-
<tr>
|
40 |
-
<th scope="row">
|
41 |
-
Create Subject Access Request Page
|
42 |
-
</th>
|
43 |
-
<td>
|
44 |
-
<label for="sar">
|
45 |
-
<input name="sar" type="checkbox" id="sar" value="1" checked>
|
46 |
-
</label>
|
47 |
-
</td>
|
48 |
-
</tr>
|
49 |
-
|
50 |
-
<tr>
|
51 |
-
<th scope="row">
|
52 |
-
Create User Privacy Settings Page
|
53 |
-
</th>
|
54 |
-
<td>
|
55 |
-
<label for="user_privacy_settings_page">
|
56 |
-
<input name="user_privacy_settings_page" type="checkbox" id="user_privacy_settings_page" value="1" checked>
|
57 |
-
</label>
|
58 |
-
</td>
|
59 |
-
</tr>
|
60 |
-
|
61 |
-
<tr>
|
62 |
-
<th scope="row">
|
63 |
-
Create Terms and Conditione Page
|
64 |
-
</th>
|
65 |
-
<td>
|
66 |
-
<label for="terms_conditions_page">
|
67 |
-
<input name="terms_conditions_page" type="checkbox" id="terms_conditions_page" value="1" checked>
|
68 |
-
</label>
|
69 |
-
</td>
|
70 |
-
</tr>
|
71 |
-
<tr>
|
72 |
-
<th scope="row">
|
73 |
-
Create Privacy Policy Page
|
74 |
-
</th>
|
75 |
-
<td>
|
76 |
-
<label for="privacy_policy_page">
|
77 |
-
<input name="privacy_policy_page" type="checkbox" id="privacy_policy_page" value="1" checked>
|
78 |
-
</label>
|
79 |
-
</td>
|
80 |
-
</tr>
|
81 |
-
|
82 |
-
<tr>
|
83 |
-
<th scope="row">
|
84 |
-
Create Super Unsubscribe Page
|
85 |
-
</th>
|
86 |
-
<td>
|
87 |
-
<label for="super_unsubscribe_page">
|
88 |
-
<input name="super_unsubscribe_page" type="checkbox" id="super_unsubscribe_page" value="1" checked>
|
89 |
-
</label>
|
90 |
-
</td>
|
91 |
-
</tr>
|
92 |
-
|
93 |
-
<tr>
|
94 |
-
<th scope="row"></th>
|
95 |
-
<td>
|
96 |
-
<button type="submit" class="button button-primary button-large">Install</button>
|
97 |
-
</td>
|
98 |
-
</tr>
|
99 |
-
|
100 |
-
<?php endif; ?>
|
101 |
-
</tbody>
|
102 |
-
</table>
|
103 |
</form>
|
1 |
+
<h1><?php _e('Setup', 'shapepress-dsgvo'); ?></h1><hr>
|
|
|
|
|
2 |
|
3 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
4 |
+
<input type="hidden" name="action" value="<?= SPDSGVOCreatePageAction::getActionName(); ?>">
|
5 |
|
6 |
+
|
7 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
</form>
|
admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-action.php
CHANGED
@@ -8,6 +8,11 @@ Class SPDSGVOAdminSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
8 |
$this->requireAdmin();
|
9 |
|
10 |
SPDSGVOSettings::set('sar_cron', $this->get('sar_cron', '0'));
|
|
|
|
|
|
|
|
|
|
|
11 |
SPDSGVOSettings::set('sar_dsgvo_accepted_text', $this->get('sar_dsgvo_accepted_text', ''));
|
12 |
|
13 |
if($this->has('sar_page')){
|
8 |
$this->requireAdmin();
|
9 |
|
10 |
SPDSGVOSettings::set('sar_cron', $this->get('sar_cron', '0'));
|
11 |
+
if (isValidPremiumEdition())
|
12 |
+
{
|
13 |
+
SPDSGVOSettings::set('sar_email_notification', $this->get('sar_email_notification', '0'));
|
14 |
+
}
|
15 |
+
|
16 |
SPDSGVOSettings::set('sar_dsgvo_accepted_text', $this->get('sar_dsgvo_accepted_text', ''));
|
17 |
|
18 |
if($this->has('sar_page')){
|
admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php
CHANGED
@@ -1,13 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSubjectAccessRequestTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
-
public $title = '
|
6 |
public $slug = 'subject-access-request';
|
7 |
|
8 |
-
public function __construct(){
|
|
|
|
|
|
|
9 |
|
10 |
public function page(){
|
11 |
include plugin_dir_path(__FILE__) .'page.php';
|
12 |
}
|
13 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSubjectAccessRequestTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
+
public $title ='Subject Access Request';
|
6 |
public $slug = 'subject-access-request';
|
7 |
|
8 |
+
public function __construct(){
|
9 |
+
|
10 |
+
$this->title = __('Subject Access Request','shapepress-dsgvo');
|
11 |
+
}
|
12 |
|
13 |
public function page(){
|
14 |
include plugin_dir_path(__FILE__) .'page.php';
|
15 |
}
|
16 |
+
}
|
admin/tabs/subject-access-request/page.php
CHANGED
@@ -1,49 +1,59 @@
|
|
1 |
-
<h1
|
2 |
-
<p>
|
3 |
-
Mit diesem Feature können User einen Auszug über alle von
|
4 |
-
ihnen gespeicherten Daten anfordern. <br> Sämtliche Daten in ihrer
|
5 |
-
Datenbank werden auf vertrauliche Daten überprüft und dem
|
6 |
-
User per Email gesendet.
|
7 |
</p>
|
8 |
|
9 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
10 |
<input type="hidden" name="action"
|
11 |
value="<?= SPDSGVOAdminSubjectAccessRequestAction::getActionName(); ?>">
|
12 |
|
|
|
|
|
13 |
<table class="form-table">
|
14 |
<tbody>
|
15 |
<tr>
|
16 |
-
<th scope="row"
|
17 |
<td>
|
18 |
<?php $sarCron = SPDSGVOSettings::get('sar_cron'); ?>
|
19 |
<label for="sar_cron"> <select name="sar_cron"
|
20 |
id="sar_cron">
|
21 |
-
<option value="0" <?= selected($sarCron === '0')
|
22 |
-
<option value="1" <?= selected($sarCron === '1') ?>>1
|
23 |
-
<option value="2" <?= selected($sarCron === '2') ?>>2
|
24 |
-
<option value="3" <?= selected($sarCron === '3') ?>>3
|
25 |
-
<option value="7" <?= selected($sarCron === '4') ?>>1
|
26 |
</select>
|
27 |
</label>
|
28 |
-
<span class="info-text"
|
29 |
-
automatisch bearbeitet und dem User gesendet.</span></td>
|
30 |
</tr>
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
<td>
|
34 |
<input
|
35 |
name="sar_dsgvo_accepted_text" type="text" style="width: 550px;"
|
36 |
id="sar_dsgvo_accepted_text" value="<?= SPDSGVOSettings::get('sar_dsgvo_accepted_text'); ?>">
|
37 |
-
<span class="info-text"
|
38 |
</td>
|
39 |
</tr>
|
|
|
40 |
<tr>
|
41 |
-
<th scope="row"
|
42 |
<td>
|
43 |
|
44 |
<?php $sarPage = SPDSGVOSettings::get('sar_page'); ?>
|
45 |
<label for="sar_page"><select name="sar_page" id="sar_page">
|
46 |
-
<option value="0"
|
47 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
48 |
<option <?= selected($sarPage == $page->ID) ?>
|
49 |
value="<?= $page->ID ?>">
|
@@ -52,23 +62,21 @@
|
|
52 |
<?php endforeach; ?>
|
53 |
</select>
|
54 |
</label>
|
55 |
-
<span class="info-text"
|
56 |
|
57 |
<?php if($sarPage == '0'): ?>
|
58 |
<p>
|
59 |
-
|
60 |
<a class="button button-default"
|
61 |
-
href="<?= SPDSGVOCreatePageAction::url(array('sar' => '1')) ?>"
|
62 |
</p>
|
63 |
<?php elseif(!pageContainsString($sarPage, 'sar_form')): ?>
|
64 |
<p>
|
65 |
-
|
66 |
-
|
67 |
-
wurde auf der von ihnen gewählten Seite nicht gefunden. Somit hat der User keine Möglichkeit zur Anforderung der Daten. <a
|
68 |
-
href="<?= get_edit_post_link($sarPage) ?>">Seite bearbeiten</a>
|
69 |
</p>
|
70 |
<?php else: ?>
|
71 |
-
<a href="<?= get_edit_post_link($sarPage) ?>"
|
72 |
<?php endif; ?>
|
73 |
</td>
|
74 |
</tr>
|
@@ -89,17 +97,21 @@
|
|
89 |
<thead>
|
90 |
<tr>
|
91 |
<th id="request_id" class="manage-column column-request_id"
|
92 |
-
scope="col" style="width: 10%"
|
93 |
<th id="email" class="manage-column column-email" scope="col"
|
94 |
-
style="width: 20%"
|
95 |
<th id="first_name" class="manage-column column-first_name"
|
96 |
-
scope="col" style="width: 15%"
|
97 |
<th id="last_name" class="manage-column column-last_name" scope="col"
|
98 |
-
style="width: 15%"
|
99 |
<th id="dsgvo_accepted" class="manage-column column-dsgvo_accepted" scope="col"
|
100 |
-
style="width: 15%"
|
101 |
<th id="process" class="manage-column column-process" scope="col"
|
102 |
-
style="width: 15%"
|
|
|
|
|
|
|
|
|
103 |
</tr>
|
104 |
</thead>
|
105 |
|
@@ -120,16 +132,24 @@
|
|
120 |
<?= $pendingRequest->last_name ?>
|
121 |
</td>
|
122 |
<td class="column-auto-deleting-on">
|
123 |
-
<?= $pendingRequest->dsgvo_accepted === '1' ? '
|
124 |
</td>
|
125 |
<td class="column-unsubscribe-user"><a class="button-primary"
|
126 |
-
href="<?= SPDSGVOAdminSubjectAccessRequestAction::url(array('process' => $pendingRequest->ID)) ?>"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
</tr>
|
128 |
-
|
129 |
<?php endforeach; ?>
|
130 |
<?php else: ?>
|
131 |
<tr>
|
132 |
-
<td class="column-slug" colspan="2"
|
133 |
<td class="column-default"></td>
|
134 |
<td class="column-reason"></td>
|
135 |
</tr>
|
@@ -138,12 +158,15 @@
|
|
138 |
|
139 |
<tfoot>
|
140 |
<tr>
|
141 |
-
<th class="manage-column column-request_id" scope="col"
|
142 |
-
<th class="manage-column column-email" scope="col"
|
143 |
-
<th class="manage-column column-first_name" scope="col"
|
144 |
-
<th class="manage-column column-last_name" scope="col"
|
145 |
-
<th class="manage-column column-dsgvo_accepted" scope="col"
|
146 |
-
<th class="manage-column column-process" scope="col"
|
|
|
|
|
|
|
147 |
</tr>
|
148 |
</tfoot>
|
149 |
</table>
|
@@ -151,7 +174,7 @@
|
|
151 |
<?php if(count($pending) !== 0): ?>
|
152 |
<p>
|
153 |
<a class="button-primary"
|
154 |
-
href="<?= SPDSGVOAdminSubjectAccessRequestAction::url(array('all' => '1')) ?>"
|
155 |
</p>
|
156 |
<?php endif; ?>
|
157 |
|
@@ -163,41 +186,41 @@
|
|
163 |
type="hidden" name="is_admin" value="1"> <br>
|
164 |
<br>
|
165 |
|
166 |
-
<h3
|
167 |
<table class="form-table">
|
168 |
<tbody>
|
169 |
<tr>
|
170 |
-
<th scope="row"><label for="email"
|
171 |
<td><input name="email" type="email" id="email" value=""
|
172 |
class="regular-text ltr" required></td>
|
173 |
</tr>
|
174 |
<tr>
|
175 |
-
<th scope="row"><label for="first_name"
|
176 |
<td><input name="first_name" type="text" id="first_name" value=""
|
177 |
class="regular-text ltr"></td>
|
178 |
</tr>
|
179 |
<tr>
|
180 |
-
<th scope="row"><label for="last_name"
|
181 |
<td><input name="last_name" type="text" id="last_name" value=""
|
182 |
class="regular-text ltr"></td>
|
183 |
</tr>
|
184 |
<tr>
|
185 |
-
<th scope="row"><label for="dsgvo_checkbox"
|
186 |
<td><input name="dsgvo_checkbox" type="checkbox" id="dsgvo_checkbox"
|
187 |
value="1"></td>
|
188 |
</tr>
|
189 |
<tr>
|
190 |
-
<th scope="row"><label for="process_now"
|
191 |
<td><input name="process_now" type="checkbox" id="process_now"
|
192 |
value="1"></td>
|
193 |
</tr>
|
194 |
<tr style="display: none;">
|
195 |
-
<th scope="row"><label for="display_email"
|
196 |
<td><input name="display_email" type="checkbox" id="display_email"
|
197 |
value="1"></td>
|
198 |
</tr>
|
199 |
</tbody>
|
200 |
</table>
|
201 |
|
202 |
-
<?php submit_button('
|
203 |
-
</form>
|
1 |
+
<h1><?php _e('Subject Access Requests','shapepress-dsgvo')?></h1>
|
2 |
+
<p><?php _e('This feature allows users to request a digest of all data stored by you. <br> All data in your database is checked for confidential data and sent to the User by email.','shapepress-dsgvo')?>
|
|
|
|
|
|
|
|
|
3 |
</p>
|
4 |
|
5 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
6 |
<input type="hidden" name="action"
|
7 |
value="<?= SPDSGVOAdminSubjectAccessRequestAction::getActionName(); ?>">
|
8 |
|
9 |
+
<?php $disablePremiumFeatures = isValidPremiumEdition() == false; ?>
|
10 |
+
|
11 |
<table class="form-table">
|
12 |
<tbody>
|
13 |
<tr>
|
14 |
+
<th scope="row"><?php _e('Automatic processing','shapepress-dsgvo')?></th>
|
15 |
<td>
|
16 |
<?php $sarCron = SPDSGVOSettings::get('sar_cron'); ?>
|
17 |
<label for="sar_cron"> <select name="sar_cron"
|
18 |
id="sar_cron">
|
19 |
+
<option value="0" <?= selected($sarCron === '0') ?>><?php _e('none','shapepress-dsgvo')?></option>
|
20 |
+
<option value="1" <?= selected($sarCron === '1') ?>>1 <?php _e('day','shapepress-dsgvo')?></option>
|
21 |
+
<option value="2" <?= selected($sarCron === '2') ?>>2 <?php _e('days','shapepress-dsgvo')?></option>
|
22 |
+
<option value="3" <?= selected($sarCron === '3') ?>>3 <?php _e('days','shapepress-dsgvo')?></option>
|
23 |
+
<option value="7" <?= selected($sarCron === '4') ?>>1 <?php _e('weeks','shapepress-dsgvo')?></option>
|
24 |
</select>
|
25 |
</label>
|
26 |
+
<span class="info-text"><?php _e('Requests will be automatically processed after the set time and sent to the user.','shapepress-dsgvo')?></span></td>
|
|
|
27 |
</tr>
|
28 |
+
|
29 |
+
<tr>
|
30 |
+
<th scope="row"><?php _e('Email for new application:','shapepress-dsgvo')?></th>
|
31 |
+
<td>
|
32 |
+
<input
|
33 |
+
name="sar_email_notification" type="checkbox"
|
34 |
+
id="sar_email_notification" value="1"
|
35 |
+
<?= $disablePremiumFeatures ? 'disabled' : true; ?>
|
36 |
+
<?= (SPDSGVOSettings::get('sar_email_notification') === '1')? ' checked ' : ''; ?>>
|
37 |
+
<span class="info-text"><?php _e('Send a notification for a new application to the admin email address.','shapepress-dsgvo')?></span>
|
38 |
+
</td>
|
39 |
+
</tr>
|
40 |
+
<tr>
|
41 |
+
<td><?php _e('GDPR consent text:','shapepress-dsgvo')?></td>
|
42 |
<td>
|
43 |
<input
|
44 |
name="sar_dsgvo_accepted_text" type="text" style="width: 550px;"
|
45 |
id="sar_dsgvo_accepted_text" value="<?= SPDSGVOSettings::get('sar_dsgvo_accepted_text'); ?>">
|
46 |
+
<span class="info-text"><?php _e('The text to be displayed in the GDPR checkbox for data storage.','shapepress-dsgvo')?></span>
|
47 |
</td>
|
48 |
</tr>
|
49 |
+
|
50 |
<tr>
|
51 |
+
<th scope="row"><?php _e('Request page:','shapepress-dsgvo')?></th>
|
52 |
<td>
|
53 |
|
54 |
<?php $sarPage = SPDSGVOSettings::get('sar_page'); ?>
|
55 |
<label for="sar_page"><select name="sar_page" id="sar_page">
|
56 |
+
<option value="0"><?php _e('Select','shapepress-dsgvo')?></option>
|
57 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
58 |
<option <?= selected($sarPage == $page->ID) ?>
|
59 |
value="<?= $page->ID ?>">
|
62 |
<?php endforeach; ?>
|
63 |
</select>
|
64 |
</label>
|
65 |
+
<span class="info-text"><?php _e('Specifies the page on which users have the option to request their data extract.','shapepress-dsgvo')?></span>
|
66 |
|
67 |
<?php if($sarPage == '0'): ?>
|
68 |
<p>
|
69 |
+
<?php _e('Create a page using the shortcode <code>[sar_form]</code>.','shapepress-dsgvo')?>
|
70 |
<a class="button button-default"
|
71 |
+
href="<?= SPDSGVOCreatePageAction::url(array('sar' => '1')) ?>"><?php _e('Create page','shapepress-dsgvo')?></a>
|
72 |
</p>
|
73 |
<?php elseif(!pageContainsString($sarPage, 'sar_form')): ?>
|
74 |
<p>
|
75 |
+
<?php _e('Attention: The shortcode <code>[sar_form]</code> of the selected page was not found. Thus, the user has no opportunity to request the data.','shapepress-dsgvo')?> <a
|
76 |
+
href="<?= get_edit_post_link($sarPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
|
|
|
|
77 |
</p>
|
78 |
<?php else: ?>
|
79 |
+
<a href="<?= get_edit_post_link($sarPage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
80 |
<?php endif; ?>
|
81 |
</td>
|
82 |
</tr>
|
97 |
<thead>
|
98 |
<tr>
|
99 |
<th id="request_id" class="manage-column column-request_id"
|
100 |
+
scope="col" style="width: 10%"><?php _e('ID','shapepress-dsgvo')?></th>
|
101 |
<th id="email" class="manage-column column-email" scope="col"
|
102 |
+
style="width: 20%"><?php _e('Email','shapepress-dsgvo')?></th>
|
103 |
<th id="first_name" class="manage-column column-first_name"
|
104 |
+
scope="col" style="width: 15%"><?php _e('First name','shapepress-dsgvo')?></th>
|
105 |
<th id="last_name" class="manage-column column-last_name" scope="col"
|
106 |
+
style="width: 15%"><?php _e('Last name','shapepress-dsgvo')?></th>
|
107 |
<th id="dsgvo_accepted" class="manage-column column-dsgvo_accepted" scope="col"
|
108 |
+
style="width: 15%"><?php _e('GDPR approval','shapepress-dsgvo')?></th>
|
109 |
<th id="process" class="manage-column column-process" scope="col"
|
110 |
+
style="width: 15%"><?php _e('Run','shapepress-dsgvo')?></th>
|
111 |
+
<!-- i592995 -->
|
112 |
+
<th id="dismiss" class="manage-column column-dismiss" scope="col"
|
113 |
+
style="width: 15%"><?php _e('Dismiss','shapepress-dsgvo')?></th>
|
114 |
+
<!-- i592995 -->
|
115 |
</tr>
|
116 |
</thead>
|
117 |
|
132 |
<?= $pendingRequest->last_name ?>
|
133 |
</td>
|
134 |
<td class="column-auto-deleting-on">
|
135 |
+
<?= $pendingRequest->dsgvo_accepted === '1' ? 'Yes' : 'No' ?>
|
136 |
</td>
|
137 |
<td class="column-unsubscribe-user"><a class="button-primary"
|
138 |
+
href="<?= SPDSGVOAdminSubjectAccessRequestAction::url(array('process' => $pendingRequest->ID)) ?>"><?php _e('Run', 'shapepress-dsgvo'); ?></a></td>
|
139 |
+
<!-- i592995 -->
|
140 |
+
<td class="column-dismiss">
|
141 |
+
<svg class="unsubscribe-dismiss" width="10" height="10" data-id="<?php echo $pendingRequest->ID; ?>">
|
142 |
+
<line x1="0" y1="0" x2="10" y2="10" />
|
143 |
+
<line x1="0" y1="10" x2="10" y2="0" />
|
144 |
+
</svg>
|
145 |
+
</td>
|
146 |
+
<!-- i592995 -->
|
147 |
</tr>
|
148 |
+
|
149 |
<?php endforeach; ?>
|
150 |
<?php else: ?>
|
151 |
<tr>
|
152 |
+
<td class="column-slug" colspan="2"><?php _e('No open requests','shapepress-dsgvo')?></td>
|
153 |
<td class="column-default"></td>
|
154 |
<td class="column-reason"></td>
|
155 |
</tr>
|
158 |
|
159 |
<tfoot>
|
160 |
<tr>
|
161 |
+
<th class="manage-column column-request_id" scope="col"><?php _e('ID','shapepress-dsgvo')?></th>
|
162 |
+
<th class="manage-column column-email" scope="col"><?php _e('Email','shapepress-dsgvo')?></th>
|
163 |
+
<th class="manage-column column-first_name" scope="col"><?php _e('First name','shapepress-dsgvo')?></th>
|
164 |
+
<th class="manage-column column-last_name" scope="col"><?php _e('Last name','shapepress-dsgvo')?></th>
|
165 |
+
<th class="manage-column column-dsgvo_accepted" scope="col"><?php _e('GDPR approval','shapepress-dsgvo')?></th>
|
166 |
+
<th class="manage-column column-process" scope="col"><?php _e('Run','shapepress-dsgvo')?></th>
|
167 |
+
<!-- i592995 -->
|
168 |
+
<th class="manage-column column-dismiss" scope="col"><?php _e('Dismiss','shapepress-dsgvo')?></th>
|
169 |
+
<!-- i592995 -->
|
170 |
</tr>
|
171 |
</tfoot>
|
172 |
</table>
|
174 |
<?php if(count($pending) !== 0): ?>
|
175 |
<p>
|
176 |
<a class="button-primary"
|
177 |
+
href="<?= SPDSGVOAdminSubjectAccessRequestAction::url(array('all' => '1')) ?>"><?php _e('Run all','shapepress-dsgvo')?></a>
|
178 |
</p>
|
179 |
<?php endif; ?>
|
180 |
|
186 |
type="hidden" name="is_admin" value="1"> <br>
|
187 |
<br>
|
188 |
|
189 |
+
<h3><?php _e('Add entry','shapepress-dsgvo')?></h3>
|
190 |
<table class="form-table">
|
191 |
<tbody>
|
192 |
<tr>
|
193 |
+
<th scope="row"><label for="email"><?php _e('Email','shapepress-dsgvo')?> <span style="color: #F00">*</span></label></th>
|
194 |
<td><input name="email" type="email" id="email" value=""
|
195 |
class="regular-text ltr" required></td>
|
196 |
</tr>
|
197 |
<tr>
|
198 |
+
<th scope="row"><label for="first_name"><?php _e('First name','shapepress-dsgvo')?></label></th>
|
199 |
<td><input name="first_name" type="text" id="first_name" value=""
|
200 |
class="regular-text ltr"></td>
|
201 |
</tr>
|
202 |
<tr>
|
203 |
+
<th scope="row"><label for="last_name"><?php _e('Last name','shapepress-dsgvo')?></label></th>
|
204 |
<td><input name="last_name" type="text" id="last_name" value=""
|
205 |
class="regular-text ltr"></td>
|
206 |
</tr>
|
207 |
<tr>
|
208 |
+
<th scope="row"><label for="dsgvo_checkbox"><?php _e('GDPR approval','shapepress-dsgvo')?></label></th>
|
209 |
<td><input name="dsgvo_checkbox" type="checkbox" id="dsgvo_checkbox"
|
210 |
value="1"></td>
|
211 |
</tr>
|
212 |
<tr>
|
213 |
+
<th scope="row"><label for="process_now"><?php _e('Run now','shapepress-dsgvo')?></label></th>
|
214 |
<td><input name="process_now" type="checkbox" id="process_now"
|
215 |
value="1"></td>
|
216 |
</tr>
|
217 |
<tr style="display: none;">
|
218 |
+
<th scope="row"><label for="display_email"><?php _e('Show email','shapepress-dsgvo')?></label></th>
|
219 |
<td><input name="display_email" type="checkbox" id="display_email"
|
220 |
value="1"></td>
|
221 |
</tr>
|
222 |
</tbody>
|
223 |
</table>
|
224 |
|
225 |
+
<?php submit_button(__('Add','shapepress-dsgvo')); ?>
|
226 |
+
</form>
|
admin/tabs/super-unsubscribe/class-sp-dsgvo-dismiss-unsubscribe-action.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* i592995 */
|
3 |
+
Class SPDSGVODismissUnsubscribeAction extends SPDSGVOAjaxAction{
|
4 |
+
|
5 |
+
protected $action = 'admin-dismiss-unsubscribe';
|
6 |
+
|
7 |
+
protected function run(){
|
8 |
+
$id = $this->get('id');
|
9 |
+
wp_delete_post($id);
|
10 |
+
die();
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
SPDSGVODismissUnsubscribeAction::listen();
|
15 |
+
|
16 |
+
/* i592995 */
|
admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php
CHANGED
@@ -6,17 +6,21 @@ Class SPDSGVOSuperUnsubscribeAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
-
|
10 |
-
|
11 |
// unsubscribe_auto_delete
|
12 |
SPDSGVOSettings::set('unsubscribe_auto_delete', $this->get('unsubscribe_auto_delete', '0'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
SPDSGVOSettings::set('su_dsgvo_accepted_text', $this->get('su_dsgvo_accepted_text', ''));
|
14 |
|
15 |
-
|
16 |
// unsubscribe auto delete tme
|
17 |
SPDSGVOSettings::set('su_auto_del_time', $this->get('su_auto_del_time', '0'));
|
18 |
-
|
19 |
-
SPDSGVOSettings::set('su_woo_data_action', $this->get('su_woo_data_action', 'ignore'));
|
20 |
|
21 |
// Set super_unsubscribe_page
|
22 |
if($this->has('super_unsubscribe_page')){
|
6 |
|
7 |
protected function run(){
|
8 |
$this->requireAdmin();
|
9 |
+
|
|
|
10 |
// unsubscribe_auto_delete
|
11 |
SPDSGVOSettings::set('unsubscribe_auto_delete', $this->get('unsubscribe_auto_delete', '0'));
|
12 |
+
if (isValidPremiumEdition())
|
13 |
+
{
|
14 |
+
SPDSGVOSettings::set('su_email_notification', $this->get('su_email_notification', '0'));
|
15 |
+
SPDSGVOSettings::set('su_woo_data_action', $this->get('su_woo_data_action', 'ignore'));
|
16 |
+
SPDSGVOSettings::set('su_bbpress_data_action', $this->get('su_bbpress_data_action', 'ignore'));
|
17 |
+
SPDSGVOSettings::set('su_buddypress_data_action', $this->get('su_buddypress_data_action', 'ignore'));
|
18 |
+
SPDSGVOSettings::set('su_cf7_data_action', $this->get('su_cf7_data_action', 'ignore'));
|
19 |
+
}
|
20 |
SPDSGVOSettings::set('su_dsgvo_accepted_text', $this->get('su_dsgvo_accepted_text', ''));
|
21 |
|
|
|
22 |
// unsubscribe auto delete tme
|
23 |
SPDSGVOSettings::set('su_auto_del_time', $this->get('su_auto_del_time', '0'));
|
|
|
|
|
24 |
|
25 |
// Set super_unsubscribe_page
|
26 |
if($this->has('super_unsubscribe_page')){
|
admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php
CHANGED
@@ -1,13 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSuperUnsubscribeTab extends SPDSGVOAdminTab{
|
4 |
-
|
5 |
-
public $title = '
|
6 |
public $slug = 'super-unsubscribe';
|
7 |
|
8 |
-
public function __construct(){
|
|
|
|
|
9 |
|
10 |
public function page(){
|
11 |
include plugin_dir_path(__FILE__) .'page.php';
|
12 |
}
|
13 |
-
}
|
1 |
<?php
|
2 |
|
3 |
class SPDSGVOSuperUnsubscribeTab extends SPDSGVOAdminTab{
|
4 |
+
|
5 |
+
public $title = 'Delete request';
|
6 |
public $slug = 'super-unsubscribe';
|
7 |
|
8 |
+
public function __construct(){
|
9 |
+
$this->title = __('Delete request','shapepress-dsgvo');
|
10 |
+
}
|
11 |
|
12 |
public function page(){
|
13 |
include plugin_dir_path(__FILE__) .'page.php';
|
14 |
}
|
15 |
+
}
|
admin/tabs/super-unsubscribe/page.php
CHANGED
@@ -1,81 +1,129 @@
|
|
1 |
-
<h1
|
2 |
-
<p
|
3 |
-
Mit einem klick auf "Jetzt löschen" löschen sie alle gespeicherten Daten des Users auf ihrer Seite inklusive Plugins.
|
4 |
</p>
|
5 |
|
6 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
7 |
<input type="hidden" name="action"
|
8 |
value="<?= SPDSGVOSuperUnsubscribeAction::getActionName(); ?>"> <input
|
9 |
type="hidden" name="CSRF" value="<?= sp_dsgvo_CSRF_TOKEN() ?>">
|
|
|
10 |
|
11 |
<table class="form-table">
|
12 |
<tbody>
|
13 |
<tr>
|
14 |
-
<th scope="row"
|
15 |
<td></td>
|
16 |
</tr>
|
17 |
<tr>
|
18 |
-
<td
|
19 |
<td><label for="unsubscribe_auto_delete"> <input
|
20 |
name="unsubscribe_auto_delete" type="checkbox"
|
21 |
id="unsubscribe_auto_delete" value="1"
|
22 |
<?= (SPDSGVOSettings::get('unsubscribe_auto_delete') === '1')? ' checked ' : ''; ?>>
|
23 |
</label>
|
24 |
-
<span class="info-text"
|
25 |
</tr>
|
26 |
<tr>
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
<td>
|
29 |
<?php $suAutoDelTime = SPDSGVOSettings::get('su_auto_del_time'); ?>
|
30 |
<label for="su_auto_del_time"> <select name="su_auto_del_time"
|
31 |
id="su_auto_del_time">
|
32 |
-
<option value="0" <?= selected($suAutoDelTime === '0')
|
33 |
-
<option value="1m" <?= selected($suAutoDelTime === '1m') ?>>1
|
34 |
-
<option value="3m" <?= selected($suAutoDelTime === '3m') ?>>3
|
35 |
-
<option value="6m" <?= selected($suAutoDelTime === '6m') ?>>6
|
36 |
-
<option value="1y" <?= selected($suAutoDelTime === '1y') ?>>1
|
37 |
-
<option value="6y" <?= selected($suAutoDelTime === '6y') ?>>6
|
38 |
-
<option value="7y" <?= selected($suAutoDelTime === '7y') ?>>7
|
39 |
</select>
|
40 |
</label>
|
41 |
-
<span class="info-text"
|
42 |
-
automatisch gelöscht. Stellt die maximale Aufbewahrungszeit sicher.</span></td>
|
43 |
</tr>
|
44 |
|
|
|
45 |
<tr>
|
46 |
-
|
47 |
-
<td>
|
48 |
-
<input
|
49 |
-
name="su_dsgvo_accepted_text" type="text" style="width: 550px;"
|
50 |
-
id="su_dsgvo_accepted_text" value="<?= SPDSGVOSettings::get('su_dsgvo_accepted_text'); ?>">
|
51 |
-
<span class="info-text">Der Text der bei der Checkbox fü die Datenspeicherung angezeigt werden soll</span>
|
52 |
-
</td>
|
53 |
-
</tr>
|
54 |
-
|
55 |
-
<?php if (enablePremiumFeatures()) : ?>
|
56 |
-
<tr>
|
57 |
-
<td>WooCommerce Daten</td>
|
58 |
<td>
|
59 |
<?php $wooDataAction = SPDSGVOSettings::get('su_woo_data_action'); ?>
|
60 |
<label for="su_woo_data_action"> <select name="su_woo_data_action"
|
61 |
id="su_woo_data_action">
|
62 |
-
<option value="ignore" <?= selected($wooDataAction === 'ignore')
|
63 |
-
<option value="pseudo" <?= selected($wooDataAction === 'pseudo')
|
64 |
-
<option value="del" <?= selected($wooDataAction === 'del')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
</select>
|
66 |
</label>
|
67 |
-
<span class="info-text"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
</tr>
|
69 |
<?php endif;?>
|
70 |
|
71 |
<tr>
|
72 |
-
<th scope="row"
|
73 |
<td>
|
74 |
|
75 |
<?php $unsubscribePage = SPDSGVOSettings::get('super_unsubscribe_page'); ?>
|
76 |
<label for="super_unsubscribe_page"><select
|
77 |
name="super_unsubscribe_page" id="super_unsubscribe_page">
|
78 |
-
<option value="0"
|
79 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
80 |
<option <?= selected($unsubscribePage == $page->ID) ?>
|
81 |
value="<?= $page->ID ?>">
|
@@ -83,23 +131,21 @@
|
|
83 |
</option>
|
84 |
<?php endforeach; ?>
|
85 |
</select>
|
86 |
-
</label>
|
87 |
|
88 |
<?php if($unsubscribePage == '0'): ?>
|
89 |
<p>
|
90 |
-
|
91 |
<a class="button button-default"
|
92 |
-
href="<?= SPDSGVOCreatePageAction::url(array('super_unsubscribe_page' => '1')) ?>"
|
93 |
</p>
|
94 |
<?php elseif(!pageContainsString($unsubscribePage, 'unsubscribe_form')): ?>
|
95 |
<p>
|
96 |
-
|
97 |
-
|
98 |
-
wurde auf der von ihnen gewählten Seite nicht gefunden. Somit hat der User keine Möglichkeit eine Löschanfrage zu stellen. <a
|
99 |
-
href="<?= get_edit_post_link($unsubscribePage) ?>">Seite bearbeiten</a>
|
100 |
</p>
|
101 |
<?php else: ?>
|
102 |
-
<a href="<?= get_edit_post_link($unsubscribePage) ?>"
|
103 |
<?php endif; ?>
|
104 |
</td>
|
105 |
</tr>
|
@@ -114,16 +160,16 @@
|
|
114 |
<hr class="sp-dsgvo">
|
115 |
</form>
|
116 |
|
117 |
-
<?php
|
118 |
-
$statuses = array(
|
119 |
-
'pending',
|
120 |
-
'done'
|
121 |
-
);
|
122 |
-
if (in_array($_GET['status'], $statuses)) {
|
123 |
-
$status = $_GET['status'];
|
124 |
-
} else {
|
125 |
-
$status = 'pending';
|
126 |
-
}
|
127 |
?>
|
128 |
|
129 |
<ul class="subsubsub">
|
@@ -131,14 +177,14 @@ if (in_array($_GET['status'], $statuses)) {
|
|
131 |
<a
|
132 |
href="<?= SPDSGVO::adminURL(array('tab' => 'super-unsubscribe', 'status' => 'pending')) ?>"
|
133 |
class="<?= ($status === 'pending')? 'current' : ''; ?>" aria-current="page">
|
134 |
-
|
135 |
</a>
|
136 |
</li>
|
137 |
<li>
|
138 |
<a
|
139 |
href="<?= SPDSGVO::adminURL(array('tab' => 'super-unsubscribe', 'status' => 'done')) ?>"
|
140 |
class="<?= ($status === 'done')? 'current' : ''; ?>" aria-current="page">
|
141 |
-
|
142 |
</a>
|
143 |
</li>
|
144 |
</ul>
|
@@ -150,19 +196,23 @@ if (in_array($_GET['status'], $statuses)) {
|
|
150 |
<thead>
|
151 |
<tr>
|
152 |
<th id="request_id" class="manage-column column-request_id"
|
153 |
-
scope="col" style="width: 10%"
|
154 |
<th id="email" class="manage-column column-email" scope="col"
|
155 |
-
style="width: 20%"
|
156 |
<th id="first_name" class="manage-column column-first_name"
|
157 |
-
scope="col" style="width: 15%"
|
158 |
<th id="last_name" class="manage-column column-last_name" scope="col"
|
159 |
-
style="width: 15%"
|
160 |
<th id="dsgvo_accepted" class="manage-column column-dsgvo_accepted" scope="col"
|
161 |
-
style="width: 15%"
|
162 |
<th id="status" class="manage-column column-status" scope="col"
|
163 |
-
style="width: 15%"
|
164 |
<th id="process" class="manage-column column-process" scope="col"
|
165 |
-
style="width: 15%"
|
|
|
|
|
|
|
|
|
166 |
</tr>
|
167 |
</thead>
|
168 |
|
@@ -191,22 +241,30 @@ if (in_array($_GET['status'], $statuses)) {
|
|
191 |
<td class="column-unsubscribe-user">
|
192 |
|
193 |
<?php if($status == 'done'): ?>
|
194 |
-
<a class="button-primary disabled" href="#"
|
195 |
<?php else: ?>
|
196 |
<a class="button-primary"
|
197 |
-
href="<?= SPDSGVOSuperUnsubscribeAction::url(array('process' => $confirmedRequest->ID)) ?>"
|
198 |
<?php endif; ?>
|
199 |
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
</tr>
|
201 |
-
|
202 |
<?php endforeach; ?>
|
203 |
<?php else: ?>
|
204 |
<tr>
|
205 |
<td class="column-slug" colspan="2">
|
206 |
<?php if($status == 'done'): ?>
|
207 |
-
<h4
|
208 |
<?php else: ?>
|
209 |
-
<h4
|
210 |
<?php endif; ?>
|
211 |
</td>
|
212 |
<td class="column-default"></td>
|
@@ -217,13 +275,16 @@ if (in_array($_GET['status'], $statuses)) {
|
|
217 |
|
218 |
<tfoot>
|
219 |
<tr>
|
220 |
-
<th class="manage-column column-request_id" scope="col"
|
221 |
-
<th class="manage-column column-email" scope="col"
|
222 |
-
<th class="manage-column column-first_name" scope="col"
|
223 |
-
<th class="manage-column column-last_name" scope="col"
|
224 |
-
<th class="manage-column column-dsgvo_accepted" scope="col"
|
225 |
-
<th class="manage-column column-status" scope="col"
|
226 |
-
<th class="manage-column column-process" scope="col"
|
|
|
|
|
|
|
227 |
</tr>
|
228 |
</tfoot>
|
229 |
</table>
|
@@ -231,7 +292,7 @@ if (in_array($_GET['status'], $statuses)) {
|
|
231 |
<?php if(count($pending) !== 0): ?>
|
232 |
<p>
|
233 |
<a class="button-primary"
|
234 |
-
href="<?= SPDSGVOSuperUnsubscribeAction::url(array('all' => '1')) ?>"
|
235 |
</p>
|
236 |
<?php endif; ?>
|
237 |
|
@@ -243,37 +304,37 @@ if (in_array($_GET['status'], $statuses)) {
|
|
243 |
type="hidden" name="is_admin" value="1"> <br>
|
244 |
<br>
|
245 |
|
246 |
-
<h3
|
247 |
-
|
248 |
<table class="form-table">
|
249 |
<tbody>
|
250 |
<tr>
|
251 |
-
<th scope="row"><label for="email"
|
252 |
<td><input name="email" type="email" id="email" value=""
|
253 |
class="regular-text ltr" required></td>
|
254 |
</tr>
|
255 |
<tr>
|
256 |
-
<th scope="row"><label for="first_name"
|
257 |
<td><input name="first_name" type="text" id="first_name" value=""
|
258 |
class="regular-text ltr"></td>
|
259 |
</tr>
|
260 |
<tr>
|
261 |
-
<th scope="row"><label for="last_name"
|
262 |
<td><input name="last_name" type="text" id="last_name" value=""
|
263 |
class="regular-text ltr"></td>
|
264 |
</tr>
|
265 |
<tr>
|
266 |
-
<th scope="row"><label for="dsgvo_checkbox"
|
267 |
<td><input name="dsgvo_checkbox" type="checkbox" id="dsgvo_checkbox"
|
268 |
value="1"></td>
|
269 |
</tr>
|
270 |
<tr>
|
271 |
-
<th scope="row"><label for="process_now"
|
272 |
<td><input name="process_now" type="checkbox" id="process_now"
|
273 |
value="1"></td>
|
274 |
</tr>
|
275 |
</tbody>
|
276 |
</table>
|
277 |
|
278 |
-
<?php submit_button('
|
279 |
-
</form>
|
1 |
+
<h1><?php _e('Delete Requests','shapepress-dsgvo')?></h1>
|
2 |
+
<p><?php _e('Here you will find all deletion requests that users have made on their site. With a click on "delete now " you delete all stored data of the user on their side including Plugins.','shapepress-dsgvo')?>
|
|
|
3 |
</p>
|
4 |
|
5 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>">
|
6 |
<input type="hidden" name="action"
|
7 |
value="<?= SPDSGVOSuperUnsubscribeAction::getActionName(); ?>"> <input
|
8 |
type="hidden" name="CSRF" value="<?= sp_dsgvo_CSRF_TOKEN() ?>">
|
9 |
+
<?php $disablePremiumFeatures = isValidPremiumEdition() == false; ?>
|
10 |
|
11 |
<table class="form-table">
|
12 |
<tbody>
|
13 |
<tr>
|
14 |
+
<th scope="row"><?php _e('Automatic processing','shapepress-dsgvo')?></th>
|
15 |
<td></td>
|
16 |
</tr>
|
17 |
<tr>
|
18 |
+
<td><?php _e('Immediately on request','shapepress-dsgvo')?></td>
|
19 |
<td><label for="unsubscribe_auto_delete"> <input
|
20 |
name="unsubscribe_auto_delete" type="checkbox"
|
21 |
id="unsubscribe_auto_delete" value="1"
|
22 |
<?= (SPDSGVOSettings::get('unsubscribe_auto_delete') === '1')? ' checked ' : ''; ?>>
|
23 |
</label>
|
24 |
+
<span class="info-text"><?php _e('If enabled, delete requests are performed immediately.','shapepress-dsgvo')?></span></td>
|
25 |
</tr>
|
26 |
<tr>
|
27 |
+
<td><?php _e('Email for new application:','shapepress-dsgvo')?></td>
|
28 |
+
<td>
|
29 |
+
<input
|
30 |
+
name="su_email_notification" type="checkbox"
|
31 |
+
id="su_email_notification" value="1"
|
32 |
+
<?= $disablePremiumFeatures ? 'disabled' : true; ?>
|
33 |
+
<?= (SPDSGVOSettings::get('su_email_notification') === '1')? ' checked ' : ''; ?>>
|
34 |
+
<span class="info-text"><?php _e('Send a notification for a new application to the admin email address.','shapepress-dsgvo')?></span>
|
35 |
+
</td>
|
36 |
+
</tr>
|
37 |
+
<tr>
|
38 |
+
<td><?php _e('GDPR confirmation text:','shapepress-dsgvo')?></td>
|
39 |
+
<td>
|
40 |
+
<input
|
41 |
+
name="su_dsgvo_accepted_text" type="text" style="width: 550px;"
|
42 |
+
id="su_dsgvo_accepted_text" value="<?= SPDSGVOSettings::get('su_dsgvo_accepted_text'); ?>">
|
43 |
+
<span class="info-text"><?php _e('The text to be displayed in the GDPR checkbox for data deletion.','shapepress-dsgvo')?></span>
|
44 |
+
</td>
|
45 |
+
</tr>
|
46 |
+
<tr>
|
47 |
+
<td><?php _e('After period','shapepress-dsgvo')?></td>
|
48 |
<td>
|
49 |
<?php $suAutoDelTime = SPDSGVOSettings::get('su_auto_del_time'); ?>
|
50 |
<label for="su_auto_del_time"> <select name="su_auto_del_time"
|
51 |
id="su_auto_del_time">
|
52 |
+
<option value="0" <?= selected($suAutoDelTime === '0') ?>><?php _e('none','shapepress-dsgvo')?></option>
|
53 |
+
<option value="1m" <?= selected($suAutoDelTime === '1m') ?>>1 <?php _e('month','shapepress-dsgvo')?></option>
|
54 |
+
<option value="3m" <?= selected($suAutoDelTime === '3m') ?>>3 <?php _e('months','shapepress-dsgvo')?></option>
|
55 |
+
<option value="6m" <?= selected($suAutoDelTime === '6m') ?>>6 <?php _e('months','shapepress-dsgvo')?></option>
|
56 |
+
<option value="1y" <?= selected($suAutoDelTime === '1y') ?>>1 <?php _e('year','shapepress-dsgvo')?></option>
|
57 |
+
<option value="6y" <?= selected($suAutoDelTime === '6y') ?>>6 <?php _e('years','shapepress-dsgvo')?></option>
|
58 |
+
<option value="7y" <?= selected($suAutoDelTime === '7y') ?>>7 <?php _e('years','shapepress-dsgvo')?></option>
|
59 |
</select>
|
60 |
</label>
|
61 |
+
<span class="info-text"><?php _e('Data is automatically deleted after the set time. Ensures the maximum retention time.','shapepress-dsgvo')?></span></td>
|
|
|
62 |
</tr>
|
63 |
|
64 |
+
<?php if (isValidPremiumEdition()) : ?>
|
65 |
<tr>
|
66 |
+
<td><?php _e('WooCommerce Data','shapepress-dsgvo')?></td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
<td>
|
68 |
<?php $wooDataAction = SPDSGVOSettings::get('su_woo_data_action'); ?>
|
69 |
<label for="su_woo_data_action"> <select name="su_woo_data_action"
|
70 |
id="su_woo_data_action">
|
71 |
+
<option value="ignore" <?= selected($wooDataAction === 'ignore') ?>><?php _e('No action','shapepress-dsgvo')?></option>
|
72 |
+
<option value="pseudo" <?= selected($wooDataAction === 'pseudo') ?>><?php _e('Pseudonymise','shapepress-dsgvo')?></option>
|
73 |
+
<option value="del" <?= selected($wooDataAction === 'del') ?>><?php _e('Delete','shapepress-dsgvo')?></option>
|
74 |
+
</select>
|
75 |
+
</label>
|
76 |
+
<span class="info-text"><?php _e('Specifies what should happen to personal data of orders.','shapepress-dsgvo')?></span></td>
|
77 |
+
</tr>
|
78 |
+
<tr>
|
79 |
+
<td><?php _e('bbPress Data','shapepress-dsgvo')?></td>
|
80 |
+
<td>
|
81 |
+
<?php $bbPDataAction = SPDSGVOSettings::get('su_bbpress_data_action'); ?>
|
82 |
+
<label for="su_bbpress_data_action"> <select name="su_bbpress_data_action"
|
83 |
+
id="su_bbpress_data_action">
|
84 |
+
<option value="ignore" <?= selected($bbPDataAction === 'ignore') ?>><?php _e('No action','shapepress-dsgvo')?></option>
|
85 |
+
<option value="pseudo" <?= selected($wooDataAction === 'pseudo') ?>><?php _e('Pseudonymise','shapepress-dsgvo')?></option>
|
86 |
+
<option value="del" <?= selected($bbPDataAction === 'del') ?>><?php _e('Delete','shapepress-dsgvo')?></option>
|
87 |
+
</select>
|
88 |
+
</label>
|
89 |
+
<span class="info-text"><?php _e('Specifies what should happen with forum entries.','shapepress-dsgvo')?></span></td>
|
90 |
+
</tr>
|
91 |
+
<tr>
|
92 |
+
<td><?php _e('buddyPress Data','shapepress-dsgvo')?></td>
|
93 |
+
<td>
|
94 |
+
<?php $buddyPressDataAction = SPDSGVOSettings::get('su_buddypress_data_action'); ?>
|
95 |
+
<label for="su_buddypress_data_action"> <select name="su_buddypress_data_action"
|
96 |
+
id="su_buddypress_data_action">
|
97 |
+
<option value="ignore" <?= selected($buddyPressDataAction === 'ignore') ?>><?php _e('No action','shapepress-dsgvo')?></option>
|
98 |
+
<option value="pseudo" <?= selected($buddyPressDataAction === 'pseudo') ?>><?php _e('Pseudonymise','shapepress-dsgvo')?></option>
|
99 |
+
<option value="del" <?= selected($buddyPressDataAction === 'del') ?>><?php _e('Delete','shapepress-dsgvo')?></option>
|
100 |
</select>
|
101 |
</label>
|
102 |
+
<span class="info-text"><?php _e('Specifies what should happen with PNs and extended profile fields.','shapepress-dsgvo')?></span></td>
|
103 |
+
</tr>
|
104 |
+
<tr>
|
105 |
+
<td><?php _e('CF7/Flamingo Data','shapepress-dsgvo')?></td>
|
106 |
+
<td>
|
107 |
+
<?php $cf7DataAction = SPDSGVOSettings::get('su_cf7_data_action'); ?>
|
108 |
+
<label for="su_cf7_data_action"> <select name="su_cf7_data_action"
|
109 |
+
id="su_cf7_data_action">
|
110 |
+
<option value="ignore" <?= selected($cf7DataAction === 'ignore') ?>><?php _e('No action','shapepress-dsgvo')?></option>
|
111 |
+
<option value="pseudo" <?= selected($cf7DataAction === 'pseudo') ?>><?php _e('Pseudonymise','shapepress-dsgvo')?></option>
|
112 |
+
<option value="del" <?= selected($cf7DataAction === 'del') ?>><?php _e('Delete','shapepress-dsgvo')?></option>
|
113 |
+
</select>
|
114 |
+
</label>
|
115 |
+
<span class="info-text"><?php _e('Specifies what to do with contact entries and messages.','shapepress-dsgvo')?></span></td>
|
116 |
</tr>
|
117 |
<?php endif;?>
|
118 |
|
119 |
<tr>
|
120 |
+
<th scope="row"><?php _e('Page for deletion request:','shapepress-dsgvo')?></th>
|
121 |
<td>
|
122 |
|
123 |
<?php $unsubscribePage = SPDSGVOSettings::get('super_unsubscribe_page'); ?>
|
124 |
<label for="super_unsubscribe_page"><select
|
125 |
name="super_unsubscribe_page" id="super_unsubscribe_page">
|
126 |
+
<option value="0"><?php _e('Select','shapepress-dsgvo')?></option>
|
127 |
<?php foreach(get_pages(array('number' => 0)) as $key => $page): ?>
|
128 |
<option <?= selected($unsubscribePage == $page->ID) ?>
|
129 |
value="<?= $page->ID ?>">
|
131 |
</option>
|
132 |
<?php endforeach; ?>
|
133 |
</select>
|
134 |
+
</label>
|
135 |
|
136 |
<?php if($unsubscribePage == '0'): ?>
|
137 |
<p>
|
138 |
+
<?php _e('Create a page using the shortcode <code>[unsubscribe_form]</code>.','shapepress-dsgvo')?>
|
139 |
<a class="button button-default"
|
140 |
+
href="<?= SPDSGVOCreatePageAction::url(array('super_unsubscribe_page' => '1')) ?>"><?php _e('Create page','shapepress-dsgvo')?></a>
|
141 |
</p>
|
142 |
<?php elseif(!pageContainsString($unsubscribePage, 'unsubscribe_form')): ?>
|
143 |
<p>
|
144 |
+
<?php _e('Attention: The shortcode <code>[unsubscribe_form]</code> that should be on the selected page was not found. Thus, the user has no opportunity to ask a deletion request.','shapepress-dsgvo')?> <a
|
145 |
+
href="<?= get_edit_post_link($unsubscribePage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
|
|
|
|
146 |
</p>
|
147 |
<?php else: ?>
|
148 |
+
<a href="<?= get_edit_post_link($unsubscribePage) ?>"><?php _e('Edit page','shapepress-dsgvo')?></a>
|
149 |
<?php endif; ?>
|
150 |
</td>
|
151 |
</tr>
|
160 |
<hr class="sp-dsgvo">
|
161 |
</form>
|
162 |
|
163 |
+
<?php
|
164 |
+
$statuses = array(
|
165 |
+
'pending',
|
166 |
+
'done'
|
167 |
+
);
|
168 |
+
if (in_array($_GET['status'], $statuses)) {
|
169 |
+
$status = $_GET['status'];
|
170 |
+
} else {
|
171 |
+
$status = 'pending';
|
172 |
+
}
|
173 |
?>
|
174 |
|
175 |
<ul class="subsubsub">
|
177 |
<a
|
178 |
href="<?= SPDSGVO::adminURL(array('tab' => 'super-unsubscribe', 'status' => 'pending')) ?>"
|
179 |
class="<?= ($status === 'pending')? 'current' : ''; ?>" aria-current="page">
|
180 |
+
<?php _e('Pending','shapepress-dsgvo')?>
|
181 |
</a>
|
182 |
</li>
|
183 |
<li>
|
184 |
<a
|
185 |
href="<?= SPDSGVO::adminURL(array('tab' => 'super-unsubscribe', 'status' => 'done')) ?>"
|
186 |
class="<?= ($status === 'done')? 'current' : ''; ?>" aria-current="page">
|
187 |
+
<?php _e('Done','shapepress-dsgvo')?>
|
188 |
</a>
|
189 |
</li>
|
190 |
</ul>
|
196 |
<thead>
|
197 |
<tr>
|
198 |
<th id="request_id" class="manage-column column-request_id"
|
199 |
+
scope="col" style="width: 10%"><?php _e('ID','shapepress-dsgvo')?></th>
|
200 |
<th id="email" class="manage-column column-email" scope="col"
|
201 |
+
style="width: 20%"><?php _e('Email','shapepress-dsgvo')?></th>
|
202 |
<th id="first_name" class="manage-column column-first_name"
|
203 |
+
scope="col" style="width: 15%"><?php _e('First name','shapepress-dsgvo')?></th>
|
204 |
<th id="last_name" class="manage-column column-last_name" scope="col"
|
205 |
+
style="width: 15%"><?php _e('Last name','shapepress-dsgvo')?></th>
|
206 |
<th id="dsgvo_accepted" class="manage-column column-dsgvo_accepted" scope="col"
|
207 |
+
style="width: 15%"><?php _e('GDPR approval','shapepress-dsgvo')?></th>
|
208 |
<th id="status" class="manage-column column-status" scope="col"
|
209 |
+
style="width: 15%"><?php _e('State','shapepress-dsgvo')?></th>
|
210 |
<th id="process" class="manage-column column-process" scope="col"
|
211 |
+
style="width: 15%"><?php _e('Delete now','shapepress-dsgvo')?></th>
|
212 |
+
<!-- .i592995 -->
|
213 |
+
<th id="dismiss" class="manage-column column-dismiss" scope="col"
|
214 |
+
style="width: 15%"><?php _e('Dismiss','shapepress-dsgvo')?></th>
|
215 |
+
<!-- .i592995 -->
|
216 |
</tr>
|
217 |
</thead>
|
218 |
|
241 |
<td class="column-unsubscribe-user">
|
242 |
|
243 |
<?php if($status == 'done'): ?>
|
244 |
+
<a class="button-primary disabled" href="#"><?php _e('Delete now','shapepress-dsgvo')?></a>
|
245 |
<?php else: ?>
|
246 |
<a class="button-primary"
|
247 |
+
href="<?= SPDSGVOSuperUnsubscribeAction::url(array('process' => $confirmedRequest->ID)) ?>"><?php _e('Delete now','shapepress-dsgvo')?></a>
|
248 |
<?php endif; ?>
|
249 |
</td>
|
250 |
+
<!-- .i592995 -->
|
251 |
+
<td class="column-dismiss">
|
252 |
+
<svg class="unsubscribe-dismiss" width="10" height="10" data-id="<?php echo $confirmedRequest->ID; ?>">
|
253 |
+
<line x1="0" y1="0" x2="10" y2="10" />
|
254 |
+
<line x1="0" y1="10" x2="10" y2="0" />
|
255 |
+
</svg>
|
256 |
+
</td>
|
257 |
+
<!-- .i592995 -->
|
258 |
</tr>
|
259 |
+
|
260 |
<?php endforeach; ?>
|
261 |
<?php else: ?>
|
262 |
<tr>
|
263 |
<td class="column-slug" colspan="2">
|
264 |
<?php if($status == 'done'): ?>
|
265 |
+
<h4><?php _e('No requests done','shapepress-dsgvo')?></h4>
|
266 |
<?php else: ?>
|
267 |
+
<h4><?php _e('No pending requests','shapepress-dsgvo')?></h4>
|
268 |
<?php endif; ?>
|
269 |
</td>
|
270 |
<td class="column-default"></td>
|
275 |
|
276 |
<tfoot>
|
277 |
<tr>
|
278 |
+
<th class="manage-column column-request_id" scope="col"><?php _e('ID','shapepress-dsgvo')?></th>
|
279 |
+
<th class="manage-column column-email" scope="col"><?php _e('Email','shapepress-dsgvo')?></th>
|
280 |
+
<th class="manage-column column-first_name" scope="col"><?php _e('First name','shapepress-dsgvo')?></th>
|
281 |
+
<th class="manage-column column-last_name" scope="col"><?php _e('Last name','shapepress-dsgvo')?></th>
|
282 |
+
<th class="manage-column column-dsgvo_accepted" scope="col"><?php _e('GDPR approval','shapepress-dsgvo')?></th>
|
283 |
+
<th class="manage-column column-status" scope="col"><?php _e('State','shapepress-dsgvo')?></th>
|
284 |
+
<th class="manage-column column-process" scope="col"><?php _e('Delete now','shapepress-dsgvo')?></th>
|
285 |
+
<!-- .i592995 -->
|
286 |
+
<th class="manage-column column-dismiss" scope="col"><?php _e('Dismiss','shapepress-dsgvo')?></th>
|
287 |
+
<!-- .i592995 -->
|
288 |
</tr>
|
289 |
</tfoot>
|
290 |
</table>
|
292 |
<?php if(count($pending) !== 0): ?>
|
293 |
<p>
|
294 |
<a class="button-primary"
|
295 |
+
href="<?= SPDSGVOSuperUnsubscribeAction::url(array('all' => '1')) ?>"><?php _e('Delete all','shapepress-dsgvo')?></a>
|
296 |
</p>
|
297 |
<?php endif; ?>
|
298 |
|
304 |
type="hidden" name="is_admin" value="1"> <br>
|
305 |
<br>
|
306 |
|
307 |
+
<h3><?php _e('Add entry','shapepress-dsgvo')?></h3>
|
308 |
+
<span style="color:red"><?php _e('ATTENTION: Executing this action deletes the account (except administrators).','shapepress-dsgvo')?></span>
|
309 |
<table class="form-table">
|
310 |
<tbody>
|
311 |
<tr>
|
312 |
+
<th scope="row"><label for="email"><?php _e('Email','shapepress-dsgvo')?> <span style="color: #F00">*</span></label></th>
|
313 |
<td><input name="email" type="email" id="email" value=""
|
314 |
class="regular-text ltr" required></td>
|
315 |
</tr>
|
316 |
<tr>
|
317 |
+
<th scope="row"><label for="first_name"><?php _e('First name','shapepress-dsgvo')?></label></th>
|
318 |
<td><input name="first_name" type="text" id="first_name" value=""
|
319 |
class="regular-text ltr"></td>
|
320 |
</tr>
|
321 |
<tr>
|
322 |
+
<th scope="row"><label for="last_name"><?php _e('Last name','shapepress-dsgvo')?></label></th>
|
323 |
<td><input name="last_name" type="text" id="last_name" value=""
|
324 |
class="regular-text ltr"></td>
|
325 |
</tr>
|
326 |
<tr>
|
327 |
+
<th scope="row"><label for="dsgvo_checkbox"><?php _e('GDPR approval','shapepress-dsgvo')?></label></th>
|
328 |
<td><input name="dsgvo_checkbox" type="checkbox" id="dsgvo_checkbox"
|
329 |
value="1"></td>
|
330 |
</tr>
|
331 |
<tr>
|
332 |
+
<th scope="row"><label for="process_now"><?php _e('Run without user confirmation','shapepress-dsgvo')?></label></th>
|
333 |
<td><input name="process_now" type="checkbox" id="process_now"
|
334 |
value="1"></td>
|
335 |
</tr>
|
336 |
</tbody>
|
337 |
</table>
|
338 |
|
339 |
+
<?php submit_button(__('Add','shapepress-dsgvo')); ?>
|
340 |
+
</form>
|
includes/class-sp-dsgvo-ajax-action.php
CHANGED
@@ -32,35 +32,42 @@ abstract class SPDSGVOAjaxAction{
|
|
32 |
protected $action;
|
33 |
public $request;
|
34 |
public $user;
|
35 |
-
|
36 |
abstract protected function run();
|
37 |
|
38 |
-
public function __construct(){
|
39 |
$this->request = $_REQUEST;
|
40 |
if($this->isLoggedIn()){
|
41 |
$this->user = wp_get_current_user();
|
42 |
}
|
43 |
}
|
44 |
|
45 |
-
public function boot(){
|
46 |
-
|
47 |
$action = new $class;
|
48 |
$action->run();
|
49 |
|
50 |
if($action->has('href')){
|
51 |
wp_redirect($action->get('href'));
|
52 |
}else{
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
-
|
56 |
die;
|
57 |
}
|
58 |
|
59 |
public static function listen($public = TRUE){
|
60 |
-
|
61 |
-
|
62 |
add_action("wp_ajax_{$actionName}", array($className, 'boot'));
|
63 |
-
|
64 |
if($public){
|
65 |
add_action("wp_ajax_nopriv_{$actionName}", array($className, 'boot'));
|
66 |
}
|
@@ -73,17 +80,17 @@ abstract class SPDSGVOAjaxAction{
|
|
73 |
public static function getClassName(){
|
74 |
return get_called_class();
|
75 |
}
|
76 |
-
|
77 |
public static function formURL(){
|
78 |
return admin_url('/admin-ajax.php');
|
79 |
}
|
80 |
|
81 |
public static function getActionName(){
|
82 |
-
|
83 |
$reflection = new ReflectionClass($class);
|
84 |
$action = $reflection->newInstanceWithoutConstructor();
|
85 |
if(!isset($action->action)){
|
86 |
-
throw new Exception("Public property \$action not provied");
|
87 |
}
|
88 |
return $action->action;
|
89 |
}
|
@@ -147,9 +154,8 @@ abstract class SPDSGVOAjaxAction{
|
|
147 |
}
|
148 |
|
149 |
public static function url($params = array()){
|
150 |
-
$classInstance = new static();
|
151 |
$params = http_build_query(array_merge(array(
|
152 |
-
|
153 |
), $params));
|
154 |
|
155 |
return admin_url('/admin-ajax.php') .'?'. $params;
|
@@ -190,7 +196,7 @@ abstract class SPDSGVOAjaxAction{
|
|
190 |
|
191 |
public function returnBack(){
|
192 |
if(isset($_SERVER['HTTP_REFERER'])){
|
193 |
-
header('Location: '. $_SERVER['HTTP_REFERER']);
|
194 |
die();
|
195 |
}
|
196 |
|
32 |
protected $action;
|
33 |
public $request;
|
34 |
public $user;
|
35 |
+
|
36 |
abstract protected function run();
|
37 |
|
38 |
+
public function __construct(){
|
39 |
$this->request = $_REQUEST;
|
40 |
if($this->isLoggedIn()){
|
41 |
$this->user = wp_get_current_user();
|
42 |
}
|
43 |
}
|
44 |
|
45 |
+
public function boot(){
|
46 |
+
$class = self::getClassName();
|
47 |
$action = new $class;
|
48 |
$action->run();
|
49 |
|
50 |
if($action->has('href')){
|
51 |
wp_redirect($action->get('href'));
|
52 |
}else{
|
53 |
+
if(isset($_SERVER['HTTP_REFERER'])) {
|
54 |
+
header('Location: '. $_SERVER['HTTP_REFERER']);
|
55 |
+
}
|
56 |
+
else
|
57 |
+
{
|
58 |
+
//it was not sent, perform your default actions here
|
59 |
+
}
|
60 |
+
|
61 |
}
|
62 |
+
|
63 |
die;
|
64 |
}
|
65 |
|
66 |
public static function listen($public = TRUE){
|
67 |
+
$actionName = self::getActionName();
|
68 |
+
$className = self::getClassName();
|
69 |
add_action("wp_ajax_{$actionName}", array($className, 'boot'));
|
70 |
+
|
71 |
if($public){
|
72 |
add_action("wp_ajax_nopriv_{$actionName}", array($className, 'boot'));
|
73 |
}
|
80 |
public static function getClassName(){
|
81 |
return get_called_class();
|
82 |
}
|
83 |
+
|
84 |
public static function formURL(){
|
85 |
return admin_url('/admin-ajax.php');
|
86 |
}
|
87 |
|
88 |
public static function getActionName(){
|
89 |
+
$class = self::getClassName();
|
90 |
$reflection = new ReflectionClass($class);
|
91 |
$action = $reflection->newInstanceWithoutConstructor();
|
92 |
if(!isset($action->action)){
|
93 |
+
throw new Exception(__("Public property \$action not provied", 'shapepress-dsgvo'));
|
94 |
}
|
95 |
return $action->action;
|
96 |
}
|
154 |
}
|
155 |
|
156 |
public static function url($params = array()){
|
|
|
157 |
$params = http_build_query(array_merge(array(
|
158 |
+
'action' => (new static())->action,
|
159 |
), $params));
|
160 |
|
161 |
return admin_url('/admin-ajax.php') .'?'. $params;
|
196 |
|
197 |
public function returnBack(){
|
198 |
if(isset($_SERVER['HTTP_REFERER'])){
|
199 |
+
header('Location: '. $_SERVER['HTTP_REFERER']);
|
200 |
die();
|
201 |
}
|
202 |
|
includes/class-sp-dsgvo-cron.php
CHANGED
@@ -8,7 +8,7 @@ Class SPDSGVOCron{
|
|
8 |
return 'wp_cron__'. strtolower($class);
|
9 |
}
|
10 |
|
11 |
-
public function schedule(){
|
12 |
return 'schedule_'. $this->slug();
|
13 |
}
|
14 |
|
@@ -63,7 +63,7 @@ Class SPDSGVOCron{
|
|
63 |
if(!in_array($this->schedule(), array_keys($schedules))){
|
64 |
$schedules[$this->schedule()] = array(
|
65 |
'interval' => $interval,
|
66 |
-
'display' => '
|
67 |
);
|
68 |
}
|
69 |
|
8 |
return 'wp_cron__'. strtolower($class);
|
9 |
}
|
10 |
|
11 |
+
public function schedule(){
|
12 |
return 'schedule_'. $this->slug();
|
13 |
}
|
14 |
|
63 |
if(!in_array($this->schedule(), array_keys($schedules))){
|
64 |
$schedules[$this->schedule()] = array(
|
65 |
'interval' => $interval,
|
66 |
+
'display' => __('All', 'shapepress-dsgvo') . ' '. floor($interval / 60) .' ' . __('Minutes', 'shapepress-dsgvo'),
|
67 |
);
|
68 |
}
|
69 |
|
includes/class-sp-dsgvo-data-collecter.php
CHANGED
@@ -1,437 +1,469 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Fired during plugin deactivation
|
5 |
-
*
|
6 |
-
* @link https://wp-dsgvo.eu
|
7 |
-
* @since 1.0.0
|
8 |
-
*
|
9 |
-
* @package WP DSGVO Tools
|
10 |
-
* @subpackage WP DSGVO Tools/includes
|
11 |
-
*/
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Fired during plugin deactivation.
|
15 |
-
*
|
16 |
-
* This class defines all code necessary to run during the plugin's deactivation.
|
17 |
-
*
|
18 |
-
* @since 1.0.0
|
19 |
-
* @package WP DSGVO Tools
|
20 |
-
* @subpackage WP DSGVO Tools/includes
|
21 |
-
* @author Shapepress eU
|
22 |
-
*/
|
23 |
-
class SPDSGVODataCollecter
|
24 |
-
{
|
25 |
-
|
26 |
-
public $email;
|
27 |
-
|
28 |
-
public $firstName;
|
29 |
-
|
30 |
-
public $lastName;
|
31 |
-
|
32 |
-
public $user = NULL;
|
33 |
-
|
34 |
-
public $totalFound = 0;
|
35 |
-
|
36 |
-
public $data = array();
|
37 |
-
|
38 |
-
public $identifiers = array();
|
39 |
-
|
40 |
-
public $tables = array();
|
41 |
-
|
42 |
-
public $sensativeKeys = array(
|
43 |
-
'company',
|
44 |
-
'country',
|
45 |
-
'county',
|
46 |
-
'city',
|
47 |
-
'state',
|
48 |
-
'address',
|
49 |
-
'first_name',
|
50 |
-
'last_name',
|
51 |
-
'zip',
|
52 |
-
'zip_code',
|
53 |
-
'post_code',
|
54 |
-
'postcode',
|
55 |
-
'email',
|
56 |
-
'phone',
|
57 |
-
'ip',
|
58 |
-
'ip_address'
|
59 |
-
);
|
60 |
-
|
61 |
-
public function __construct($email, $firstName = '', $lastName = '')
|
62 |
-
{
|
63 |
-
$this->email = $email;
|
64 |
-
|
65 |
-
if (! empty($firstName)) {
|
66 |
-
$this->addIdentifier($firstName, 'Name');
|
67 |
-
$this->firstName = $firstName;
|
68 |
-
}
|
69 |
-
|
70 |
-
if (! empty($lastName)) {
|
71 |
-
$this->addIdentifier($lastName, 'Name');
|
72 |
-
$this->lastName = $lastName;
|
73 |
-
}
|
74 |
-
|
75 |
-
$this->user = get_user_by('email', $this->email);
|
76 |
-
if (is_a($this->user, 'WP_User')) {
|
77 |
-
$this->addIdentifier($this->user->user_login, 'Login');
|
78 |
-
$this->addIdentifier($this->user->user_nicename, 'Name');
|
79 |
-
$this->addIdentifier($this->user->user_email, 'Email');
|
80 |
-
$this->addIdentifier($this->user->user_url, 'Url');
|
81 |
-
$this->addIdentifier($this->user->display_name, '
|
82 |
-
$this->addIdentifier(str_replace('www.', '', @parse_url($this->user->user_url)['host']), 'Url');
|
83 |
-
}
|
84 |
-
}
|
85 |
-
|
86 |
-
public function sar()
|
87 |
-
{
|
88 |
-
if (is_a($this->user, 'WP_User')) {
|
89 |
-
$this->crawlLocal();
|
90 |
-
}
|
91 |
-
{
|
92 |
-
$this->crawlLocal(); // both for now because it only crawls comments
|
93 |
-
}
|
94 |
-
|
95 |
-
$this->integrationsSAR();
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
)
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
}
|
141 |
-
|
142 |
-
// ====================================================
|
143 |
-
//
|
144 |
-
// ====================================================
|
145 |
-
$
|
146 |
-
|
147 |
-
));
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
$wpdb->get_results($wpdb->prepare("
|
238 |
UPDATE $wpdb->users
|
239 |
-
SET
|
240 |
user_login = %s,
|
241 |
user_email = %s
|
242 |
-
WHERE ID = {$this->user->ID}", 'deleted_user_' . wp_generate_password(10, FALSE, FALSE), 'deleted_user_' . wp_generate_password(10, FALSE, FALSE) . '@example.com'));
|
243 |
-
|
244 |
-
// ======================================================================
|
245 |
-
// WP_Comments
|
246 |
-
// ======================================================================
|
247 |
$wpdb->get_results($wpdb->prepare("
|
248 |
UPDATE $wpdb->comments
|
249 |
-
SET
|
250 |
comment_author = 'Deleted User',
|
251 |
comment_author_email = %s,
|
252 |
comment_author_url = '',
|
253 |
comment_author_IP = '000.000.000.00'
|
254 |
-
WHERE user_id = %d", $this->user->ID, 'deleted_user_' . wp_generate_password(10, FALSE, FALSE) . '@example.com'));
|
255 |
-
|
256 |
-
// ======================================================================
|
257 |
-
// WP_UserMeta
|
258 |
-
// ======================================================================
|
259 |
-
$meta = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d", $this->user->ID));
|
260 |
-
|
261 |
-
foreach ($meta as $row) {
|
262 |
-
if ($this->isSensativeKey($row->meta_key)) {
|
263 |
$wpdb->get_results($wpdb->prepare("
|
264 |
UPDATE $wpdb->usermeta
|
265 |
-
SET
|
266 |
meta_value = 'Deleted'
|
267 |
-
WHERE umeta_id = %d", $row->umeta_id));
|
268 |
-
}
|
269 |
-
}
|
270 |
-
}
|
271 |
-
|
272 |
-
public function superUnsubscribeIntegrations()
|
273 |
-
{
|
274 |
-
foreach (SPDSGVOIntegration::getAllIntegrations() as $integration) {
|
275 |
-
if (method_exists($integration, 'onSuperUnsubscribe')) {
|
276 |
-
try {
|
277 |
-
$integration->onSuperUnsubscribe($this->email, $this->firstName, $this->lastName, $this->user);
|
278 |
-
} catch (Exception $e) {}
|
279 |
-
}
|
280 |
-
}
|
281 |
-
}
|
282 |
-
|
283 |
-
// ======================================================================
|
284 |
-
// Helpers
|
285 |
-
// ======================================================================
|
286 |
-
public function addIdentifier($identifier, $type)
|
287 |
-
{
|
288 |
-
$identifier = strtolower($identifier);
|
289 |
-
|
290 |
-
if (empty($identifier)) {
|
291 |
-
return;
|
292 |
-
}
|
293 |
-
|
294 |
-
if (! in_array($identifier, $this->identifiers)) {
|
295 |
-
$this->identifiers[] = (object) [
|
296 |
-
'value' => $identifier,
|
297 |
-
'type' => $type
|
298 |
-
];
|
299 |
-
}
|
300 |
-
}
|
301 |
-
|
302 |
-
public function addData($data, $type = 'misc', $source = 'database')
|
303 |
-
{
|
304 |
-
// $data = strtolower($data);
|
305 |
-
if (empty($data)) {
|
306 |
-
return;
|
307 |
-
}
|
308 |
-
if ($data === '::1') {
|
309 |
-
return;
|
310 |
-
}
|
311 |
-
|
312 |
-
foreach ($this->data as $d) {
|
313 |
-
if ($d->data === $data) {
|
314 |
-
return;
|
315 |
-
}
|
316 |
-
}
|
317 |
-
|
318 |
-
if ($type === 'misc') {
|
319 |
-
$type = $this->guessDataType($data);
|
320 |
-
$type = ($type === FALSE) ? 'misc' : $type;
|
321 |
-
}
|
322 |
-
|
323 |
-
$this->data[] = (object) array(
|
324 |
-
'data' => $data,
|
325 |
-
'type' => $type,
|
326 |
-
'source' => $source
|
327 |
-
);
|
328 |
-
$this->totalFound ++;
|
329 |
-
}
|
330 |
-
|
331 |
-
public function guessDataType($data)
|
332 |
-
{
|
333 |
-
$dataToCheck = strtolower($data);
|
334 |
-
|
335 |
-
// IP Addresses
|
336 |
-
preg_match_all('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $dataToCheck, $IPAddresses);
|
337 |
-
foreach ($IPAddresses[0] as $ip) {
|
338 |
-
return '
|
339 |
-
}
|
340 |
-
|
341 |
-
// Email
|
342 |
-
preg_match_all('/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $dataToCheck, $emailAdresses);
|
343 |
-
foreach ($emailAdresses[0] as $emailAddress) {
|
344 |
-
return '
|
345 |
-
}
|
346 |
-
|
347 |
-
// Post Code
|
348 |
-
preg_match_all('/((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))/i', $dataToCheck, $postCodes);
|
349 |
-
foreach ($postCodes[0] as $postCode) {
|
350 |
-
return '
|
351 |
-
}
|
352 |
-
|
353 |
-
// Phone Number
|
354 |
-
preg_match_all('/^[().+\d -]{5,15}$/', $dataToCheck, $phoneNumbers);
|
355 |
-
foreach ($phoneNumbers[0] as $phoneNumber) {
|
356 |
-
if (strlen($phoneNumber) >= 7) {
|
357 |
-
return '
|
358 |
-
}
|
359 |
-
}
|
360 |
-
|
361 |
-
// URLs
|
362 |
-
preg_match_all('#[-a-zA-Z0-9@:%_\+.~\#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~\#?&//=]*)?#si', $dataToCheck, $URLs);
|
363 |
-
foreach ($URLs[0] as $url) {
|
364 |
-
if (! empty($url)) {
|
365 |
-
if (strpos($url, @parse_url($url)['host']) === FALSE) {
|
366 |
-
if (filter_var($url, FILTER_VALIDATE_URL)) {
|
367 |
-
return '
|
368 |
-
}
|
369 |
-
}
|
370 |
-
}
|
371 |
-
}
|
372 |
-
|
373 |
-
// Address
|
374 |
-
if (strpos($dataToCheck, 'road') !== FALSE || strpos($dataToCheck, 'street') !== FALSE) {
|
375 |
-
return '
|
376 |
-
}
|
377 |
-
|
378 |
-
foreach ($this->identifiers as $key => $identifier) {
|
379 |
-
if ($identifier->value == $dataToCheck) {
|
380 |
-
return $identifier->type;
|
381 |
-
}
|
382 |
-
}
|
383 |
-
|
384 |
-
return false;
|
385 |
-
}
|
386 |
-
|
387 |
-
public function getData()
|
388 |
-
{
|
389 |
-
$done = array();
|
390 |
-
$data = array();
|
391 |
-
|
392 |
-
foreach ($this->data as $d) {
|
393 |
-
if (! in_array($d->data, $done)) {
|
394 |
-
$done[] = $d->data;
|
395 |
-
$data[] = $d;
|
396 |
-
}
|
397 |
-
}
|
398 |
-
|
399 |
-
return $data;
|
400 |
-
}
|
401 |
-
|
402 |
-
public function getDataByType()
|
403 |
-
{
|
404 |
-
$done = array();
|
405 |
-
$data = array();
|
406 |
-
|
407 |
-
foreach ($this->data as $d) {
|
408 |
-
if (! in_array($d->data, $done)) {
|
409 |
-
$done[] = $d->data;
|
410 |
-
|
411 |
-
if (! isset($data[$d->type])) {
|
412 |
-
$data[$d->type] = array();
|
413 |
-
}
|
414 |
-
|
415 |
-
$data[$d->type][] = $d;
|
416 |
-
}
|
417 |
-
}
|
418 |
-
|
419 |
-
return $data;
|
420 |
-
}
|
421 |
-
|
422 |
-
public function isSensativeKey($key)
|
423 |
-
{
|
424 |
-
return (str_replace($this->sensativeKeys, '', $key) !== $key);
|
425 |
-
}
|
426 |
-
|
427 |
-
public function searchStringForKnownIdentifiers($string)
|
428 |
-
{
|
429 |
-
$identifiers = array_unique($this->identifiers);
|
430 |
-
|
431 |
-
foreach ($identifiers as $identifier) {
|
432 |
-
if (strpos($string, $identifier) !== FALSE) {
|
433 |
-
$this->addData($string);
|
434 |
-
}
|
435 |
-
}
|
436 |
-
}
|
437 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Fired during plugin deactivation
|
5 |
+
*
|
6 |
+
* @link https://wp-dsgvo.eu
|
7 |
+
* @since 1.0.0
|
8 |
+
*
|
9 |
+
* @package WP DSGVO Tools
|
10 |
+
* @subpackage WP DSGVO Tools/includes
|
11 |
+
*/
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Fired during plugin deactivation.
|
15 |
+
*
|
16 |
+
* This class defines all code necessary to run during the plugin's deactivation.
|
17 |
+
*
|
18 |
+
* @since 1.0.0
|
19 |
+
* @package WP DSGVO Tools
|
20 |
+
* @subpackage WP DSGVO Tools/includes
|
21 |
+
* @author Shapepress eU
|
22 |
+
*/
|
23 |
+
class SPDSGVODataCollecter
|
24 |
+
{
|
25 |
+
|
26 |
+
public $email;
|
27 |
+
|
28 |
+
public $firstName;
|
29 |
+
|
30 |
+
public $lastName;
|
31 |
+
|
32 |
+
public $user = NULL;
|
33 |
+
|
34 |
+
public $totalFound = 0;
|
35 |
+
|
36 |
+
public $data = array();
|
37 |
+
|
38 |
+
public $identifiers = array();
|
39 |
+
|
40 |
+
public $tables = array();
|
41 |
+
|
42 |
+
public $sensativeKeys = array(
|
43 |
+
'company',
|
44 |
+
'country',
|
45 |
+
'county',
|
46 |
+
'city',
|
47 |
+
'state',
|
48 |
+
'address',
|
49 |
+
'first_name',
|
50 |
+
'last_name',
|
51 |
+
'zip',
|
52 |
+
'zip_code',
|
53 |
+
'post_code',
|
54 |
+
'postcode',
|
55 |
+
'email',
|
56 |
+
'phone',
|
57 |
+
'ip',
|
58 |
+
'ip_address'
|
59 |
+
);
|
60 |
+
|
61 |
+
public function __construct($email, $firstName = '', $lastName = '')
|
62 |
+
{
|
63 |
+
$this->email = $email;
|
64 |
+
|
65 |
+
if (! empty($firstName)) {
|
66 |
+
$this->addIdentifier($firstName, __('Name','shapepress-dsgvo'));
|
67 |
+
$this->firstName = $firstName;
|
68 |
+
}
|
69 |
+
|
70 |
+
if (! empty($lastName)) {
|
71 |
+
$this->addIdentifier($lastName, __('Name','shapepress-dsgvo'));
|
72 |
+
$this->lastName = $lastName;
|
73 |
+
}
|
74 |
+
|
75 |
+
$this->user = get_user_by('email', $this->email);
|
76 |
+
if (is_a($this->user, 'WP_User')) {
|
77 |
+
$this->addIdentifier($this->user->user_login, __('Login','shapepress-dsgvo'));
|
78 |
+
$this->addIdentifier($this->user->user_nicename, __('Name','shapepress-dsgvo'));
|
79 |
+
$this->addIdentifier($this->user->user_email, __('Email','shapepress-dsgvo'));
|
80 |
+
$this->addIdentifier($this->user->user_url, __('Url','shapepress-dsgvo'));
|
81 |
+
$this->addIdentifier($this->user->display_name, __('Display Name','shapepress-dsgvo'));
|
82 |
+
$this->addIdentifier(str_replace('www.', '', @parse_url($this->user->user_url)['host']), __('Url','shapepress-dsgvo'));
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
public function sar()
|
87 |
+
{
|
88 |
+
if (is_a($this->user, 'WP_User')) {
|
89 |
+
$this->crawlLocal();
|
90 |
+
}else
|
91 |
+
{
|
92 |
+
$this->crawlLocal(); // both for now because it only crawls comments
|
93 |
+
}
|
94 |
+
|
95 |
+
$this->integrationsSAR();
|
96 |
+
|
97 |
+
if (isValidPremiumEdition())
|
98 |
+
{
|
99 |
+
try {
|
100 |
+
$customData = apply_filters('spdsgvo_custom_sar', $this->email);
|
101 |
+
|
102 |
+
//error_log('custom filter result. '.$customData);
|
103 |
+
if ($customData === $this->email) $customData = NULL;
|
104 |
+
if ($customData)
|
105 |
+
{
|
106 |
+
foreach ($customData as $data) {
|
107 |
+
$this->addData($data, __('Advanced', 'shapepress-dsgvo'), 'spdsgvo_custom_sar');
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
} catch (Exception $e) {
|
112 |
+
error_log($e);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
return $this->getData();
|
117 |
+
}
|
118 |
+
|
119 |
+
public function crawlLocal()
|
120 |
+
{
|
121 |
+
global $wpdb;
|
122 |
+
|
123 |
+
if (! is_a($this->user, 'WP_User')) {
|
124 |
+
|
125 |
+
// search public comments and then return
|
126 |
+
|
127 |
+
$comments = get_comments(array(
|
128 |
+
'author_email' => $this->email,
|
129 |
+
'type' => ''
|
130 |
+
));
|
131 |
+
foreach ($comments as $comment) {
|
132 |
+
$this->addData($comment->comment_author, __('Name','shapepress-dsgvo'));
|
133 |
+
$this->addData($comment->comment_author_email, __('Email','shapepress-dsgvo'));
|
134 |
+
$this->addData($comment->comment_author_url, __('Url','shapepress-dsgvo'));
|
135 |
+
$this->addData($comment->comment_author_IP, __('IP Address','shapepress-dsgvo'));
|
136 |
+
$this->addData($comment->comment_content, __('Comment','shapepress-dsgvo'));
|
137 |
+
}
|
138 |
+
|
139 |
+
return;
|
140 |
+
}
|
141 |
+
|
142 |
+
// ====================================================
|
143 |
+
// WP_User
|
144 |
+
// ====================================================
|
145 |
+
$this->addData($this->user->user_login, __('User name','shapepress-dsgvo'));
|
146 |
+
$this->addData($this->user->user_nicename, __('Name','shapepress-dsgvo'));
|
147 |
+
$this->addData($this->user->user_url, __('Url','shapepress-dsgvo'));
|
148 |
+
$this->addData($this->user->display_name, __('Display name','shapepress-dsgvo'));
|
149 |
+
|
150 |
+
// ====================================================
|
151 |
+
// WP_Usermeta
|
152 |
+
// ====================================================
|
153 |
+
foreach (get_user_meta($this->user->ID) as $key => $meta) {
|
154 |
+
if ($this->isSensativeKey($key)) {
|
155 |
+
foreach ($meta as $metaValue) {
|
156 |
+
$this->addData($metaValue);
|
157 |
+
}
|
158 |
+
}
|
159 |
+
}
|
160 |
+
|
161 |
+
// ====================================================
|
162 |
+
// WP_Comments
|
163 |
+
// ====================================================
|
164 |
+
$comments = get_comments(array(
|
165 |
+
'user_id' => $this->user->ID
|
166 |
+
));
|
167 |
+
//error_log('comments1: '.implode(', ',$comments));
|
168 |
+
foreach ($comments as $comment) {
|
169 |
+
$this->addData($comment->comment_author, __('Name','shapepress-dsgvo'));
|
170 |
+
$this->addData($comment->comment_author_email, __('Email','shapepress-dsgvo'));
|
171 |
+
$this->addData($comment->comment_author_url, __('Url','shapepress-dsgvo'));
|
172 |
+
$this->addData($comment->comment_author_IP, __('IP Address','shapepress-dsgvo'));
|
173 |
+
$this->addData($comment->comment_content, __('Comment','shapepress-dsgvo'));
|
174 |
+
}
|
175 |
+
|
176 |
+
|
177 |
+
}
|
178 |
+
|
179 |
+
public function integrationsSAR()
|
180 |
+
{
|
181 |
+
foreach (SPDSGVOIntegration::getAllIntegrations() as $integration) {
|
182 |
+
if (method_exists($integration, 'onSubjectAccessRequest')) {
|
183 |
+
try {
|
184 |
+
$data = $integration->onSubjectAccessRequest($this->email, $this->firstName, $this->lastName, $this->user);
|
185 |
+
if (is_array($data)) {
|
186 |
+
foreach ($data as $value) {
|
187 |
+
if (is_string($value)) {
|
188 |
+
$this->addData($value, $integration->title, $integration->name);
|
189 |
+
} else if (is_array($value)) {
|
190 |
+
foreach ($value as $valueItem) {
|
191 |
+
if (is_string($valueItem)) {
|
192 |
+
$this->addData($valueItem, $integration->title, $integration->name);
|
193 |
+
}
|
194 |
+
}
|
195 |
+
}
|
196 |
+
}
|
197 |
+
}
|
198 |
+
} catch (Exception $e) {}
|
199 |
+
}
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
public function superUnsubscribe()
|
204 |
+
{
|
205 |
+
$this->user = get_user_by('email', $this->email);
|
206 |
+
|
207 |
+
if (is_a($this->user, 'WP_User')) {
|
208 |
+
$this->superUnsubscribeLocal();
|
209 |
+
} else
|
210 |
+
{
|
211 |
+
$this->superUnsubscribeLocal();
|
212 |
+
}
|
213 |
+
|
214 |
+
if (isValidPremiumEdition())
|
215 |
+
{
|
216 |
+
try {
|
217 |
+
apply_filters('spdsgvo_custom_unsubscribe', $this->email);
|
218 |
+
|
219 |
+
} catch (Exception $e) {
|
220 |
+
error_log($e);
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
$this->superUnsubscribeIntegrations();
|
225 |
+
}
|
226 |
+
|
227 |
+
public function superUnsubscribeLocal()
|
228 |
+
{
|
229 |
+
global $wpdb;
|
230 |
+
|
231 |
+
if (! is_a($this->user, 'WP_User')) { // only do commments for not registered ones
|
232 |
+
|
233 |
+
// ======================================================================
|
234 |
+
// WP_Comments
|
235 |
+
// ======================================================================
|
236 |
+
error_log('not a user '.$this->email);
|
237 |
+
$wpdb->get_results($wpdb->prepare("
|
238 |
+
UPDATE $wpdb->comments
|
239 |
+
SET
|
240 |
+
comment_author = 'Deleted User',
|
241 |
+
comment_author_email = %s,
|
242 |
+
comment_author_url = '',
|
243 |
+
comment_author_IP = '000.000.000.00'
|
244 |
+
WHERE comment_author_email = '". $this->email ."'", 'deleted_user_' . wp_generate_password(10, FALSE, FALSE) . '@example.com'));
|
245 |
+
|
246 |
+
|
247 |
+
return;
|
248 |
+
}
|
249 |
+
|
250 |
+
$userID = wp_update_user(array(
|
251 |
+
'ID' => $this->user->ID,
|
252 |
+
'user_pass' => wp_generate_password(),
|
253 |
+
'user_nicename' => 'Deleted User',
|
254 |
+
'user_url' => '',
|
255 |
+
'display_name' => 'Deleted User',
|
256 |
+
'nickname' => 'Deleted User',
|
257 |
+
'first_name' => 'Deleted',
|
258 |
+
'last_name' => 'User',
|
259 |
+
'description' => '',
|
260 |
+
'rich_editing' => '',
|
261 |
+
'user_registered' => '',
|
262 |
+
'role' => '',
|
263 |
+
'jabber' => '',
|
264 |
+
'aim' => '',
|
265 |
+
'yim' => '',
|
266 |
+
'show_admin_bar_front' => ''
|
267 |
+
));
|
268 |
+
|
269 |
$wpdb->get_results($wpdb->prepare("
|
270 |
UPDATE $wpdb->users
|
271 |
+
SET
|
272 |
user_login = %s,
|
273 |
user_email = %s
|
274 |
+
WHERE ID = {$this->user->ID}", 'deleted_user_' . wp_generate_password(10, FALSE, FALSE), 'deleted_user_' . wp_generate_password(10, FALSE, FALSE) . '@example.com'));
|
275 |
+
|
276 |
+
// ======================================================================
|
277 |
+
// WP_Comments
|
278 |
+
// ======================================================================
|
279 |
$wpdb->get_results($wpdb->prepare("
|
280 |
UPDATE $wpdb->comments
|
281 |
+
SET
|
282 |
comment_author = 'Deleted User',
|
283 |
comment_author_email = %s,
|
284 |
comment_author_url = '',
|
285 |
comment_author_IP = '000.000.000.00'
|
286 |
+
WHERE user_id = %d", $this->user->ID, 'deleted_user_' . wp_generate_password(10, FALSE, FALSE) . '@example.com'));
|
287 |
+
|
288 |
+
// ======================================================================
|
289 |
+
// WP_UserMeta
|
290 |
+
// ======================================================================
|
291 |
+
$meta = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d", $this->user->ID));
|
292 |
+
|
293 |
+
foreach ($meta as $row) {
|
294 |
+
if ($this->isSensativeKey($row->meta_key)) {
|
295 |
$wpdb->get_results($wpdb->prepare("
|
296 |
UPDATE $wpdb->usermeta
|
297 |
+
SET
|
298 |
meta_value = 'Deleted'
|
299 |
+
WHERE umeta_id = %d", $row->umeta_id));
|
300 |
+
}
|
301 |
+
}
|
302 |
+
}
|
303 |
+
|
304 |
+
public function superUnsubscribeIntegrations()
|
305 |
+
{
|
306 |
+
foreach (SPDSGVOIntegration::getAllIntegrations() as $integration) {
|
307 |
+
if (method_exists($integration, 'onSuperUnsubscribe')) {
|
308 |
+
try {
|
309 |
+
$integration->onSuperUnsubscribe($this->email, $this->firstName, $this->lastName, $this->user);
|
310 |
+
} catch (Exception $e) {}
|
311 |
+
}
|
312 |
+
}
|
313 |
+
}
|
314 |
+
|
315 |
+
// ======================================================================
|
316 |
+
// Helpers
|
317 |
+
// ======================================================================
|
318 |
+
public function addIdentifier($identifier, $type)
|
319 |
+
{
|
320 |
+
$identifier = strtolower($identifier);
|
321 |
+
|
322 |
+
if (empty($identifier)) {
|
323 |
+
return;
|
324 |
+
}
|
325 |
+
|
326 |
+
if (! in_array($identifier, $this->identifiers)) {
|
327 |
+
$this->identifiers[] = (object) [
|
328 |
+
'value' => $identifier,
|
329 |
+
'type' => $type
|
330 |
+
];
|
331 |
+
}
|
332 |
+
}
|
333 |
+
|
334 |
+
public function addData($data, $type = 'misc', $source = 'database')
|
335 |
+
{
|
336 |
+
// $data = strtolower($data);
|
337 |
+
if (empty($data)) {
|
338 |
+
return;
|
339 |
+
}
|
340 |
+
if ($data === '::1') {
|
341 |
+
return;
|
342 |
+
}
|
343 |
+
|
344 |
+
foreach ($this->data as $d) {
|
345 |
+
if ($d->data === $data) {
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
if ($type === 'misc') {
|
351 |
+
$type = $this->guessDataType($data);
|
352 |
+
$type = ($type === FALSE) ? 'misc' : $type;
|
353 |
+
}
|
354 |
+
|
355 |
+
$this->data[] = (object) array(
|
356 |
+
'data' => $data,
|
357 |
+
'type' => $type,
|
358 |
+
'source' => $source
|
359 |
+
);
|
360 |
+
$this->totalFound ++;
|
361 |
+
}
|
362 |
+
|
363 |
+
public function guessDataType($data)
|
364 |
+
{
|
365 |
+
$dataToCheck = strtolower($data);
|
366 |
+
|
367 |
+
// IP Addresses
|
368 |
+
preg_match_all('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $dataToCheck, $IPAddresses);
|
369 |
+
foreach ($IPAddresses[0] as $ip) {
|
370 |
+
return 'IP';
|
371 |
+
}
|
372 |
+
|
373 |
+
// Email
|
374 |
+
preg_match_all('/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $dataToCheck, $emailAdresses);
|
375 |
+
foreach ($emailAdresses[0] as $emailAddress) {
|
376 |
+
return __('Email','shapepress-dsgvo');
|
377 |
+
}
|
378 |
+
|
379 |
+
// Post Code
|
380 |
+
preg_match_all('/((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))/i', $dataToCheck, $postCodes);
|
381 |
+
foreach ($postCodes[0] as $postCode) {
|
382 |
+
return __('ZIP Code','shapepress-dsgvo');
|
383 |
+
}
|
384 |
+
|
385 |
+
// Phone Number
|
386 |
+
preg_match_all('/^[().+\d -]{5,15}$/', $dataToCheck, $phoneNumbers);
|
387 |
+
foreach ($phoneNumbers[0] as $phoneNumber) {
|
388 |
+
if (strlen($phoneNumber) >= 7) {
|
389 |
+
return __('Phone number','shapepress-dsgvo');
|
390 |
+
}
|
391 |
+
}
|
392 |
+
|
393 |
+
// URLs
|
394 |
+
preg_match_all('#[-a-zA-Z0-9@:%_\+.~\#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~\#?&//=]*)?#si', $dataToCheck, $URLs);
|
395 |
+
foreach ($URLs[0] as $url) {
|
396 |
+
if (! empty($url)) {
|
397 |
+
if (strpos($url, @parse_url($url)['host']) === FALSE) {
|
398 |
+
if (filter_var($url, FILTER_VALIDATE_URL)) {
|
399 |
+
return __('Url','shapepress-dsgvo');
|
400 |
+
}
|
401 |
+
}
|
402 |
+
}
|
403 |
+
}
|
404 |
+
|
405 |
+
// Address
|
406 |
+
if (strpos($dataToCheck, 'road') !== FALSE || strpos($dataToCheck, 'street') !== FALSE) {
|
407 |
+
return __('Address','shapepress-dsgvo');
|
408 |
+
}
|
409 |
+
|
410 |
+
foreach ($this->identifiers as $key => $identifier) {
|
411 |
+
if ($identifier->value == $dataToCheck) {
|
412 |
+
return $identifier->type;
|
413 |
+
}
|
414 |
+
}
|
415 |
+
|
416 |
+
return false;
|
417 |
+
}
|
418 |
+
|
419 |
+
public function getData()
|
420 |
+
{
|
421 |
+
$done = array();
|
422 |
+
$data = array();
|
423 |
+
|
424 |
+
foreach ($this->data as $d) {
|
425 |
+
if (! in_array($d->data, $done)) {
|
426 |
+
$done[] = $d->data;
|
427 |
+
$data[] = $d;
|
428 |
+
}
|
429 |
+
}
|
430 |
+
|
431 |
+
return $data;
|
432 |
+
}
|
433 |
+
|
434 |
+
public function getDataByType()
|
435 |
+
{
|
436 |
+
$done = array();
|
437 |
+
$data = array();
|
438 |
+
|
439 |
+
foreach ($this->data as $d) {
|
440 |
+
if (! in_array($d->data, $done)) {
|
441 |
+
$done[] = $d->data;
|
442 |
+
|
443 |
+
if (! isset($data[$d->type])) {
|
444 |
+
$data[$d->type] = array();
|
445 |
+
}
|
446 |
+
|
447 |
+
$data[$d->type][] = $d;
|
448 |
+
}
|
449 |
+
}
|
450 |
+
|
451 |
+
return $data;
|
452 |
+
}
|
453 |
+
|
454 |
+
public function isSensativeKey($key)
|
455 |
+
{
|
456 |
+
return (str_replace($this->sensativeKeys, '', $key) !== $key);
|
457 |
+
}
|
458 |
+
|
459 |
+
public function searchStringForKnownIdentifiers($string)
|
460 |
+
{
|
461 |
+
$identifiers = array_unique($this->identifiers);
|
462 |
+
|
463 |
+
foreach ($identifiers as $identifier) {
|
464 |
+
if (strpos($string, $identifier) !== FALSE) {
|
465 |
+
$this->addData($string);
|
466 |
+
}
|
467 |
+
}
|
468 |
+
}
|
469 |
+
}
|
includes/class-sp-dsgvo-log.php
CHANGED
@@ -1,57 +1,57 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Post Model for Logs
|
5 |
-
*
|
6 |
-
* @link http://example.com
|
7 |
-
* @since 1.0.0
|
8 |
-
*
|
9 |
-
* @package WP DSGVO Tools
|
10 |
-
* @subpackage WP DSGVO Tools/includes
|
11 |
-
*/
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Post Model for Logs
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
* @package WP DSGVO Tools
|
18 |
-
* @subpackage WP DSGVO Tools/includes
|
19 |
-
* @author Shapepress eU
|
20 |
-
*/
|
21 |
-
class SPDSGVOLog
|
22 |
-
{
|
23 |
-
|
24 |
-
public static $tableName = 'sp_dsgvo_logs';
|
25 |
-
|
26 |
-
public $ID;
|
27 |
-
|
28 |
-
public $date;
|
29 |
-
|
30 |
-
public $content;
|
31 |
-
|
32 |
-
public function __construct($content = '')
|
33 |
-
{
|
34 |
-
$this->content = $content;
|
35 |
-
$this->date = date("Y-m-d H:i:s");
|
36 |
-
}
|
37 |
-
|
38 |
-
public function boot()
|
39 |
-
{
|
40 |
-
global $wpdb;
|
41 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
42 |
-
$result = $wpdb->get_results("SELECT * from {$tableName} WHERE `ID` = {$this->ID}");
|
43 |
-
|
44 |
-
if (isset($result[0]->log_content)) {
|
45 |
-
$this->date = $result[0]->log_date;
|
46 |
-
$this->content = $result[0]->log_content;
|
47 |
-
}
|
48 |
-
}
|
49 |
-
|
50 |
-
public static function migrate()
|
51 |
-
{
|
52 |
-
global $wpdb;
|
53 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
54 |
-
|
55 |
$wpdb->get_var("
|
56 |
CREATE TABLE `{$tableName}` (
|
57 |
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
@@ -59,73 +59,73 @@ class SPDSGVOLog
|
|
59 |
`log_content` longtext NOT NULL,
|
60 |
PRIMARY KEY (`ID`)
|
61 |
)
|
62 |
-
");
|
63 |
-
|
64 |
-
$error = $wpdb->last_error;
|
65 |
-
return ($error) ? $error : TRUE;
|
66 |
-
}
|
67 |
-
|
68 |
-
public static function tableExists()
|
69 |
-
{
|
70 |
-
global $wpdb;
|
71 |
-
|
72 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
73 |
-
|
74 |
-
return $wpdb->get_var("SHOW TABLES LIKE '$tableName'") == $tableName;
|
75 |
-
}
|
76 |
-
|
77 |
-
public static function insert($content)
|
78 |
-
{
|
79 |
-
$log = new self($content);
|
80 |
-
$log->save();
|
81 |
-
return $log;
|
82 |
-
}
|
83 |
-
|
84 |
-
public static function find($ID)
|
85 |
-
{
|
86 |
-
$log = new self();
|
87 |
-
$log->ID = $ID;
|
88 |
-
$log->boot();
|
89 |
-
return $log;
|
90 |
-
}
|
91 |
-
|
92 |
-
public static function all()
|
93 |
-
{
|
94 |
-
global $wpdb;
|
95 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
96 |
-
|
97 |
-
$result = $wpdb->get_results("SELECT * FROM {$tableName} ORDER BY ID DESC");
|
98 |
-
|
99 |
-
$logs = array();
|
100 |
-
foreach ($result as $key => $row) {
|
101 |
-
array_push($logs, self::find($row->ID));
|
102 |
-
}
|
103 |
-
|
104 |
-
return $logs;
|
105 |
-
}
|
106 |
-
|
107 |
-
public static function mostRecent($limit = 15)
|
108 |
-
{
|
109 |
-
global $wpdb;
|
110 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
111 |
-
|
112 |
-
$result = $wpdb->get_results("SELECT * FROM {$tableName} ORDER BY ID DESC LIMIT {$limit}");
|
113 |
-
|
114 |
-
$logs = array();
|
115 |
-
foreach ($result as $key => $row) {
|
116 |
-
array_push($logs, self::find($row->ID));
|
117 |
-
}
|
118 |
-
|
119 |
-
return $logs;
|
120 |
-
}
|
121 |
-
|
122 |
-
public function save()
|
123 |
-
{
|
124 |
-
global $wpdb;
|
125 |
-
$tableName = $wpdb->prefix . self::$tableName;
|
126 |
-
|
127 |
$wpdb->get_results("
|
128 |
INSERT INTO {$tableName} (log_date, log_content) VALUES('{$this->date}', '$this->content')
|
129 |
-
");
|
130 |
-
}
|
131 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Post Model for Logs
|
5 |
+
*
|
6 |
+
* @link http://example.com
|
7 |
+
* @since 1.0.0
|
8 |
+
*
|
9 |
+
* @package WP DSGVO Tools
|
10 |
+
* @subpackage WP DSGVO Tools/includes
|
11 |
+
*/
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Post Model for Logs
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
* @package WP DSGVO Tools
|
18 |
+
* @subpackage WP DSGVO Tools/includes
|
19 |
+
* @author Shapepress eU
|
20 |
+
*/
|
21 |
+
class SPDSGVOLog
|
22 |
+
{
|
23 |
+
|
24 |
+
public static $tableName = 'sp_dsgvo_logs';
|
25 |
+
|
26 |
+
public $ID;
|
27 |
+
|
28 |
+
public $date;
|
29 |
+
|
30 |
+
public $content;
|
31 |
+
|
32 |
+
public function __construct($content = '')
|
33 |
+
{
|
34 |
+
$this->content = $content;
|
35 |
+
$this->date = date("Y-m-d H:i:s");
|
36 |
+
}
|
37 |
+
|
38 |
+
public function boot()
|
39 |
+
{
|
40 |
+
global $wpdb;
|
41 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
42 |
+
$result = $wpdb->get_results("SELECT * from {$tableName} WHERE `ID` = {$this->ID}");
|
43 |
+
|
44 |
+
if (isset($result[0]->log_content)) {
|
45 |
+
$this->date = $result[0]->log_date;
|
46 |
+
$this->content = $result[0]->log_content;
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
public static function migrate()
|
51 |
+
{
|
52 |
+
global $wpdb;
|
53 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
54 |
+
|
55 |
$wpdb->get_var("
|
56 |
CREATE TABLE `{$tableName}` (
|
57 |
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
59 |
`log_content` longtext NOT NULL,
|
60 |
PRIMARY KEY (`ID`)
|
61 |
)
|
62 |
+
");
|
63 |
+
|
64 |
+
$error = $wpdb->last_error;
|
65 |
+
return ($error) ? $error : TRUE;
|
66 |
+
}
|
67 |
+
|
68 |
+
public static function tableExists()
|
69 |
+
{
|
70 |
+
global $wpdb;
|
71 |
+
|
72 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
73 |
+
|
74 |
+
return $wpdb->get_var("SHOW TABLES LIKE '$tableName'") == $tableName;
|
75 |
+
}
|
76 |
+
|
77 |
+
public static function insert($content)
|
78 |
+
{
|
79 |
+
$log = new self($content);
|
80 |
+
$log->save();
|
81 |
+
return $log;
|
82 |
+
}
|
83 |
+
|
84 |
+
public static function find($ID)
|
85 |
+
{
|
86 |
+
$log = new self();
|
87 |
+
$log->ID = $ID;
|
88 |
+
$log->boot();
|
89 |
+
return $log;
|
90 |
+
}
|
91 |
+
|
92 |
+
public static function all()
|
93 |
+
{
|
94 |
+
global $wpdb;
|
95 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
96 |
+
|
97 |
+
$result = $wpdb->get_results("SELECT * FROM {$tableName} ORDER BY ID DESC");
|
98 |
+
|
99 |
+
$logs = array();
|
100 |
+
foreach ($result as $key => $row) {
|
101 |
+
array_push($logs, self::find($row->ID));
|
102 |
+
}
|
103 |
+
|
104 |
+
return $logs;
|
105 |
+
}
|
106 |
+
|
107 |
+
public static function mostRecent($limit = 15)
|
108 |
+
{
|
109 |
+
global $wpdb;
|
110 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
111 |
+
|
112 |
+
$result = $wpdb->get_results("SELECT * FROM {$tableName} ORDER BY ID DESC LIMIT {$limit}");
|
113 |
+
|
114 |
+
$logs = array();
|
115 |
+
foreach ($result as $key => $row) {
|
116 |
+
array_push($logs, self::find($row->ID));
|
117 |
+
}
|
118 |
+
|
119 |
+
return $logs;
|
120 |
+
}
|
121 |
+
|
122 |
+
public function save()
|
123 |
+
{
|
124 |
+
global $wpdb;
|
125 |
+
$tableName = $wpdb->prefix . self::$tableName;
|
126 |
+
|
127 |
$wpdb->get_results("
|
128 |
INSERT INTO {$tableName} (log_date, log_content) VALUES('{$this->date}', '$this->content')
|
129 |
+
");
|
130 |
+
}
|
131 |
}
|
includes/class-sp-dsgvo-mail.php
CHANGED
@@ -108,7 +108,7 @@ Class SPDSGVOMail
|
|
108 |
}
|
109 |
|
110 |
|
111 |
-
/**
|
112 |
* Set email Subject
|
113 |
* @param Srting $subject
|
114 |
* @return Object $this
|
@@ -138,7 +138,7 @@ Class SPDSGVOMail
|
|
138 |
return $this;
|
139 |
}
|
140 |
|
141 |
-
/**
|
142 |
* Set the email's headers
|
143 |
* @param String|Array $headers [description]
|
144 |
* @return Object $this
|
@@ -149,7 +149,7 @@ Class SPDSGVOMail
|
|
149 |
}else{
|
150 |
$this->headers = array($headers);
|
151 |
}
|
152 |
-
|
153 |
return $this;
|
154 |
}
|
155 |
|
@@ -172,7 +172,7 @@ Class SPDSGVOMail
|
|
172 |
}
|
173 |
|
174 |
|
175 |
-
/**
|
176 |
* Set email content type
|
177 |
* @param Bool $html
|
178 |
* @return Object $this
|
@@ -183,10 +183,10 @@ Class SPDSGVOMail
|
|
183 |
}
|
184 |
|
185 |
|
186 |
-
/**
|
187 |
* Attach a file or array of files.
|
188 |
* Filepaths must be absolute.
|
189 |
-
* @param String|Array $path
|
190 |
* @throws Exception
|
191 |
* @return Object $this
|
192 |
*/
|
@@ -195,14 +195,14 @@ Class SPDSGVOMail
|
|
195 |
$this->attachments = array();
|
196 |
foreach($path as $path_) {
|
197 |
if(!file_exists($path_)){
|
198 |
-
throw new Exception(
|
199 |
}else{
|
200 |
$this->attachments[] = $path_;
|
201 |
}
|
202 |
}
|
203 |
}else{
|
204 |
if(!file_exists($path)){
|
205 |
-
throw new Exception(
|
206 |
}
|
207 |
$this->attachments = array($path);
|
208 |
}
|
@@ -220,10 +220,10 @@ Class SPDSGVOMail
|
|
220 |
*/
|
221 |
public function beforeTemplate($template, $variables = NULL){
|
222 |
if(!file_exists($template)){
|
223 |
-
throw new Exception('Template file not found');
|
224 |
}
|
225 |
|
226 |
-
if(is_array($variables)){
|
227 |
$this->beforeVariables = $variables;
|
228 |
}
|
229 |
|
@@ -244,7 +244,7 @@ Class SPDSGVOMail
|
|
244 |
throw new Exception('File not found');
|
245 |
}
|
246 |
|
247 |
-
if(is_array($variables)){
|
248 |
$this->variables = $variables;
|
249 |
}
|
250 |
|
@@ -262,10 +262,10 @@ Class SPDSGVOMail
|
|
262 |
*/
|
263 |
public function afterTemplate($template, $variables = NULL){
|
264 |
if(!file_exists($template)){
|
265 |
-
throw new Exception('Template file not found');
|
266 |
}
|
267 |
|
268 |
-
if(is_array($variables)){
|
269 |
$this->afterVariables = $variables;
|
270 |
}
|
271 |
|
@@ -279,17 +279,17 @@ Class SPDSGVOMail
|
|
279 |
* @return string
|
280 |
*/
|
281 |
public function render(){
|
282 |
-
return $this->renderPart('before') .
|
283 |
$this->renderPart('main') .
|
284 |
$this->renderPart('after');
|
285 |
}
|
286 |
-
|
287 |
|
288 |
/**
|
289 |
* Render a specific part of the email
|
290 |
* @author Shapepress eU
|
291 |
* @param string $part before, after, main
|
292 |
-
* @return string
|
293 |
*/
|
294 |
public function renderPart($part = 'main'){
|
295 |
switch($part){
|
@@ -302,7 +302,7 @@ Class SPDSGVOMail
|
|
302 |
$templateFile = $this->afterTemplate;
|
303 |
$variables = $this->afterVariables;
|
304 |
break;
|
305 |
-
|
306 |
case 'main':
|
307 |
default:
|
308 |
$templateFile = $this->template;
|
@@ -314,7 +314,16 @@ Class SPDSGVOMail
|
|
314 |
return '';
|
315 |
}
|
316 |
|
317 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
318 |
|
319 |
if(!is_array($variables) || empty($variables)){
|
320 |
return $template;
|
@@ -361,21 +370,21 @@ Class SPDSGVOMail
|
|
361 |
|
362 |
|
363 |
/**
|
364 |
-
* Set the wp_mail_content_type filter, if necessary
|
365 |
*/
|
366 |
private function beforeSend(){
|
367 |
if(count($this->to) === 0){
|
368 |
-
throw new Exception('You must set at least 1 recipient');
|
369 |
}
|
370 |
|
371 |
if(empty($this->template)){
|
372 |
-
throw new Exception('You must set a template');
|
373 |
}
|
374 |
|
375 |
if($this->sendAsHTML){
|
376 |
add_filter('wp_mail_content_type', array($this, 'HTMLFilter'));
|
377 |
}
|
378 |
-
}
|
379 |
|
380 |
|
381 |
/**
|
@@ -387,4 +396,4 @@ Class SPDSGVOMail
|
|
387 |
$this->beforeSend();
|
388 |
return wp_mail($this->to, $this->subject, $this->render(), $this->buildHeaders(), $this->attachments);
|
389 |
}
|
390 |
-
}
|
108 |
}
|
109 |
|
110 |
|
111 |
+
/**
|
112 |
* Set email Subject
|
113 |
* @param Srting $subject
|
114 |
* @return Object $this
|
138 |
return $this;
|
139 |
}
|
140 |
|
141 |
+
/**
|
142 |
* Set the email's headers
|
143 |
* @param String|Array $headers [description]
|
144 |
* @return Object $this
|
149 |
}else{
|
150 |
$this->headers = array($headers);
|
151 |
}
|
152 |
+
|
153 |
return $this;
|
154 |
}
|
155 |
|
172 |
}
|
173 |
|
174 |
|
175 |
+
/**
|
176 |
* Set email content type
|
177 |
* @param Bool $html
|
178 |
* @return Object $this
|
183 |
}
|
184 |
|
185 |
|
186 |
+
/**
|
187 |
* Attach a file or array of files.
|
188 |
* Filepaths must be absolute.
|
189 |
+
* @param String|Array $path
|
190 |
* @throws Exception
|
191 |
* @return Object $this
|
192 |
*/
|
195 |
$this->attachments = array();
|
196 |
foreach($path as $path_) {
|
197 |
if(!file_exists($path_)){
|
198 |
+
throw new Exception(__('Attachment not found at', 'shapepress-dsgvo') . " $path");
|
199 |
}else{
|
200 |
$this->attachments[] = $path_;
|
201 |
}
|
202 |
}
|
203 |
}else{
|
204 |
if(!file_exists($path)){
|
205 |
+
throw new Exception(__('Attachment not found at', 'shapepress-dsgvo') . " $path");
|
206 |
}
|
207 |
$this->attachments = array($path);
|
208 |
}
|
220 |
*/
|
221 |
public function beforeTemplate($template, $variables = NULL){
|
222 |
if(!file_exists($template)){
|
223 |
+
throw new Exception(__('Template file not found', 'shapepress-dsgvo'));
|
224 |
}
|
225 |
|
226 |
+
if(is_array($variables)){
|
227 |
$this->beforeVariables = $variables;
|
228 |
}
|
229 |
|
244 |
throw new Exception('File not found');
|
245 |
}
|
246 |
|
247 |
+
if(is_array($variables)){
|
248 |
$this->variables = $variables;
|
249 |
}
|
250 |
|
262 |
*/
|
263 |
public function afterTemplate($template, $variables = NULL){
|
264 |
if(!file_exists($template)){
|
265 |
+
throw new Exception(__('Template file not found', 'shapepress-dsgvo'));
|
266 |
}
|
267 |
|
268 |
+
if(is_array($variables)){
|
269 |
$this->afterVariables = $variables;
|
270 |
}
|
271 |
|
279 |
* @return string
|
280 |
*/
|
281 |
public function render(){
|
282 |
+
return $this->renderPart('before') .
|
283 |
$this->renderPart('main') .
|
284 |
$this->renderPart('after');
|
285 |
}
|
286 |
+
|
287 |
|
288 |
/**
|
289 |
* Render a specific part of the email
|
290 |
* @author Shapepress eU
|
291 |
* @param string $part before, after, main
|
292 |
+
* @return string
|
293 |
*/
|
294 |
public function renderPart($part = 'main'){
|
295 |
switch($part){
|
302 |
$templateFile = $this->afterTemplate;
|
303 |
$variables = $this->afterVariables;
|
304 |
break;
|
305 |
+
|
306 |
case 'main':
|
307 |
default:
|
308 |
$templateFile = $this->template;
|
314 |
return '';
|
315 |
}
|
316 |
|
317 |
+
|
318 |
+
/* WP KRAKEN START */
|
319 |
+
|
320 |
+
//$template = file_get_contents($templateFile);
|
321 |
+
|
322 |
+
ob_start();
|
323 |
+
include $templateFile;
|
324 |
+
$template = ob_get_clean();
|
325 |
+
|
326 |
+
/* WP KRAKEN END */
|
327 |
|
328 |
if(!is_array($variables) || empty($variables)){
|
329 |
return $template;
|
370 |
|
371 |
|
372 |
/**
|
373 |
+
* Set the wp_mail_content_type filter, if necessary
|
374 |
*/
|
375 |
private function beforeSend(){
|
376 |
if(count($this->to) === 0){
|
377 |
+
throw new Exception(__('You must set at least 1 recipient', 'shapepress-dsgvo'));
|
378 |
}
|
379 |
|
380 |
if(empty($this->template)){
|
381 |
+
throw new Exception(__('You must set a template', 'shapepress-dsgvo'));
|
382 |
}
|
383 |
|
384 |
if($this->sendAsHTML){
|
385 |
add_filter('wp_mail_content_type', array($this, 'HTMLFilter'));
|
386 |
}
|
387 |
+
}
|
388 |
|
389 |
|
390 |
/**
|
396 |
$this->beforeSend();
|
397 |
return wp_mail($this->to, $this->subject, $this->render(), $this->buildHeaders(), $this->attachments);
|
398 |
}
|
399 |
+
}
|
includes/class-sp-dsgvo-pdf.php
CHANGED
@@ -1,71 +1,71 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Extension of TCPDF
|
5 |
-
*
|
6 |
-
* @link http://example.com
|
7 |
-
* @since 1.0.0
|
8 |
-
*
|
9 |
-
* @package WP DSGVO Tools
|
10 |
-
* @subpackage WP DSGVO Tools/includes
|
11 |
-
*/
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Extension of TCPDF
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
* @package WP DSGVO Tools
|
18 |
-
* @subpackage WP DSGVO Tools/includes
|
19 |
-
* @author Shapepress eU
|
20 |
-
*/
|
21 |
-
class SPDSGVOPDF extends TCPDF
|
22 |
-
{
|
23 |
-
|
24 |
-
public function coloredTable($data)
|
25 |
-
{
|
26 |
-
$this->SetFillColor(56, 64, 94);
|
27 |
-
$this->SetTextColor(255);
|
28 |
-
$this->SetDrawColor(128, 0, 0);
|
29 |
-
$this->SetLineWidth(0.3);
|
30 |
-
$this->SetFont('', 'B');
|
31 |
-
|
32 |
-
$width = array(
|
33 |
-
60,
|
34 |
-
110
|
35 |
-
);
|
36 |
-
//$this->Cell($width[0], 7, 'Typ', 1, 0, 'C', 1);
|
37 |
-
//$this->Cell($width[1], 7, 'Daten', 1, 0, 'C', 1);
|
38 |
-
|
39 |
-
$this->Ln();
|
40 |
-
$this->SetFillColor(224, 235, 255);
|
41 |
-
$this->SetTextColor(0);
|
42 |
-
$this->SetFont('');
|
43 |
-
|
44 |
-
$fill = 0;
|
45 |
-
foreach ($data as $type => $d) {
|
46 |
-
$data = array();
|
47 |
-
|
48 |
-
$title = "<strong>" . $type . "</strong>";
|
49 |
-
|
50 |
-
$this->writeHTML($title, true, false, true, false, '');
|
51 |
-
|
52 |
-
if (is_array($d)) {
|
53 |
-
foreach ($d as $value) {
|
54 |
-
if (! empty($value)) {
|
55 |
-
array_push($data, $value->data);
|
56 |
-
|
57 |
-
$span = "<span>" . $value->data . "</span>";
|
58 |
-
$this->writeHTML($span, true, false, true, false, '');
|
59 |
-
}
|
60 |
-
}
|
61 |
-
}
|
62 |
-
|
63 |
-
//$this->MultiCell($width[0], 6, $type, 'LR', 'L', $fill, 0, '', '', true, 0, false, true, 0);
|
64 |
-
//$this->MultiCell($width[1], 6, implode(', ', $data), 'LR', 'L', $fill, 0, '', '', true, 0, false, true, 0);
|
65 |
-
$this->Ln();
|
66 |
-
$fill = ! $fill;
|
67 |
-
}
|
68 |
-
|
69 |
-
$this->Cell(array_sum($width), 0, '', 'T');
|
70 |
-
}
|
71 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Extension of TCPDF
|
5 |
+
*
|
6 |
+
* @link http://example.com
|
7 |
+
* @since 1.0.0
|
8 |
+
*
|
9 |
+
* @package WP DSGVO Tools
|
10 |
+
* @subpackage WP DSGVO Tools/includes
|
11 |
+
*/
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Extension of TCPDF
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
* @package WP DSGVO Tools
|
18 |
+
* @subpackage WP DSGVO Tools/includes
|
19 |
+
* @author Shapepress eU
|
20 |
+
*/
|
21 |
+
class SPDSGVOPDF extends TCPDF
|
22 |
+
{
|
23 |
+
|
24 |
+
public function coloredTable($data)
|
25 |
+
{
|
26 |
+
$this->SetFillColor(56, 64, 94);
|
27 |
+
$this->SetTextColor(255);
|
28 |
+
$this->SetDrawColor(128, 0, 0);
|
29 |
+
$this->SetLineWidth(0.3);
|
30 |
+
$this->SetFont('', 'B');
|
31 |
+
|
32 |
+
$width = array(
|
33 |
+
60,
|
34 |
+
110
|
35 |
+
);
|
36 |
+
//$this->Cell($width[0], 7, 'Typ', 1, 0, 'C', 1);
|
37 |
+
//$this->Cell($width[1], 7, 'Daten', 1, 0, 'C', 1);
|
38 |
+
|
39 |
+
$this->Ln();
|
40 |
+
$this->SetFillColor(224, 235, 255);
|
41 |
+
$this->SetTextColor(0);
|
42 |
+
$this->SetFont('');
|
43 |
+
|
44 |
+
$fill = 0;
|
45 |
+
foreach ($data as $type => $d) {
|
46 |
+
$data = array();
|
47 |
+
|
48 |
+
$title = "<strong>" . $type . "</strong>";
|
49 |
+
|
50 |
+
$this->writeHTML($title, true, false, true, false, '');
|
51 |
+
|
52 |
+
if (is_array($d)) {
|
53 |
+
foreach ($d as $value) {
|
54 |
+
if (! empty($value)) {
|
55 |
+
array_push($data, $value->data);
|
56 |
+
|
57 |
+
$span = "<span>" . $value->data . "</span>";
|
58 |
+
$this->writeHTML($span, true, false, true, false, '');
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
//$this->MultiCell($width[0], 6, $type, 'LR', 'L', $fill, 0, '', '', true, 0, false, true, 0);
|
64 |
+
//$this->MultiCell($width[1], 6, implode(', ', $data), 'LR', 'L', $fill, 0, '', '', true, 0, false, true, 0);
|
65 |
+
$this->Ln();
|
66 |
+
$fill = ! $fill;
|
67 |
+
}
|
68 |
+
|
69 |
+
$this->Cell(array_sum($width), 0, '', 'T');
|
70 |
+
}
|
71 |
}
|
includes/class-sp-dsgvo-settings.php
CHANGED
@@ -23,27 +23,51 @@
|
|
23 |
*/
|
24 |
class SPDSGVOSettings{
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
29 |
/////////////////////////////////////
|
30 |
-
|
31 |
-
|
|
|
|
|
32 |
'license_activated' => '0',
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
35 |
'sp_dsgvo_comments_checkbox' => '0',
|
36 |
-
'spdsgvo_comments_checkbox_confirm' => '
|
37 |
-
'spdsgvo_comments_checkbox_info' => '
|
38 |
-
'spdsgvo_comments_checkbox_text' => '
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/////////////////////////////////////
|
41 |
// SAR
|
42 |
/////////////////////////////////////
|
43 |
-
'sar_cron'
|
44 |
-
'sar_page'
|
45 |
-
'
|
46 |
-
|
47 |
|
48 |
/////////////////////////////////////
|
49 |
// Third-party Services
|
@@ -54,42 +78,45 @@ class SPDSGVOSettings{
|
|
54 |
'cookies' => array(
|
55 |
'slug' => 'cookies',
|
56 |
'name' => 'Cookies',
|
57 |
-
|
58 |
'link' => '',
|
59 |
'default' => '1',
|
60 |
),
|
61 |
'google-analytics' => array(
|
62 |
'slug' => 'google-analytics',
|
63 |
'name' => 'Google Analytics',
|
64 |
-
|
65 |
'link' => 'https://www.google.com/analytics/terms/us.html',
|
66 |
'default' => '1',
|
67 |
),
|
68 |
'facebook-pixel' => array(
|
69 |
'slug' => 'facebook-pixel',
|
70 |
'name' => 'Facebook Pixel',
|
71 |
-
|
72 |
'link' => 'https://www.facebook.com/legal/terms/update',
|
73 |
'default' => '1',
|
74 |
)
|
75 |
-
),
|
76 |
|
77 |
|
78 |
/////////////////////////////////////
|
79 |
// Unsubscribe Page
|
80 |
/////////////////////////////////////
|
81 |
-
'super_unsubscribe_page' => '0',
|
82 |
'unsubscribe_auto_delete' => '0',
|
83 |
'su_auto_del_time' => '0',
|
84 |
'su_woo_data_action' => 'ignore',
|
85 |
-
'
|
|
|
|
|
|
|
86 |
|
87 |
|
88 |
/////////////////////////////////////
|
89 |
// Cookie Notice
|
90 |
/////////////////////////////////////
|
91 |
'display_cookie_notice' => '0',
|
92 |
-
'cookie_notice' => "This website uses cookies. By clicking 'accept' you are providing consent to us using cookies on this browser.",
|
93 |
'cookie_notice_custom_css' => "",
|
94 |
'cn_tracker_init' => 'on_load',
|
95 |
'ga_enable_analytics' => '0',
|
@@ -97,20 +124,20 @@ class SPDSGVOSettings{
|
|
97 |
'fb_enable_pixel' => '0',
|
98 |
'fb_pixel_number' => '',
|
99 |
'display_cookie_notice' => '0',
|
100 |
-
'cookie_notice_custom_text' => '
|
101 |
'cn_cookie_validity' => '86400',
|
102 |
-
'cn_button_text_ok' => 'OK',
|
103 |
'cn_reload_on_confirm' => '0',
|
104 |
'cn_activate_cancel_btn' => '1',
|
105 |
-
'cn_button_text_cancel' => '
|
106 |
'cn_decline_target_url' => '',
|
107 |
'cn_activate_more_btn' => '0',
|
108 |
-
'cn_button_text_more' => '
|
109 |
'cn_read_more_page' => '',
|
110 |
'cn_position' => 'bottom',
|
111 |
'cn_animation' => 'none',
|
112 |
'cn_background_color' => '#333333',
|
113 |
-
'cn_text_color' => '#ffffff',
|
114 |
'cn_background_color_button' => '#F3F3F3',
|
115 |
'cn_text_color_button' => '#333333',
|
116 |
'cn_custom_css_container' => '',
|
@@ -142,7 +169,9 @@ class SPDSGVOSettings{
|
|
142 |
'privacy_policy_page' => '0',
|
143 |
'privacy_policy_version' => '1',
|
144 |
'privacy_policy_hash' => '',
|
145 |
-
|
|
|
|
|
146 |
/////////////////////////////////////
|
147 |
// imprint
|
148 |
/////////////////////////////////////
|
@@ -150,10 +179,22 @@ class SPDSGVOSettings{
|
|
150 |
'imprint_page' => '0',
|
151 |
'imprint_version' => '1',
|
152 |
'imprint_hash' => '',
|
153 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
);
|
|
|
155 |
|
156 |
public static function init(){
|
|
|
|
|
157 |
$users = get_users(array('role' => 'administrator'));
|
158 |
$admin = (isset($users[0]))? $users[0] : FALSE;
|
159 |
if(!self::get('admin_email')){
|
@@ -161,10 +202,10 @@ class SPDSGVOSettings{
|
|
161 |
self::set('admin_email', $admin->user_email);
|
162 |
}
|
163 |
}
|
164 |
-
|
165 |
|
166 |
if(!self::get('privacy_policy')){
|
167 |
-
|
168 |
// if($admin){
|
169 |
// $privacyPolicy = str_replace('[name]', $admin->display_name, $privacyPolicy);
|
170 |
// $privacyPolicy = str_replace('[email]', $admin->user_email, $privacyPolicy);
|
@@ -179,9 +220,9 @@ class SPDSGVOSettings{
|
|
179 |
SPDSGVOSettings::set('terms_conditions_hash', wp_hash($termsConditions));
|
180 |
self::set('terms_conditions', $termsConditions);
|
181 |
}
|
182 |
-
|
183 |
if(!self::get('imprint')){
|
184 |
-
$imprint = file_get_contents(SPDSGVO::pluginDir('imprint.txt'));
|
185 |
SPDSGVOSettings::set('imprint_hash', wp_hash($imprint));
|
186 |
self::set('imprint', $imprint);
|
187 |
}
|
@@ -192,30 +233,30 @@ class SPDSGVOSettings{
|
|
192 |
'cookies' => array(
|
193 |
'slug' => 'cookies',
|
194 |
'name' => 'Cookies',
|
195 |
-
'reason' => '
|
196 |
'link' => '',
|
197 |
'default' => '0',
|
198 |
),
|
199 |
'google-analytics' => array(
|
200 |
'slug' => 'google-analytics',
|
201 |
'name' => 'Google Analytics',
|
202 |
-
'reason' => 'Google Analytics
|
203 |
'link' => 'https://www.google.com/analytics/terms/us.html',
|
204 |
'default' => '0',
|
205 |
),
|
206 |
'facebook-pixel' => array(
|
207 |
'slug' => 'facebook-pixel',
|
208 |
'name' => 'Facebook Pixel',
|
209 |
-
'reason' => 'Facebook Pixel
|
210 |
'link' => 'https://www.facebook.com/legal/terms/update',
|
211 |
'default' => '0',
|
212 |
)
|
213 |
-
|
214 |
));
|
215 |
}
|
216 |
|
217 |
|
218 |
-
foreach(
|
219 |
if(!self::get($setting)){
|
220 |
self::set($setting, $value);
|
221 |
}
|
@@ -231,18 +272,25 @@ class SPDSGVOSettings{
|
|
231 |
|
232 |
if($value !== '0'){
|
233 |
if(!$value || empty($value)){
|
234 |
-
|
|
|
235 |
}
|
236 |
}
|
237 |
|
238 |
return $value;
|
239 |
}
|
240 |
-
|
241 |
public static function getDefault($property){
|
242 |
-
|
243 |
-
$
|
244 |
-
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
}
|
247 |
|
248 |
|
23 |
*/
|
24 |
class SPDSGVOSettings{
|
25 |
|
26 |
+
public $defaults = array();
|
27 |
+
|
28 |
+
public function __construct() {
|
29 |
+
$this->defaults = array(
|
30 |
/////////////////////////////////////
|
31 |
+
// common settings
|
32 |
+
/////////////////////////////////////
|
33 |
+
'show_setup' => '0',
|
34 |
+
'license_key_error' => '1',
|
35 |
'license_activated' => '0',
|
36 |
+
'licence_activated_on' => '2018-05-01',
|
37 |
+
'licence_valid_to' => '2019-05-05',
|
38 |
+
'licence_details_fetched' => '0',
|
39 |
+
'api_key' => '',
|
40 |
+
'admin_email' => '',
|
41 |
+
'use_wpml_strings' => '0',
|
42 |
'sp_dsgvo_comments_checkbox' => '0',
|
43 |
+
'spdsgvo_comments_checkbox_confirm' => __('I confirm','shapepress-dsgvo'),
|
44 |
+
'spdsgvo_comments_checkbox_info' => __('The confirmation to GDPR is mandatory.','shapepress-dsgvo'),
|
45 |
+
'spdsgvo_comments_checkbox_text' => __('This form stores your name, email address and content so that we can evaluate the comments on our site. For more information, visit our Privacy Policy page.','shapepress-dsgvo'),
|
46 |
+
|
47 |
+
'spdsgvo_company_info_name' => '',
|
48 |
+
'spdsgvo_company_info_street' => '',
|
49 |
+
'spdsgvo_company_info_loc_zip' => '',
|
50 |
+
'spdsgvo_company_fn_nr' => '',
|
51 |
+
'spdsgvo_company_law_loc' => '',
|
52 |
+
'spdsgvo_company_uid_nr' => '',
|
53 |
+
'spdsgvo_company_law_person' => '',
|
54 |
+
'spdsgvo_company_chairmen' => '',
|
55 |
+
'spdsgvo_company_resp_content' => '',
|
56 |
+
'spdsgvo_company_info_phone' => '',
|
57 |
+
'spdsgvo_company_info_fax' => '',
|
58 |
+
'spdsgvo_company_info_email' => '',
|
59 |
+
'spdsgvo_newsletter_service' => '',
|
60 |
+
'spdsgvo_newsletter_service_privacy_policy_url' => '',
|
61 |
+
|
62 |
+
|
63 |
+
|
64 |
/////////////////////////////////////
|
65 |
// SAR
|
66 |
/////////////////////////////////////
|
67 |
+
'sar_cron' => '0',
|
68 |
+
'sar_page' => '0',
|
69 |
+
'sar_email_notification' => '0',
|
70 |
+
'sar_dsgvo_accepted_text' => __('I agree to the storage of the data for processing within the meaning of the GDPR.','shapepress-dsgvo'),
|
71 |
|
72 |
/////////////////////////////////////
|
73 |
// Third-party Services
|
78 |
'cookies' => array(
|
79 |
'slug' => 'cookies',
|
80 |
'name' => 'Cookies',
|
81 |
+
'reason' => __('We use cookies to analyze visitor behavior.','shapepress-dsgvo'),
|
82 |
'link' => '',
|
83 |
'default' => '1',
|
84 |
),
|
85 |
'google-analytics' => array(
|
86 |
'slug' => 'google-analytics',
|
87 |
'name' => 'Google Analytics',
|
88 |
+
'reason' => __('Google Analytics is used to analyze website traffic.','shapepress-dsgvo'),
|
89 |
'link' => 'https://www.google.com/analytics/terms/us.html',
|
90 |
'default' => '1',
|
91 |
),
|
92 |
'facebook-pixel' => array(
|
93 |
'slug' => 'facebook-pixel',
|
94 |
'name' => 'Facebook Pixel',
|
95 |
+
'reason' => __('Facebook Pixel is used to analyze visitor behavior.','shapepress-dsgvo'),
|
96 |
'link' => 'https://www.facebook.com/legal/terms/update',
|
97 |
'default' => '1',
|
98 |
)
|
99 |
+
),
|
100 |
|
101 |
|
102 |
/////////////////////////////////////
|
103 |
// Unsubscribe Page
|
104 |
/////////////////////////////////////
|
105 |
+
'super_unsubscribe_page' => '0',
|
106 |
'unsubscribe_auto_delete' => '0',
|
107 |
'su_auto_del_time' => '0',
|
108 |
'su_woo_data_action' => 'ignore',
|
109 |
+
'su_bbpress_data_action' => 'ignore',
|
110 |
+
'su_buddypress_data_action' => 'ignore',
|
111 |
+
'su_email_notification' => '0',
|
112 |
+
'su_dsgvo_accepted_text' => __('I agree to the storage of the data for processing within the meaning of the GDPR.','shapepress-dsgvo'),
|
113 |
|
114 |
|
115 |
/////////////////////////////////////
|
116 |
// Cookie Notice
|
117 |
/////////////////////////////////////
|
118 |
'display_cookie_notice' => '0',
|
119 |
+
'cookie_notice' => __("This website uses cookies. By clicking 'accept' you are providing consent to us using cookies on this browser.", 'shapepress-dsgvo'),
|
120 |
'cookie_notice_custom_css' => "",
|
121 |
'cn_tracker_init' => 'on_load',
|
122 |
'ga_enable_analytics' => '0',
|
124 |
'fb_enable_pixel' => '0',
|
125 |
'fb_pixel_number' => '',
|
126 |
'display_cookie_notice' => '0',
|
127 |
+
'cookie_notice_custom_text' => __('We use cookies to give you the best user experience. If you continue to use this site, we assume that you agree.','shapepress-dsgvo'),
|
128 |
'cn_cookie_validity' => '86400',
|
129 |
+
'cn_button_text_ok' => __('OK','shapepress-dsgvo'),
|
130 |
'cn_reload_on_confirm' => '0',
|
131 |
'cn_activate_cancel_btn' => '1',
|
132 |
+
'cn_button_text_cancel' => __('Deny','shapepress-dsgvo'),
|
133 |
'cn_decline_target_url' => '',
|
134 |
'cn_activate_more_btn' => '0',
|
135 |
+
'cn_button_text_more' => __('More information','shapepress-dsgvo'),
|
136 |
'cn_read_more_page' => '',
|
137 |
'cn_position' => 'bottom',
|
138 |
'cn_animation' => 'none',
|
139 |
'cn_background_color' => '#333333',
|
140 |
+
'cn_text_color' => '#ffffff',
|
141 |
'cn_background_color_button' => '#F3F3F3',
|
142 |
'cn_text_color_button' => '#333333',
|
143 |
'cn_custom_css_container' => '',
|
169 |
'privacy_policy_page' => '0',
|
170 |
'privacy_policy_version' => '1',
|
171 |
'privacy_policy_hash' => '',
|
172 |
+
'woo_show_privacy_checkbox' => '0',
|
173 |
+
'woo_show_privacy_checkbox_register' => '0',
|
174 |
+
|
175 |
/////////////////////////////////////
|
176 |
// imprint
|
177 |
/////////////////////////////////////
|
179 |
'imprint_page' => '0',
|
180 |
'imprint_version' => '1',
|
181 |
'imprint_hash' => '',
|
182 |
+
|
183 |
+
'cb_spdsgvo_cl_vdv' => '0',
|
184 |
+
'cb_spdsgvo_cl_filled_out' => '0',
|
185 |
+
'cb_spdsgvo_cl_maintainance' => '0',
|
186 |
+
'cb_spdsgvo_cl_security' => '0',
|
187 |
+
'cb_spdsgvo_cl_hosting' => '0',
|
188 |
+
'cb_spdsgvo_cl_plugins' => '0',
|
189 |
+
'cb_spdsgvo_cl_experts' => '0',
|
190 |
+
|
191 |
+
|
192 |
);
|
193 |
+
}
|
194 |
|
195 |
public static function init(){
|
196 |
+
|
197 |
+
$sInstance = (new self);
|
198 |
$users = get_users(array('role' => 'administrator'));
|
199 |
$admin = (isset($users[0]))? $users[0] : FALSE;
|
200 |
if(!self::get('admin_email')){
|
202 |
self::set('admin_email', $admin->user_email);
|
203 |
}
|
204 |
}
|
205 |
+
|
206 |
|
207 |
if(!self::get('privacy_policy')){
|
208 |
+
$privacyPolicy = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/privacy-policy.txt'));
|
209 |
// if($admin){
|
210 |
// $privacyPolicy = str_replace('[name]', $admin->display_name, $privacyPolicy);
|
211 |
// $privacyPolicy = str_replace('[email]', $admin->user_email, $privacyPolicy);
|
220 |
SPDSGVOSettings::set('terms_conditions_hash', wp_hash($termsConditions));
|
221 |
self::set('terms_conditions', $termsConditions);
|
222 |
}
|
223 |
+
|
224 |
if(!self::get('imprint')){
|
225 |
+
$imprint = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/imprint.txt'));
|
226 |
SPDSGVOSettings::set('imprint_hash', wp_hash($imprint));
|
227 |
self::set('imprint', $imprint);
|
228 |
}
|
233 |
'cookies' => array(
|
234 |
'slug' => 'cookies',
|
235 |
'name' => 'Cookies',
|
236 |
+
'reason' => __('We use cookies to analyze visitor behavior.','shapepress-dsgvo'),
|
237 |
'link' => '',
|
238 |
'default' => '0',
|
239 |
),
|
240 |
'google-analytics' => array(
|
241 |
'slug' => 'google-analytics',
|
242 |
'name' => 'Google Analytics',
|
243 |
+
'reason' => __('Google Analytics is used to analyze website traffic.','shapepress-dsgvo'),
|
244 |
'link' => 'https://www.google.com/analytics/terms/us.html',
|
245 |
'default' => '0',
|
246 |
),
|
247 |
'facebook-pixel' => array(
|
248 |
'slug' => 'facebook-pixel',
|
249 |
'name' => 'Facebook Pixel',
|
250 |
+
'reason' => __('Facebook Pixel is used to analyze visitor behavior.','shapepress-dsgvo'),
|
251 |
'link' => 'https://www.facebook.com/legal/terms/update',
|
252 |
'default' => '0',
|
253 |
)
|
254 |
+
|
255 |
));
|
256 |
}
|
257 |
|
258 |
|
259 |
+
foreach($sInstance->defaults as $setting => $value){
|
260 |
if(!self::get($setting)){
|
261 |
self::set($setting, $value);
|
262 |
}
|
272 |
|
273 |
if($value !== '0'){
|
274 |
if(!$value || empty($value)){
|
275 |
+
|
276 |
+
$value = self::getDefault($property);
|
277 |
}
|
278 |
}
|
279 |
|
280 |
return $value;
|
281 |
}
|
282 |
+
|
283 |
public static function getDefault($property){
|
284 |
+
|
285 |
+
$sInstance = new self;
|
286 |
+
|
287 |
+
if (array_key_exists($property, $sInstance->defaults))
|
288 |
+
{
|
289 |
+
return $sInstance->defaults[$property];
|
290 |
+
} else
|
291 |
+
{
|
292 |
+
return '';
|
293 |
+
}
|
294 |
}
|
295 |
|
296 |
|
includes/class-sp-dsgvo-slim-model.php
CHANGED
@@ -36,8 +36,8 @@ Abstract Class SPDSGVOModel{
|
|
36 |
$this->set($attribute, $value);
|
37 |
}
|
38 |
}
|
39 |
-
|
40 |
-
$this->set('title', isset($insert['title'])? $insert['title'] : '');
|
41 |
$this->set('content', isset($insert['content'])? $insert['content'] : '');
|
42 |
$this->boot();
|
43 |
}
|
@@ -249,7 +249,7 @@ Abstract Class SPDSGVOModel{
|
|
249 |
return $this->data[$attribute];
|
250 |
}else{
|
251 |
return $default;
|
252 |
-
}
|
253 |
}
|
254 |
|
255 |
/**
|
@@ -528,6 +528,9 @@ Abstract Class SPDSGVOModel{
|
|
528 |
}
|
529 |
|
530 |
$args['post_type'] = self::getPostType();
|
|
|
|
|
|
|
531 |
foreach((new WP_Query($args))->get_posts() as $key => $post){
|
532 |
$return[] = self::find($post->ID);
|
533 |
}
|
@@ -649,4 +652,4 @@ Abstract Class SPDSGVOModel{
|
|
649 |
wp_untrash_post($ID);
|
650 |
return self::find($ID);
|
651 |
}
|
652 |
-
}
|
36 |
$this->set($attribute, $value);
|
37 |
}
|
38 |
}
|
39 |
+
|
40 |
+
$this->set('title', isset($insert['title'])? $insert['title'] : '');
|
41 |
$this->set('content', isset($insert['content'])? $insert['content'] : '');
|
42 |
$this->boot();
|
43 |
}
|
249 |
return $this->data[$attribute];
|
250 |
}else{
|
251 |
return $default;
|
252 |
+
}
|
253 |
}
|
254 |
|
255 |
/**
|
528 |
}
|
529 |
|
530 |
$args['post_type'] = self::getPostType();
|
531 |
+
/* i592995 */
|
532 |
+
$args['posts_per_page'] = -1;
|
533 |
+
/* i592995 */
|
534 |
foreach((new WP_Query($args))->get_posts() as $key => $post){
|
535 |
$return[] = self::find($post->ID);
|
536 |
}
|
652 |
wp_untrash_post($ID);
|
653 |
return self::find($ID);
|
654 |
}
|
655 |
+
}
|
includes/class-sp-dsgvo.php
CHANGED
@@ -69,7 +69,7 @@ class SPDSGVO{
|
|
69 |
if(!isset(static::$instance)){
|
70 |
static::$instance = new static;
|
71 |
}
|
72 |
-
|
73 |
return static::$instance;
|
74 |
}
|
75 |
|
@@ -84,7 +84,7 @@ class SPDSGVO{
|
|
84 |
if(!class_exists('TCPDF')){
|
85 |
require_once SPDSGVO::pluginDir('includes/lib/tcpdf/tcpdf.php');
|
86 |
require_once SPDSGVO::pluginDir('includes/class-sp-dsgvo-pdf.php');
|
87 |
-
}
|
88 |
|
89 |
$load = array(
|
90 |
//======================================================================
|
@@ -117,7 +117,7 @@ class SPDSGVO{
|
|
117 |
//======================================================================
|
118 |
SPDSGVO::pluginDir('includes/cron/do-subject-access-request.php'),
|
119 |
SPDSGVO::pluginDir('includes/cron/do-delete-data-request.php'),
|
120 |
-
|
121 |
|
122 |
//======================================================================
|
123 |
// Actions
|
@@ -125,7 +125,10 @@ class SPDSGVO{
|
|
125 |
SPDSGVO::pluginDir('public/actions/unsubscribe.php'),
|
126 |
SPDSGVO::pluginDir('public/actions/explicit-permission.php'),
|
127 |
SPDSGVO::pluginDir('public/actions/user-permissions.php'),
|
128 |
-
|
|
|
|
|
|
|
129 |
|
130 |
//======================================================================
|
131 |
// Shortcodes
|
@@ -134,25 +137,31 @@ class SPDSGVO{
|
|
134 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/download-subject-access-request.php'),
|
135 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request-action.php'),
|
136 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request.php'),
|
137 |
-
|
138 |
// Super Unsubscribe
|
139 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form.php'),
|
140 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form-action.php'),
|
141 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php'),
|
142 |
-
|
143 |
|
144 |
SPDSGVO::pluginDir('public/shortcodes/privacy-policy.php'),
|
145 |
SPDSGVO::pluginDir('public/shortcodes/explicit-permission.php'),
|
146 |
-
SPDSGVO::pluginDir('public/shortcodes/terms-conditions.php'),
|
147 |
SPDSGVO::pluginDir('public/shortcodes/decline-permission.php'),
|
148 |
SPDSGVO::pluginDir('public/shortcodes/privacy-settings-form.php'),
|
|
|
|
|
|
|
149 |
SPDSGVO::pluginDir('public/shortcodes/display-services.php'),
|
150 |
SPDSGVO::pluginDir('public/shortcodes/imprint.php'),
|
151 |
|
152 |
//======================================================================
|
153 |
// Default Integrations
|
154 |
//======================================================================
|
|
|
|
|
155 |
SPDSGVO::pluginDir('includes/integrations/cf7/Cf7Integration.php'),
|
|
|
|
|
156 |
|
157 |
|
158 |
//======================================================================
|
@@ -166,6 +175,9 @@ class SPDSGVO{
|
|
166 |
// Super Unsubscribe
|
167 |
SPDSGVO::pluginDir('admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php'),
|
168 |
SPDSGVO::pluginDir('admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php'),
|
|
|
|
|
|
|
169 |
|
170 |
// Services
|
171 |
SPDSGVO::pluginDir('admin/tabs/services/class-sp-dsgvo-services-tab.php'),
|
@@ -177,27 +189,20 @@ class SPDSGVO{
|
|
177 |
SPDSGVO::pluginDir('admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php'),
|
178 |
SPDSGVO::pluginDir('admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-action.php'),
|
179 |
|
180 |
-
// Terms Conditions
|
181 |
-
SPDSGVO::pluginDir('admin/tabs/terms-conditions/class-sp-dsgvo-terms-conditions-tab.php'),
|
182 |
-
SPDSGVO::pluginDir('admin/tabs/terms-conditions/class-sp-dsgvo-terms-conditions-action.php'),
|
183 |
-
|
184 |
// Imprint
|
185 |
SPDSGVO::pluginDir('admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php'),
|
186 |
SPDSGVO::pluginDir('admin/tabs/imprint/class-sp-dsgvo-imprint-action.php'),
|
187 |
-
|
188 |
-
// premium
|
189 |
-
SPDSGVO::pluginDir('admin/tabs/premium/class-sp-dsgvo-premium-tab.php'),
|
190 |
-
SPDSGVO::pluginDir('admin/tabs/premium/class-sp-dsgvo-premium-action.php'),
|
191 |
|
192 |
// Common Settings
|
193 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php'),
|
194 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-action.php'),
|
195 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php'),
|
196 |
-
|
197 |
// Cookie Notice
|
198 |
SPDSGVO::pluginDir('admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php'),
|
199 |
SPDSGVO::pluginDir('admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-action.php'),
|
200 |
-
|
201 |
// Integrations
|
202 |
SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php'),
|
203 |
SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-action.php'),
|
@@ -221,8 +226,7 @@ class SPDSGVO{
|
|
221 |
}
|
222 |
|
223 |
public static function version(){
|
224 |
-
|
225 |
-
return $classInstance->version;
|
226 |
}
|
227 |
|
228 |
public static function isTesting(){
|
@@ -240,6 +244,7 @@ class SPDSGVO{
|
|
240 |
*/
|
241 |
private function defineAdminHooks(){
|
242 |
$admin = new SPDSGVOAdmin();
|
|
|
243 |
$this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_styles');
|
244 |
$this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_scripts');
|
245 |
|
@@ -256,7 +261,7 @@ class SPDSGVO{
|
|
256 |
|
257 |
// gravity forms action
|
258 |
$this->loader->add_action('gform_after_submission', $admin, 'gf_after_submisison_cleanse', 10, 2);
|
259 |
-
|
260 |
}
|
261 |
|
262 |
/**
|
@@ -273,13 +278,16 @@ class SPDSGVO{
|
|
273 |
$this->loader->add_action('upload_mimes', $public, 'allowJSON');
|
274 |
$this->loader->add_action('user_register', $public, 'newUserRegistered', 10, 1);
|
275 |
$this->loader->add_action('wp', $public, 'forcePermisson');
|
276 |
-
$this->loader->add_action('init', $public, '
|
277 |
$this->loader->add_action('sp_dsgvo_collect_user_data', $public, 'collectUserData');
|
278 |
$this->loader->add_action('wp_print_footer_scripts', $public, 'wp_print_footer_scripts');
|
279 |
-
$this->loader->add_action('wp_footer', $public, 'writeFooterScripts', 1000);
|
280 |
-
$this->loader->add_action('wp_head', $public, 'writeHeaderScripts');
|
281 |
$this->loader->add_action('comment_form', $public, 'addCommentsCheckBoxForDSGVO' );
|
282 |
-
|
|
|
|
|
|
|
283 |
}
|
284 |
|
285 |
/**
|
69 |
if(!isset(static::$instance)){
|
70 |
static::$instance = new static;
|
71 |
}
|
72 |
+
|
73 |
return static::$instance;
|
74 |
}
|
75 |
|
84 |
if(!class_exists('TCPDF')){
|
85 |
require_once SPDSGVO::pluginDir('includes/lib/tcpdf/tcpdf.php');
|
86 |
require_once SPDSGVO::pluginDir('includes/class-sp-dsgvo-pdf.php');
|
87 |
+
}
|
88 |
|
89 |
$load = array(
|
90 |
//======================================================================
|
117 |
//======================================================================
|
118 |
SPDSGVO::pluginDir('includes/cron/do-subject-access-request.php'),
|
119 |
SPDSGVO::pluginDir('includes/cron/do-delete-data-request.php'),
|
120 |
+
|
121 |
|
122 |
//======================================================================
|
123 |
// Actions
|
125 |
SPDSGVO::pluginDir('public/actions/unsubscribe.php'),
|
126 |
SPDSGVO::pluginDir('public/actions/explicit-permission.php'),
|
127 |
SPDSGVO::pluginDir('public/actions/user-permissions.php'),
|
128 |
+
/* i592995 */
|
129 |
+
SPDSGVO::pluginDir('public/actions/popup-accept.php'),
|
130 |
+
/* i592995 */
|
131 |
+
|
132 |
|
133 |
//======================================================================
|
134 |
// Shortcodes
|
137 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/download-subject-access-request.php'),
|
138 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request-action.php'),
|
139 |
SPDSGVO::pluginDir('public/shortcodes/subject-access-request/subject-access-request.php'),
|
140 |
+
|
141 |
// Super Unsubscribe
|
142 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form.php'),
|
143 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-form-action.php'),
|
144 |
SPDSGVO::pluginDir('public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php'),
|
145 |
+
|
146 |
|
147 |
SPDSGVO::pluginDir('public/shortcodes/privacy-policy.php'),
|
148 |
SPDSGVO::pluginDir('public/shortcodes/explicit-permission.php'),
|
|
|
149 |
SPDSGVO::pluginDir('public/shortcodes/decline-permission.php'),
|
150 |
SPDSGVO::pluginDir('public/shortcodes/privacy-settings-form.php'),
|
151 |
+
/* i592995 */
|
152 |
+
SPDSGVO::pluginDir('public/shortcodes/privacy-settings-form-alt.php'),
|
153 |
+
/* i592995 */
|
154 |
SPDSGVO::pluginDir('public/shortcodes/display-services.php'),
|
155 |
SPDSGVO::pluginDir('public/shortcodes/imprint.php'),
|
156 |
|
157 |
//======================================================================
|
158 |
// Default Integrations
|
159 |
//======================================================================
|
160 |
+
SPDSGVO::pluginDir('includes/integrations/mailchimp/MailchimpIntegration.php'),
|
161 |
+
SPDSGVO::pluginDir('includes/integrations/woocommerce/WoocommerceIntegration.php'),
|
162 |
SPDSGVO::pluginDir('includes/integrations/cf7/Cf7Integration.php'),
|
163 |
+
SPDSGVO::pluginDir('includes/integrations/bbpress/BbpressIntegration.php'),
|
164 |
+
SPDSGVO::pluginDir('includes/integrations/buddypress/BuddyPressIntegration.php'),
|
165 |
|
166 |
|
167 |
//======================================================================
|
175 |
// Super Unsubscribe
|
176 |
SPDSGVO::pluginDir('admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php'),
|
177 |
SPDSGVO::pluginDir('admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-action.php'),
|
178 |
+
/* i592995 */
|
179 |
+
SPDSGVO::pluginDir('admin/tabs/super-unsubscribe/class-sp-dsgvo-dismiss-unsubscribe-action.php'),
|
180 |
+
/* i592995 */
|
181 |
|
182 |
// Services
|
183 |
SPDSGVO::pluginDir('admin/tabs/services/class-sp-dsgvo-services-tab.php'),
|
189 |
SPDSGVO::pluginDir('admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php'),
|
190 |
SPDSGVO::pluginDir('admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-action.php'),
|
191 |
|
|
|
|
|
|
|
|
|
192 |
// Imprint
|
193 |
SPDSGVO::pluginDir('admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php'),
|
194 |
SPDSGVO::pluginDir('admin/tabs/imprint/class-sp-dsgvo-imprint-action.php'),
|
195 |
+
|
|
|
|
|
|
|
196 |
|
197 |
// Common Settings
|
198 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php'),
|
199 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-action.php'),
|
200 |
SPDSGVO::pluginDir('admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php'),
|
201 |
+
|
202 |
// Cookie Notice
|
203 |
SPDSGVO::pluginDir('admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php'),
|
204 |
SPDSGVO::pluginDir('admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-action.php'),
|
205 |
+
|
206 |
// Integrations
|
207 |
SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php'),
|
208 |
SPDSGVO::pluginDir('admin/tabs/integrations/class-sp-dsgvo-integrations-action.php'),
|
226 |
}
|
227 |
|
228 |
public static function version(){
|
229 |
+
return (new self)->version;
|
|
|
230 |
}
|
231 |
|
232 |
public static function isTesting(){
|
244 |
*/
|
245 |
private function defineAdminHooks(){
|
246 |
$admin = new SPDSGVOAdmin();
|
247 |
+
$this->loader->add_action('init', $admin, 'adminInit');
|
248 |
$this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_styles');
|
249 |
$this->loader->add_action('admin_enqueue_scripts', $admin, 'enqueue_scripts');
|
250 |
|
261 |
|
262 |
// gravity forms action
|
263 |
$this->loader->add_action('gform_after_submission', $admin, 'gf_after_submisison_cleanse', 10, 2);
|
264 |
+
|
265 |
}
|
266 |
|
267 |
/**
|
278 |
$this->loader->add_action('upload_mimes', $public, 'allowJSON');
|
279 |
$this->loader->add_action('user_register', $public, 'newUserRegistered', 10, 1);
|
280 |
$this->loader->add_action('wp', $public, 'forcePermisson');
|
281 |
+
$this->loader->add_action('init', $public, 'publicInit');
|
282 |
$this->loader->add_action('sp_dsgvo_collect_user_data', $public, 'collectUserData');
|
283 |
$this->loader->add_action('wp_print_footer_scripts', $public, 'wp_print_footer_scripts');
|
284 |
+
$this->loader->add_action('wp_footer', $public, 'writeFooterScripts', 1000);
|
285 |
+
$this->loader->add_action('wp_head', $public, 'writeHeaderScripts');
|
286 |
$this->loader->add_action('comment_form', $public, 'addCommentsCheckBoxForDSGVO' );
|
287 |
+
$this->loader->add_action('wpcf7_init', $public, 'wpcf7AddDsgvoTag' );
|
288 |
+
$this->loader->add_action('woocommerce_after_order_notes', $public, 'wooAddCustomFields' );
|
289 |
+
$this->loader->add_action('woocommerce_checkout_process', $public, 'wooAddCustomCheckout');
|
290 |
+
$this->loader->add_action('woocommerce_checkout_update_order_meta', $public, 'wooUpdateOrderMeta');
|
291 |
}
|
292 |
|
293 |
/**
|
includes/cron/do-delete-data-request.php
CHANGED
@@ -5,30 +5,30 @@ Class DoDSGVODeleteDataRequest extends SPDSGVOCron{
|
|
5 |
public $interval = array(
|
6 |
'days' => 1,
|
7 |
);
|
8 |
-
|
9 |
public function handle(){
|
10 |
$delCron = SPDSGVOSettings::get('su_auto_del_time');
|
11 |
if($delCron !== '0'){
|
12 |
-
|
13 |
$daysAgo = strtotime('-'.$delCron.' day');
|
14 |
-
|
15 |
-
error_log('DoDSGVODeleteDataRequest with days: '.$delCron . ' and intval: '.$daysAgo);
|
16 |
-
|
17 |
foreach(SPDSGVOUnsubscriber::finder('pending') as $sar){
|
18 |
-
|
19 |
$post = $sar->_post;// get_post($sar->ID);
|
20 |
-
error_log('doing sar '. $sar->ID . ' with intval '. intval(strtotime($post->post_date)));
|
21 |
-
|
22 |
-
if (intval(strtotime($post->post_date)) <= intval($daysAgo))
|
23 |
{
|
24 |
$sar->doSuperUnsubscribe();
|
25 |
-
} else
|
26 |
{
|
27 |
-
error_log('sar '. $sar->ID . ' has not the date to process');
|
28 |
}
|
29 |
}
|
30 |
}
|
31 |
}
|
32 |
}
|
33 |
|
34 |
-
DoDSGVODeleteDataRequest::register();
|
5 |
public $interval = array(
|
6 |
'days' => 1,
|
7 |
);
|
8 |
+
|
9 |
public function handle(){
|
10 |
$delCron = SPDSGVOSettings::get('su_auto_del_time');
|
11 |
if($delCron !== '0'){
|
12 |
+
|
13 |
$daysAgo = strtotime('-'.$delCron.' day');
|
14 |
+
|
15 |
+
error_log(__('DoDSGVODeleteDataRequest with days:', 'shapepress-dsgvo').' '.$delCron . ' ' . __('and intval:', 'shapepress-dsgvo') . ' '.$daysAgo);
|
16 |
+
|
17 |
foreach(SPDSGVOUnsubscriber::finder('pending') as $sar){
|
18 |
+
|
19 |
$post = $sar->_post;// get_post($sar->ID);
|
20 |
+
error_log(__('doing sar', 'shapepress-dsgvo') . ' '. $sar->ID . ' ' . __('with intval', 'shapepress-dsgvo') . ' '. intval(strtotime($post->post_date)));
|
21 |
+
|
22 |
+
if (intval(strtotime($post->post_date)) <= intval($daysAgo))
|
23 |
{
|
24 |
$sar->doSuperUnsubscribe();
|
25 |
+
} else
|
26 |
{
|
27 |
+
error_log(__('sar', 'shapepress-dsgvo') . ' '. $sar->ID . ' ' . __('has not the date to process', 'shapepress-dsgvo'));
|
28 |
}
|
29 |
}
|
30 |
}
|
31 |
}
|
32 |
}
|
33 |
|
34 |
+
DoDSGVODeleteDataRequest::register();
|
includes/cron/do-subject-access-request.php
CHANGED
@@ -5,24 +5,24 @@ Class DoDSGVOSubjectAccessRequest extends SPDSGVOCron{
|
|
5 |
public $interval = array(
|
6 |
'days' => 1,
|
7 |
);
|
8 |
-
|
9 |
public function handle(){
|
10 |
$sarCron = SPDSGVOSettings::get('sar_cron');
|
11 |
if($sarCron !== '0'){
|
12 |
-
|
13 |
$daysAgo = strtotime('-'.$sarCron.' day');
|
14 |
-
|
15 |
//error_log('DoDSGVOSubjectAccessRequest with days: '.$sarCron . ' and intval: '.$daysAgo);
|
16 |
-
|
17 |
foreach(SPDSGVOSubjectAccessRequest::finder('pending') as $sar){
|
18 |
-
|
19 |
$post = $sar->_post;// get_post($sar->ID);
|
20 |
//error_log('doing sar '. $sar->ID . ' with intval '. intval(strtotime($post->post_date)));
|
21 |
-
|
22 |
-
if (intval(strtotime($post->post_date)) <= intval($daysAgo))
|
23 |
{
|
24 |
$sar->doSubjectAccessRequest();
|
25 |
-
} else
|
26 |
{
|
27 |
//error_log('sar '. $sar->ID . ' has not the date to process');
|
28 |
}
|
@@ -31,4 +31,4 @@ Class DoDSGVOSubjectAccessRequest extends SPDSGVOCron{
|
|
31 |
}
|
32 |
}
|
33 |
|
34 |
-
DoDSGVOSubjectAccessRequest::register();
|
5 |
public $interval = array(
|
6 |
'days' => 1,
|
7 |
);
|
8 |
+
|
9 |
public function handle(){
|
10 |
$sarCron = SPDSGVOSettings::get('sar_cron');
|
11 |
if($sarCron !== '0'){
|
12 |
+
|
13 |
$daysAgo = strtotime('-'.$sarCron.' day');
|
14 |
+
|
15 |
//error_log('DoDSGVOSubjectAccessRequest with days: '.$sarCron . ' and intval: '.$daysAgo);
|
16 |
+
|
17 |
foreach(SPDSGVOSubjectAccessRequest::finder('pending') as $sar){
|
18 |
+
|
19 |
$post = $sar->_post;// get_post($sar->ID);
|
20 |
//error_log('doing sar '. $sar->ID . ' with intval '. intval(strtotime($post->post_date)));
|
21 |
+
|
22 |
+
if (intval(strtotime($post->post_date)) <= intval($daysAgo))
|
23 |
{
|
24 |
$sar->doSubjectAccessRequest();
|
25 |
+
} else
|
26 |
{
|
27 |
//error_log('sar '. $sar->ID . ' has not the date to process');
|
28 |
}
|
31 |
}
|
32 |
}
|
33 |
|
34 |
+
DoDSGVOSubjectAccessRequest::register();
|
includes/helpers.php
CHANGED
@@ -1,164 +1,228 @@
|
|
1 |
<?php
|
|
|
2 |
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
$user = get_user_by('ID', $user);
|
10 |
-
}
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
return FALSE;
|
15 |
-
}
|
16 |
-
|
17 |
-
return wp_hash(SPDSGVOSettings::get('terms_conditions')) === @$_COOKIE['sp_dsgvo_explicit_permission_given'];
|
18 |
-
}
|
19 |
-
|
20 |
-
return get_user_meta($user->ID, 'sp_dsgvo_explicit_permission_granted', TRUE) === '1';
|
21 |
-
}
|
22 |
|
|
|
|
|
23 |
}
|
24 |
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
}
|
36 |
-
|
37 |
}
|
38 |
|
|
|
39 |
|
40 |
-
|
|
|
|
|
41 |
|
42 |
-
|
43 |
-
|
|
|
|
|
|
|
44 |
|
45 |
-
|
46 |
-
return get_user_meta($user->ID, 'sp_dsgvo_CSRF_token', TRUE);
|
47 |
-
}
|
48 |
-
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
60 |
-
|
61 |
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
63 |
|
|
|
|
|
|
|
64 |
|
65 |
-
|
|
|
|
|
66 |
|
67 |
-
|
68 |
-
$user = wp_get_current_user();
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
if($user instanceof WP_User && $user->ID){
|
74 |
-
$userPermissions = get_user_meta($user->ID, 'sp_dsgvo_user_permissions', TRUE);
|
75 |
-
}else{
|
76 |
-
$userPermissions = @$_COOKIE['sp_dsgvo_user_permissions'];
|
77 |
-
$userPermissions = unserialize(stripslashes($userPermissions));
|
78 |
-
}
|
79 |
|
80 |
-
|
81 |
-
return $userPermissions['cookies'] == '1'|| $cnAccepted;
|
82 |
-
}
|
83 |
-
//error_log('hasUserGivenPermissionFor: '.$slug .': '. 'NULL');
|
84 |
-
return $cnAccepted; // at last its false -> opt-in
|
85 |
-
}
|
86 |
|
87 |
-
|
88 |
-
if($user instanceof WP_User && $user->ID){
|
89 |
-
|
90 |
-
$userPermissions = get_user_meta($user->ID, 'sp_dsgvo_user_permissions', TRUE);
|
91 |
|
92 |
-
|
93 |
|
94 |
-
|
|
|
95 |
|
96 |
-
|
97 |
-
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
$defaults = SPDSGVOSettings::get('services');
|
104 |
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
|
|
109 |
|
110 |
-
|
111 |
-
return FALSE;
|
112 |
-
}
|
113 |
-
}
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
116 |
|
117 |
-
if(!function_exists('
|
118 |
-
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
121 |
}
|
122 |
|
123 |
-
if(!function_exists('
|
124 |
-
|
125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
}
|
127 |
}
|
128 |
|
129 |
-
if(!function_exists('
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
&& isFree();
|
135 |
}
|
136 |
}
|
137 |
|
138 |
-
if(!function_exists('
|
139 |
-
|
140 |
-
|
141 |
-
|
|
|
142 |
}
|
143 |
}
|
144 |
|
145 |
-
if(!function_exists('
|
146 |
-
|
147 |
-
|
|
|
|
|
148 |
}
|
149 |
}
|
150 |
|
|
|
151 |
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
}
|
157 |
|
|
|
158 |
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
$content = str_replace('ä', '�', $content);
|
163 |
$content = str_replace('Ä', '�', $content);
|
164 |
$content = str_replace('ü', '�', $content);
|
@@ -176,10 +240,154 @@ if(!function_exists('convDeChars')){
|
|
176 |
$content = str_replace('�', 'Ö', $content);
|
177 |
$content = str_replace('�', 'ß', $content);
|
178 |
$content = str_replace('�', '$szlig;', $content);
|
179 |
-
|
180 |
return $content;
|
181 |
}
|
182 |
}
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
-
|
1 |
<?php
|
2 |
+
if (! function_exists('hasUserAgreedToTerms')) {
|
3 |
|
4 |
+
function hasUserAgreedToTerms($user = NULL)
|
5 |
+
{
|
6 |
+
if (is_null($user)) {
|
7 |
+
$user = wp_get_current_user();
|
8 |
+
} elseif (! $user instanceof WP_User) {
|
9 |
+
$user = get_user_by('ID', $user);
|
10 |
+
}
|
11 |
|
12 |
+
if (! $user instanceof WP_User) {
|
13 |
+
if (! isset($_COOKIE['sp_dsgvo_explicit_permission_given'])) {
|
14 |
+
return FALSE;
|
15 |
+
}
|
|
|
|
|
16 |
|
17 |
+
return wp_hash(SPDSGVOSettings::get('terms_conditions')) === @$_COOKIE['sp_dsgvo_explicit_permission_given'];
|
18 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
+
return get_user_meta($user->ID, 'sp_dsgvo_explicit_permission_granted', TRUE) === '1';
|
21 |
+
}
|
22 |
}
|
23 |
|
24 |
+
if (! function_exists('hasUserDeclinedTerms')) {
|
25 |
|
26 |
+
function hasUserDeclinedTerms()
|
27 |
+
{
|
28 |
+
$user = wp_get_current_user();
|
29 |
+
if ($user instanceof WP_User && $user->ID) {
|
30 |
+
return (get_user_meta($user->ID, 'sp_dsgvo_explicit_permission_declined', TRUE) === '1');
|
31 |
+
} else {
|
32 |
+
return (@$_COOKIE['sp_dsgvo_explicit_permission_declined'] === '1');
|
33 |
+
}
|
34 |
+
}
|
|
|
|
|
35 |
}
|
36 |
|
37 |
+
if (! function_exists('sp_dsgvo_CSRF_TOKEN')) {
|
38 |
|
39 |
+
function sp_dsgvo_CSRF_TOKEN()
|
40 |
+
{
|
41 |
+
$user = wp_get_current_user();
|
42 |
|
43 |
+
if ($user instanceof WP_User && $user->ID) {
|
44 |
+
return get_user_meta($user->ID, 'sp_dsgvo_CSRF_token', TRUE);
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
|
49 |
+
if (! function_exists('pageContainsString')) {
|
|
|
|
|
|
|
50 |
|
51 |
+
function pageContainsString($pageID, $string)
|
52 |
+
{
|
53 |
+
if (get_post_status($pageID) === FALSE) {
|
54 |
+
return FALSE;
|
55 |
+
}
|
56 |
+
|
57 |
+
return (strpos(get_post($pageID)->post_content, $string) !== FALSE);
|
58 |
+
}
|
59 |
}
|
60 |
|
61 |
+
/* i592995 */
|
62 |
+
if(!function_exists('hasUserAcceptedPopup')) :
|
63 |
+
function hasUserAcceptedPopup()
|
64 |
+
{
|
65 |
+
$user = wp_get_current_user();
|
66 |
+
$accept = false;
|
67 |
+
if($user->ID != 0) {
|
68 |
+
$meta = get_user_meta($user->ID, 'sp_dsgvo_popup', TRUE);
|
69 |
+
if($meta != '') {
|
70 |
+
$accept = true;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
if(!$accept) {
|
75 |
+
if(isset($_COOKIE['sp_dsgvo_popup'])) {
|
76 |
+
$cookie = $_COOKIE['sp_dsgvo_popup'];
|
77 |
+
if($cookie != null) {
|
78 |
+
$accept = true;
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
return $accept;
|
83 |
+
}
|
84 |
+
endif;
|
85 |
+
/* i592995 */
|
86 |
+
|
87 |
+
if (! function_exists('hasUserGivenPermissionFor')) {
|
88 |
|
89 |
+
function hasUserGivenPermissionFor($slug)
|
90 |
+
{
|
91 |
+
//error_log('hasUserGivenPermissionFor: '.$slug);
|
92 |
+
$user = wp_get_current_user();
|
93 |
|
94 |
+
if ($slug === 'cookies') {
|
95 |
+
$cnAccepted = sp_dsgvo_cn_cookies_accepted();
|
96 |
|
97 |
+
if ($user instanceof WP_User && $user->ID) {
|
98 |
+
$userPermissions = get_user_meta($user->ID, 'sp_dsgvo_user_permissions', TRUE);
|
99 |
+
} else {
|
100 |
+
$userPermissions = @$_COOKIE['sp_dsgvo_user_permissions'];
|
101 |
+
$userPermissions = unserialize(stripslashes($userPermissions));
|
102 |
+
}
|
103 |
|
104 |
+
if (isset($userPermissions['cookies'])) {
|
105 |
+
return $userPermissions['cookies'] == '1' || $cnAccepted;
|
106 |
+
}
|
107 |
|
108 |
+
// error_log('hasUserGivenPermissionFor: '.$slug .': '. 'NULL');
|
109 |
+
return $cnAccepted; // at last its false -> opt-in
|
110 |
+
}
|
111 |
|
112 |
+
if ($user instanceof WP_User && $user->ID) {
|
|
|
113 |
|
114 |
+
$userPermissions = get_user_meta($user->ID, 'sp_dsgvo_user_permissions', TRUE);
|
115 |
+
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
+
$userPermissions = @$_COOKIE['sp_dsgvo_user_permissions'];
|
|
|
|
|
|
|
|
|
|
|
118 |
|
119 |
+
$userPermissions = unserialize(stripslashes($userPermissions));
|
|
|
|
|
|
|
120 |
|
121 |
+
}
|
122 |
|
123 |
+
// error_log('$userPermissions');
|
124 |
+
// error_log(implode(',',$userPermissions));
|
125 |
|
126 |
+
if (isset($userPermissions[$slug])) {
|
127 |
+
// error_log('hasUserGivenPermissionFor: ' . $slug);
|
128 |
+
// error_log($userPermissions[$slug]);
|
129 |
+
// error_log($userPermissions[$slug] == '1');
|
130 |
+
return $userPermissions[$slug] == '1';
|
131 |
+
} else {
|
132 |
+
$defaults = SPDSGVOSettings::get('services');
|
133 |
|
134 |
+
if (isset($defaults[$slug])) {
|
135 |
+
error_log('hasUserGivenPermissionFor: ' . $slug . ': ' . @$defaults[$slug]['default'] === '1');
|
136 |
+
return @$defaults[$slug]['default'] === '1';
|
137 |
+
}
|
|
|
138 |
|
139 |
+
error_log('hasUserGivenPermissionFor: ' . $slug . ': ' . 'FALSE');
|
140 |
+
return FALSE;
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
|
145 |
+
if (! function_exists('isBlogEdition')) {
|
|
|
|
|
|
|
146 |
|
147 |
+
function isBlogEdition()
|
148 |
+
{
|
149 |
+
$license = SPDSGVOSettings::get('dsgvo_licence');
|
150 |
+
if ($license === '' || strlen($license) < 2) return false;
|
151 |
+
|
152 |
+
return substr( $license, 0, 2 ) === "PB";
|
153 |
+
}
|
154 |
}
|
155 |
|
156 |
+
if (! function_exists('isPremiumEdition')) {
|
157 |
+
|
158 |
+
function isPremiumEdition()
|
159 |
+
{
|
160 |
+
$license = SPDSGVOSettings::get('dsgvo_licence');
|
161 |
+
if ($license === '' || strlen($license) < 2) return false;
|
162 |
+
|
163 |
+
return substr( $license, 0, 2 ) === "PR" //
|
164 |
+
|| substr( $license, 0, 2 ) === "PP" // plus
|
165 |
+
|| substr( $license, 0, 2 ) === "PD" // dev
|
166 |
+
|| substr( $license, 0, 4 ) === "DEMO";
|
167 |
}
|
168 |
}
|
169 |
|
170 |
+
if (! function_exists('isLicenceValid')) {
|
171 |
+
|
172 |
+
function isLicenceValid()
|
173 |
+
{
|
174 |
+
if (isBlogEdition())
|
175 |
+
{
|
176 |
+
return SPDSGVOSettings::get('dsgvo_licence') !== '' &&
|
177 |
+
// && SPDSGVOSettings::get('license_key_error') === '0'
|
178 |
+
SPDSGVOSettings::get('license_activated') === '1';
|
179 |
+
} else
|
180 |
+
{
|
181 |
+
return SPDSGVOSettings::get('dsgvo_licence') !== '' &&
|
182 |
+
// && SPDSGVOSettings::get('license_key_error') === '0'
|
183 |
+
SPDSGVOSettings::get('license_activated') === '1'
|
184 |
+
&& (strtotime('today') <= strtotime(SPDSGVOSettings::get('licence_valid_to')));
|
185 |
+
}
|
186 |
+
|
187 |
}
|
188 |
}
|
189 |
|
190 |
+
if (! function_exists('isValidBlogEdition')) {
|
191 |
+
|
192 |
+
function isValidBlogEdition()
|
193 |
+
{
|
194 |
+
return isLicenceValid() && isBlogEdition();
|
|
|
195 |
}
|
196 |
}
|
197 |
|
198 |
+
if (! function_exists('isValidPremiumEdition')) {
|
199 |
+
|
200 |
+
function isValidPremiumEdition()
|
201 |
+
{
|
202 |
+
return isLicenceValid() && isPremiumEdition();
|
203 |
}
|
204 |
}
|
205 |
|
206 |
+
if (! function_exists('createLog')) {
|
207 |
+
|
208 |
+
function createLog($content)
|
209 |
+
{
|
210 |
+
return SPDSGVOLog::insert($content);
|
211 |
}
|
212 |
}
|
213 |
|
214 |
+
if (! function_exists('spdsgvoUseWpml')) {
|
215 |
|
216 |
+
function spdsgvoUseWpml()
|
217 |
+
{
|
218 |
+
return SPDSGVOSettings::get('use_wpml_strings') === '1';
|
219 |
+
}
|
220 |
}
|
221 |
|
222 |
+
if (! function_exists('convDeChars')) {
|
223 |
|
224 |
+
function convDeChars($content)
|
225 |
+
{
|
|
|
226 |
$content = str_replace('ä', '�', $content);
|
227 |
$content = str_replace('Ä', '�', $content);
|
228 |
$content = str_replace('ü', '�', $content);
|
240 |
$content = str_replace('�', 'Ö', $content);
|
241 |
$content = str_replace('�', 'ß', $content);
|
242 |
$content = str_replace('�', '$szlig;', $content);
|
243 |
+
|
244 |
return $content;
|
245 |
}
|
246 |
}
|
247 |
|
248 |
+
/* i592995 */
|
249 |
+
if(!function_exists('popup_styling')) :
|
250 |
+
function popup_styling() {
|
251 |
+
$background = SPDSGVOSettings::get('popup_background');
|
252 |
+
if($background == '') {
|
253 |
+
$background = '#ffffff';
|
254 |
+
}
|
255 |
+
$separators = SPDSGVOSettings::get('separators_color');
|
256 |
+
if($separators == '') {
|
257 |
+
$separators = '#f1f1f1';
|
258 |
+
}
|
259 |
+
$text_color = SPDSGVOSettings::get('text_color');
|
260 |
+
if($text_color == '') {
|
261 |
+
$text_color = '#f1f1f1';
|
262 |
+
}
|
263 |
+
$links_color = SPDSGVOSettings::get('links_color');
|
264 |
+
if($links_color == '') {
|
265 |
+
$links_color = '#4285f4';
|
266 |
+
}
|
267 |
+
$links_color_hover = SPDSGVOSettings::get('links_color_hover');
|
268 |
+
if($links_color_hover == '') {
|
269 |
+
$links_color_hover = '#4285f4';
|
270 |
+
}
|
271 |
+
$accept_button_text_color = SPDSGVOSettings::get('accept_button_text_color');
|
272 |
+
if($accept_button_text_color == '') {
|
273 |
+
$accept_button_text_color = '#ffffff';
|
274 |
+
}
|
275 |
+
$accept_button_bg_color = SPDSGVOSettings::get('accept_button_bg_color');
|
276 |
+
if($accept_button_bg_color == '') {
|
277 |
+
$accept_button_bg_color = '#4285f4';
|
278 |
+
}
|
279 |
+
?>
|
280 |
+
<style>
|
281 |
+
.dsgvo-privacy-popup {
|
282 |
+
background-color: <?php echo $background; ?>;
|
283 |
+
}
|
284 |
+
.dsgvo-privacy-popup .popup-bottom {
|
285 |
+
border-top: 1px solid <?php echo $separators; ?>;
|
286 |
+
background-color: <?php echo $background; ?>;
|
287 |
+
}
|
288 |
+
.dsgvo-privacy-popup .popup-top {
|
289 |
+
border-bottom: 1px solid <?php echo $separators; ?>;
|
290 |
+
}
|
291 |
+
.lang-active svg line,
|
292 |
+
.dsgvo-popup-close svg line {
|
293 |
+
stroke: <?php echo $text_color; ?>;
|
294 |
+
}
|
295 |
+
.dsgvo-privacy-popup span,
|
296 |
+
.accordion-top span,
|
297 |
+
.dsgvo-privacy-popup p,
|
298 |
+
.dsgvo-privacy-popup div,
|
299 |
+
.dsgvo-privacy-popup strong,
|
300 |
+
.dsgvo-privacy-popup h1,
|
301 |
+
.dsgvo-privacy-popup h2,
|
302 |
+
.dsgvo-privacy-popup h3,
|
303 |
+
.dsgvo-privacy-popup h4,
|
304 |
+
.dsgvo-privacy-popup h5,
|
305 |
+
.dsgvo-privacy-popup h6 {
|
306 |
+
color: <?php echo $text_color; ?>;
|
307 |
+
}
|
308 |
+
.dsgvo-privacy-popup a,
|
309 |
+
.dsgvo-privacy-popup a span {
|
310 |
+
color: <?php echo $links_color; ?>;
|
311 |
+
}
|
312 |
+
.dsgvo-privacy-popup a:hover,
|
313 |
+
.dsgvo-privacy-popup a:hover span {
|
314 |
+
color: <?php echo $links_color_hover; ?>;
|
315 |
+
}
|
316 |
+
.accept-button {
|
317 |
+
color: <?php echo $accept_button_text_color; ?> !important;
|
318 |
+
background-color: <?php echo $accept_button_bg_color; ?>;
|
319 |
+
}
|
320 |
+
.accept-button:hover {
|
321 |
+
color: <?php echo $accept_button_text_color; ?> !important;
|
322 |
+
}
|
323 |
+
.accept-button .accept-loader circle {
|
324 |
+
stroke: <?php echo $accept_button_text_color; ?>;
|
325 |
+
}
|
326 |
+
</style>
|
327 |
+
<?php
|
328 |
+
}
|
329 |
+
endif;
|
330 |
+
add_action('wp_head', 'popup_styling');
|
331 |
+
/* i592995 */
|
332 |
+
|
333 |
+
/* i592995 */
|
334 |
+
if(!function_exists('googleAnalyticsScript')) :
|
335 |
+
function googleAnalyticsScript($return = false) {
|
336 |
+
ob_start();
|
337 |
+
?>
|
338 |
+
|
339 |
+
<!-- Google Analytics -->
|
340 |
+
<script>
|
341 |
+
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
342 |
+
ga('create', '<?= SPDSGVOSettings::get('ga_tag_number') ?>', 'auto');
|
343 |
+
ga('set', 'anonymizeIp', true);
|
344 |
+
ga('send', 'pageview');
|
345 |
+
</script>
|
346 |
+
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
347 |
+
<!-- End Google Analytics -->
|
348 |
+
|
349 |
+
<?php
|
350 |
+
$code = ob_get_clean();
|
351 |
+
if($return) {
|
352 |
+
return $code;
|
353 |
+
} else {
|
354 |
+
echo $code;
|
355 |
+
}
|
356 |
+
}
|
357 |
+
endif;
|
358 |
+
|
359 |
+
if(!function_exists('facebookPixelScript')) :
|
360 |
+
function facebookPixelScript($return = false) {
|
361 |
+
ob_start();
|
362 |
+
?>
|
363 |
+
|
364 |
+
<!-- Facebook Pixel Code -->
|
365 |
+
<script>
|
366 |
+
!function(f,b,e,v,n,t,s)
|
367 |
+
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
368 |
+
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
369 |
+
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
370 |
+
n.queue=[];t=b.createElement(e);t.async=!0;
|
371 |
+
t.src=v;s=b.getElementsByTagName(e)[0];
|
372 |
+
s.parentNode.insertBefore(t,s)}(window, document,'script',
|
373 |
+
'https://connect.facebook.net/en_US/fbevents.js');
|
374 |
+
fbq('init', '<?= SPDSGVOSettings::get('fb_pixel_number') ?>');
|
375 |
+
fbq('track', 'PageView');
|
376 |
+
</script>
|
377 |
+
<noscript>
|
378 |
+
<img height="1" width="1" style="display: none"
|
379 |
+
src="https://www.facebook.com/tr?id=[pixel_number]&ev=PageView&noscript=1" />
|
380 |
+
</noscript>
|
381 |
+
<!-- End Facebook Pixel Code -->
|
382 |
+
|
383 |
+
<?php
|
384 |
+
$code = ob_get_clean();
|
385 |
+
if($return) {
|
386 |
+
return $code;
|
387 |
+
} else {
|
388 |
+
echo $code;
|
389 |
+
}
|
390 |
+
}
|
391 |
+
endif;
|
392 |
|
393 |
+
/* i592995 */
|
includes/html/index-footer.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
<li class="clear-fix"></li>
|
4 |
+
<li class="pagination">
|
5 |
+
<p>
|
6 |
+
<?php _e('Downloaded from', 'shapepress-dsgvo'); ?> <a href="[home_url]">[home_url]</a> <?php _e('on', 'shapepress-dsgvo'); ?> [date_now]
|
7 |
+
</p>
|
8 |
+
</li>
|
9 |
+
</ul>
|
10 |
+
</div>
|
11 |
+
</main>
|
12 |
+
</body>
|
13 |
+
<script>
|
14 |
+
(function($){
|
15 |
+
|
16 |
+
$('.form-control').keyup(function(){
|
17 |
+
var search = $(this).val().toLowerCase();
|
18 |
+
|
19 |
+
if(search.length > 2){
|
20 |
+
$('.row').each(function(i, ele){
|
21 |
+
var title = $(ele).find('.grid-title').html().toLowerCase();
|
22 |
+
var data = $(ele).find('.grid-date').html().toLowerCase();
|
23 |
+
|
24 |
+
if(!title.includes(search) && !data.includes(search)){
|
25 |
+
$(ele).hide();
|
26 |
+
}else{
|
27 |
+
$(ele).show();
|
28 |
+
}
|
29 |
+
});
|
30 |
+
}else{
|
31 |
+
$('.row').show();
|
32 |
+
}
|
33 |
+
});
|
34 |
+
|
35 |
+
})(jQuery);
|
36 |
+
</script>
|
37 |
+
</html>
|
includes/html/index-header.php
ADDED
@@ -0,0 +1,429 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<title><?php _e('All data relating to', 'shapepress-dsgvo'); ?> [username]</title>
|
6 |
+
<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/Reklino/munkey-icons/master/munkey.css">
|
7 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
|
8 |
+
<script>
|
9 |
+
/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
|
10 |
+
!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a);
|
11 |
+
}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d);
|
12 |
+
});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r});
|
13 |
+
</script>
|
14 |
+
<style>
|
15 |
+
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,600,700);
|
16 |
+
.no-select, .grid-toggle, ul.grid.grid-list .grid-head ul li {
|
17 |
+
-webkit-user-select: none;
|
18 |
+
-moz-user-select: none;
|
19 |
+
-ms-user-select: none;
|
20 |
+
-o-user-select: none;
|
21 |
+
user-select: none;
|
22 |
+
}
|
23 |
+
|
24 |
+
::-webkit-input-placeholder {
|
25 |
+
color: #5d7592;
|
26 |
+
}
|
27 |
+
|
28 |
+
:-moz-placeholder {
|
29 |
+
color: #5d7592;
|
30 |
+
}
|
31 |
+
|
32 |
+
::-moz-placeholder {
|
33 |
+
color: #5d7592;
|
34 |
+
}
|
35 |
+
|
36 |
+
:-ms-input-placeholder {
|
37 |
+
color: #5d7592;
|
38 |
+
}
|
39 |
+
|
40 |
+
.m {
|
41 |
+
font-size: 28px;
|
42 |
+
}
|
43 |
+
|
44 |
+
body {
|
45 |
+
text-align: center;
|
46 |
+
background: #f9fcfe;
|
47 |
+
color: #38405e;
|
48 |
+
font-size: 16px;
|
49 |
+
font-family: 'Open Sans', sans-serif;
|
50 |
+
font-weight: 400;
|
51 |
+
-webkit-font-smoothing: antialiased;
|
52 |
+
-moz-osx-font-smoothing: grayscale;
|
53 |
+
text-rendering: optimizeLegibility;
|
54 |
+
}
|
55 |
+
|
56 |
+
header {
|
57 |
+
width: 100%;
|
58 |
+
background: #38405e;
|
59 |
+
padding: 3em 0;
|
60 |
+
color: white;
|
61 |
+
}
|
62 |
+
header h1 {
|
63 |
+
font-weight: 300;
|
64 |
+
font-size: 36px;
|
65 |
+
margin: 0.75em 0;
|
66 |
+
}
|
67 |
+
header h1 span {
|
68 |
+
font-size: 90%;
|
69 |
+
color: #1bbbef;
|
70 |
+
}
|
71 |
+
|
72 |
+
main {
|
73 |
+
padding: 1.5em 0 0;
|
74 |
+
}
|
75 |
+
|
76 |
+
footer, main {
|
77 |
+
max-width: 800px;
|
78 |
+
margin: 0 auto;
|
79 |
+
}
|
80 |
+
footer:after, main:after {
|
81 |
+
content: '';
|
82 |
+
display: block;
|
83 |
+
clear: both;
|
84 |
+
}
|
85 |
+
|
86 |
+
footer {
|
87 |
+
padding: 2em 0;
|
88 |
+
}
|
89 |
+
footer p {
|
90 |
+
color: #5d7592;
|
91 |
+
font-size: 14px;
|
92 |
+
}
|
93 |
+
|
94 |
+
.ctrls {
|
95 |
+
margin-bottom: 1em;
|
96 |
+
}
|
97 |
+
.ctrls:after {
|
98 |
+
content: '';
|
99 |
+
clear: both;
|
100 |
+
display: block;
|
101 |
+
}
|
102 |
+
|
103 |
+
.filter {
|
104 |
+
float: left;
|
105 |
+
width: 75%;
|
106 |
+
padding-left: 2.5em;
|
107 |
+
}
|
108 |
+
.filter .m {
|
109 |
+
color: #5d7592;
|
110 |
+
position: absolute;
|
111 |
+
margin-left: -1.25em;
|
112 |
+
}
|
113 |
+
.filter input {
|
114 |
+
width: 100%;
|
115 |
+
vertical-align: top;
|
116 |
+
height: 2em;
|
117 |
+
border: none;
|
118 |
+
background: #f9fcfe;
|
119 |
+
font-size: 16px;
|
120 |
+
font-weight: 300;
|
121 |
+
color: #5d7592;
|
122 |
+
outline: none;
|
123 |
+
padding: 0 0.5em;
|
124 |
+
}
|
125 |
+
|
126 |
+
.grid-toggle {
|
127 |
+
cursor: pointer;
|
128 |
+
float: right;
|
129 |
+
}
|
130 |
+
.grid-toggle a span {
|
131 |
+
color: #5d7592;
|
132 |
+
}
|
133 |
+
.grid-toggle a span:first-child {
|
134 |
+
color: #38405e;
|
135 |
+
margin-right: 12px;
|
136 |
+
}
|
137 |
+
.grid-toggle a.active span:first-child {
|
138 |
+
color: #5d7592;
|
139 |
+
}
|
140 |
+
.grid-toggle a.active span:last-child {
|
141 |
+
color: #38405e;
|
142 |
+
}
|
143 |
+
|
144 |
+
.btn {
|
145 |
+
text-decoration: none;
|
146 |
+
text-transform: uppercase;
|
147 |
+
font-weight: 600;
|
148 |
+
color: #5d7592;
|
149 |
+
}
|
150 |
+
|
151 |
+
ul.grid .grid-body ul li span {
|
152 |
+
display: inline-block;
|
153 |
+
line-height: normal;
|
154 |
+
vertical-align: middle;
|
155 |
+
}
|
156 |
+
ul.grid .grid-body ul li span.grid-icon {
|
157 |
+
color: #476283;
|
158 |
+
}
|
159 |
+
ul.grid .grid-body ul li span.grid-title a {
|
160 |
+
font-size: 16px;
|
161 |
+
font-weight: 500;
|
162 |
+
color: #38405e;
|
163 |
+
text-decoration: none;
|
164 |
+
}
|
165 |
+
ul.grid .grid-body ul li span.grid-title a:hover {
|
166 |
+
text-decoration: underline;
|
167 |
+
}
|
168 |
+
ul.grid .grid-body ul li span.grid-usericon {
|
169 |
+
margin-right: 12px;
|
170 |
+
font-size: 0;
|
171 |
+
width: 36px;
|
172 |
+
height: 36px;
|
173 |
+
line-height: 36px;
|
174 |
+
text-align: center;
|
175 |
+
background: #1bbbef;
|
176 |
+
-moz-border-radius: 100px;
|
177 |
+
-webkit-border-radius: 100px;
|
178 |
+
border-radius: 100px;
|
179 |
+
}
|
180 |
+
ul.grid .grid-body ul li span.grid-usericon:first-letter {
|
181 |
+
color: white;
|
182 |
+
font-size: 16px;
|
183 |
+
}
|
184 |
+
ul.grid .grid-body ul li span.grid-date, ul.grid .grid-body ul li span.grid-user {
|
185 |
+
color: #5d7592;
|
186 |
+
font-size: 14px;
|
187 |
+
}
|
188 |
+
ul.grid .grid-body ul li span a .m {
|
189 |
+
color: #5d7592;
|
190 |
+
}
|
191 |
+
|
192 |
+
ul.grid.grid-thumb:after {
|
193 |
+
content: '';
|
194 |
+
display: block;
|
195 |
+
clear: both;
|
196 |
+
}
|
197 |
+
ul.grid.grid-thumb .grid-head {
|
198 |
+
display: none;
|
199 |
+
}
|
200 |
+
ul.grid.grid-thumb .grid-body {
|
201 |
+
width: 50%;
|
202 |
+
float: left;
|
203 |
+
-moz-box-sizing: border-box;
|
204 |
+
-webkit-box-sizing: border-box;
|
205 |
+
box-sizing: border-box;
|
206 |
+
margin-bottom: 2em;
|
207 |
+
}
|
208 |
+
ul.grid.grid-thumb .grid-body:nth-child(even) {
|
209 |
+
padding-right: 1em;
|
210 |
+
}
|
211 |
+
ul.grid.grid-thumb .grid-body:nth-child(odd) {
|
212 |
+
padding-left: 1em;
|
213 |
+
}
|
214 |
+
ul.grid.grid-thumb .grid-body ul {
|
215 |
+
-moz-box-sizing: border-box;
|
216 |
+
-webkit-box-sizing: border-box;
|
217 |
+
box-sizing: border-box;
|
218 |
+
background: white;
|
219 |
+
border: 1px solid #dde8f0;
|
220 |
+
padding: 1em 1.5em .75em;
|
221 |
+
-moz-border-radius: 5px;
|
222 |
+
-webkit-border-radius: 5px;
|
223 |
+
border-radius: 5px;
|
224 |
+
float: left;
|
225 |
+
width: 100%;
|
226 |
+
}
|
227 |
+
ul.grid.grid-thumb .grid-body ul:after {
|
228 |
+
content: '';
|
229 |
+
display: block;
|
230 |
+
clear: both;
|
231 |
+
}
|
232 |
+
ul.grid.grid-thumb .grid-body ul li {
|
233 |
+
position: relative;
|
234 |
+
}
|
235 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-icon {
|
236 |
+
display: block;
|
237 |
+
font-size: 56px;
|
238 |
+
margin: 0 0 12px;
|
239 |
+
}
|
240 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-title {
|
241 |
+
display: block;
|
242 |
+
margin-bottom: 1em;
|
243 |
+
}
|
244 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-user {
|
245 |
+
margin-bottom: 2px;
|
246 |
+
}
|
247 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-user .grid-usericon {
|
248 |
+
position: absolute;
|
249 |
+
left: 0;
|
250 |
+
bottom: -37px;
|
251 |
+
}
|
252 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-date {
|
253 |
+
display: block;
|
254 |
+
}
|
255 |
+
ul.grid.grid-thumb .grid-body ul li span.grid-options {
|
256 |
+
float: right;
|
257 |
+
}
|
258 |
+
|
259 |
+
ul.grid.grid-list {
|
260 |
+
background: white;
|
261 |
+
border: 1px solid #dde8f0;
|
262 |
+
padding: 0 2em;
|
263 |
+
-moz-border-radius: 5px;
|
264 |
+
-webkit-border-radius: 5px;
|
265 |
+
border-radius: 5px;
|
266 |
+
}
|
267 |
+
ul.grid.grid-list li.grid-body {
|
268 |
+
border-bottom: 1px solid #dde8f0;
|
269 |
+
}
|
270 |
+
ul.grid.grid-list li.grid-body:last-child, ul.grid.grid-list li.grid-body.last {
|
271 |
+
border-bottom: none;
|
272 |
+
}
|
273 |
+
ul.grid.grid-list .grid-head ul:after {
|
274 |
+
content: '';
|
275 |
+
display: block;
|
276 |
+
clear: both;
|
277 |
+
}
|
278 |
+
ul.grid.grid-list .grid-head ul li {
|
279 |
+
font-size: 16px;
|
280 |
+
border: none;
|
281 |
+
text-align: left;
|
282 |
+
padding: 2em 0 1em;
|
283 |
+
float: left;
|
284 |
+
}
|
285 |
+
ul.grid.grid-list .grid-head ul li a {
|
286 |
+
cursor: pointer;
|
287 |
+
color: #1bbbef;
|
288 |
+
font-weight: 600;
|
289 |
+
}
|
290 |
+
ul.grid.grid-list .grid-head ul li a:hover {
|
291 |
+
text-decoration: underline;
|
292 |
+
}
|
293 |
+
ul.grid.grid-list .grid-body ul:after {
|
294 |
+
content: '';
|
295 |
+
display: block;
|
296 |
+
clear: both;
|
297 |
+
}
|
298 |
+
ul.grid.grid-list .grid-body ul li {
|
299 |
+
border: none;
|
300 |
+
text-align: left;
|
301 |
+
height: 5em;
|
302 |
+
line-height: 5em;
|
303 |
+
padding: 0;
|
304 |
+
float: left;
|
305 |
+
}
|
306 |
+
ul.grid.grid-list .grid-body ul li:first-child {
|
307 |
+
text-align: left;
|
308 |
+
width: 40%;
|
309 |
+
}
|
310 |
+
ul.grid.grid-list .grid-body ul li:nth-child(2) {
|
311 |
+
width: 60%;
|
312 |
+
}
|
313 |
+
ul.grid.grid-list .grid-body ul li:last-child {
|
314 |
+
width: 25%;
|
315 |
+
}
|
316 |
+
ul.grid.grid-list .grid-body ul li span.grid-icon {
|
317 |
+
margin-right: 0.5em;
|
318 |
+
}
|
319 |
+
ul.grid.grid-list .grid-body ul li span.grid-username {
|
320 |
+
width: 100px;
|
321 |
+
}
|
322 |
+
|
323 |
+
li.clear-fix {
|
324 |
+
display: block;
|
325 |
+
clear: both;
|
326 |
+
}
|
327 |
+
|
328 |
+
li.pagination {
|
329 |
+
padding: 1em 0 2em;
|
330 |
+
}
|
331 |
+
li.pagination p {
|
332 |
+
font-size: 14px;
|
333 |
+
}
|
334 |
+
li.pagination ul.pager {
|
335 |
+
margin: 2em 0;
|
336 |
+
}
|
337 |
+
li.pagination ul.pager li {
|
338 |
+
display: inline;
|
339 |
+
}
|
340 |
+
li.pagination ul.pager li:first-child {
|
341 |
+
margin-right: 1em;
|
342 |
+
}
|
343 |
+
li.pagination ul.pager li a {
|
344 |
+
color: #1bbbef;
|
345 |
+
text-decoration: none;
|
346 |
+
padding: 0.5em 1.5em;
|
347 |
+
border: 1px solid #1bbbef;
|
348 |
+
-moz-border-radius: 100px;
|
349 |
+
-webkit-border-radius: 100px;
|
350 |
+
border-radius: 100px;
|
351 |
+
}
|
352 |
+
|
353 |
+
.animate-repeat {
|
354 |
+
list-style: none;
|
355 |
+
box-sizing: border-box;
|
356 |
+
overflow: hidden;
|
357 |
+
}
|
358 |
+
|
359 |
+
.animate-repeat.ng-move,
|
360 |
+
.animate-repeat.ng-enter,
|
361 |
+
.animate-repeat.ng-leave {
|
362 |
+
-webkit-transition: all ease-in-out 0.4s;
|
363 |
+
transition: all ease-in-out 0.4s;
|
364 |
+
}
|
365 |
+
|
366 |
+
.animate-repeat.ng-leave.ng-leave-active,
|
367 |
+
.animate-repeat.ng-move,
|
368 |
+
.animate-repeat.ng-enter {
|
369 |
+
opacity: 0;
|
370 |
+
}
|
371 |
+
|
372 |
+
.animate-repeat.ng-leave,
|
373 |
+
.animate-repeat.ng-move.ng-move-active,
|
374 |
+
.animate-repeat.ng-enter.ng-enter-active {
|
375 |
+
opacity: 1;
|
376 |
+
}
|
377 |
+
|
378 |
+
.grid-thumb .animate-repeat.ng-move,
|
379 |
+
.grid-thumb .animate-repeat.ng-enter,
|
380 |
+
.grid-thumb .animate-repeat.ng-leave {
|
381 |
+
-webkit-transition: none;
|
382 |
+
transition: none;
|
383 |
+
}
|
384 |
+
|
385 |
+
.grid-list .animate-repeat {
|
386 |
+
line-height: 5em;
|
387 |
+
}
|
388 |
+
.grid-list .animate-repeat.ng-leave.ng-leave-active,
|
389 |
+
.grid-list .animate-repeat.ng-move,
|
390 |
+
.grid-list .animate-repeat.ng-enter {
|
391 |
+
height: 0;
|
392 |
+
}
|
393 |
+
.grid-list .animate-repeat.ng-leave,
|
394 |
+
.grid-list .animate-repeat.ng-move.ng-move-active,
|
395 |
+
.grid-list .animate-repeat.ng-enter.ng-enter-active {
|
396 |
+
height: 5em;
|
397 |
+
}
|
398 |
+
|
399 |
+
|
400 |
+
.single-container{
|
401 |
+
background: white;
|
402 |
+
border: 1px solid #dde8f0;
|
403 |
+
padding: 2em 2em;
|
404 |
+
-moz-border-radius: 5px;
|
405 |
+
-webkit-border-radius: 5px;
|
406 |
+
border-radius: 5px;
|
407 |
+
}
|
408 |
+
</style>
|
409 |
+
</head>
|
410 |
+
<body>
|
411 |
+
<header>
|
412 |
+
<h1><?php _e('All data relating to', 'shapepress-dsgvo'); ?> <span>[username]</span></h1>
|
413 |
+
<p><?php _e('Objects', 'shapepress-dsgvo'); ?> [total]. <?php _e('Generated on', 'shapepress-dsgvo'); ?> [date_now]</p>
|
414 |
+
</header>
|
415 |
+
<main>
|
416 |
+
<div class="ctrls">
|
417 |
+
<div class="filter">
|
418 |
+
<span class="m m-search"></span>
|
419 |
+
<input type="text" class="form-control" placeholder="Filter">
|
420 |
+
</div>
|
421 |
+
</div>
|
422 |
+
<div class="container">
|
423 |
+
<ul class="grid grid-list">
|
424 |
+
<li class="grid-head">
|
425 |
+
<ul>
|
426 |
+
<li style="width:40%"><a><?php _e('Type', 'shapepress-dsgvo'); ?></a></li>
|
427 |
+
<li style="width:60%"><a><?php _e('Data', 'shapepress-dsgvo'); ?></a></li>
|
428 |
+
</ul>
|
429 |
+
</li>
|
includes/integrations/bbpress/BbpressIntegration.php
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOBbpressIntegration extends SPDSGVOIntegration
|
4 |
+
{
|
5 |
+
|
6 |
+
public $slug = 'bbp';
|
7 |
+
|
8 |
+
public $title = 'bbPress';
|
9 |
+
|
10 |
+
public function boot()
|
11 |
+
{
|
12 |
+
$this->isHidden = TRUE;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function view()
|
16 |
+
{
|
17 |
+
include dirname(__FILE__) . '/page.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function viewSubmit()
|
21 |
+
{
|
22 |
+
$this->redirectBack();
|
23 |
+
}
|
24 |
+
|
25 |
+
// -----------------------------------------------------
|
26 |
+
// Actions
|
27 |
+
// -----------------------------------------------------
|
28 |
+
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
29 |
+
{
|
30 |
+
if (isValidPremiumEdition() == false) return;
|
31 |
+
|
32 |
+
if (! class_exists('bbPress'))
|
33 |
+
return;
|
34 |
+
|
35 |
+
$bbpAction = SPDSGVOSettings::get('su_bbpress_data_action');
|
36 |
+
|
37 |
+
if ($bbpAction == 'ignore') return;
|
38 |
+
|
39 |
+
if ($user == NULL) {
|
40 |
+
$user = get_user_by('email', $email);
|
41 |
+
}
|
42 |
+
|
43 |
+
if ($user == NULL || ! is_a($user, 'WP_User')) {
|
44 |
+
//error_log('user null or not a wp_user');
|
45 |
+
return;
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
$args = array(
|
50 |
+
'author' => $user->ID,
|
51 |
+
'post_type' => array(
|
52 |
+
'forum',
|
53 |
+
'topic',
|
54 |
+
'reply'
|
55 |
+
)
|
56 |
+
);
|
57 |
+
|
58 |
+
$userPosts = get_posts($args);
|
59 |
+
|
60 |
+
if ($userPosts) {
|
61 |
+
foreach ($userPosts as $post) {
|
62 |
+
//error_log('bbpAction: '.$bbpAction .'foreach ($userPosts: '.$post->ID);
|
63 |
+
if ($bbpAction == 'del')
|
64 |
+
{
|
65 |
+
wp_delete_post( $post->ID, FALSE );
|
66 |
+
//error_log('wp_delete_post: '.$post->ID);
|
67 |
+
} elseif ($bbpAction == 'pseudo') {
|
68 |
+
|
69 |
+
$post->post_content = __('Deleted content','shapepress-dsgvo');
|
70 |
+
$post->post_title = __('Deleted content','shapepress-dsgvo');
|
71 |
+
wp_update_post($post);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
public function onSubjectAccessRequest($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
78 |
+
{
|
79 |
+
if (isValidPremiumEdition() == false) return;
|
80 |
+
|
81 |
+
if (! class_exists('bbPress')) {
|
82 |
+
// error_log('bbPress not active');
|
83 |
+
return;
|
84 |
+
}
|
85 |
+
|
86 |
+
if ($user == NULL) {
|
87 |
+
$user = get_user_by('email', $email);
|
88 |
+
}
|
89 |
+
|
90 |
+
if ($user == NULL || ! is_a($user, 'WP_User')) {
|
91 |
+
// error_log('user null or not a wp_user');
|
92 |
+
return;
|
93 |
+
}
|
94 |
+
|
95 |
+
$data = array();
|
96 |
+
|
97 |
+
$args = array(
|
98 |
+
'author' => $user->ID,
|
99 |
+
'post_type' => array(
|
100 |
+
'forum',
|
101 |
+
'topic',
|
102 |
+
'reply'
|
103 |
+
)
|
104 |
+
);
|
105 |
+
|
106 |
+
$userPosts = get_posts($args);
|
107 |
+
|
108 |
+
if ($userPosts) {
|
109 |
+
foreach ($userPosts as $post) {
|
110 |
+
if ($post->post_type == 'forum') {
|
111 |
+
$data[] = __('Forum','shapepress-dsgvo')." '" . $post->post_title . "' " . __('on','shapepress-dsgvo')." ". date("d.m.Y H:i", strtotime($post->post_date));
|
112 |
+
} elseif ($post->post_type == 'topic') {
|
113 |
+
$data[] = __('Forum thread','shapepress-dsgvo'). " '" . $post->post_title . "' ". __('on','shapepress-dsgvo')." ". date("d.m.Y H:i", strtotime($post->post_date));
|
114 |
+
} elseif ($post->post_type == 'reply') {
|
115 |
+
$data[] = __('Forum entry','shapepress-dsgvo'). " ". __('on','shapepress-dsgvo')." ". date("d.m.Y H:i", strtotime($post->post_date));
|
116 |
+
}
|
117 |
+
|
118 |
+
$data[] = '<i>' . $post->post_content . '</i>';
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
return $data;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
SPDSGVOBbpressIntegration::register();
|
includes/integrations/buddypress/BuddyPressIntegration.php
ADDED
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOBuddypressIntegration extends SPDSGVOIntegration
|
4 |
+
{
|
5 |
+
|
6 |
+
public $slug = 'bbp';
|
7 |
+
|
8 |
+
public $title = 'buddyPress';
|
9 |
+
|
10 |
+
public function boot()
|
11 |
+
{
|
12 |
+
$this->isHidden = TRUE;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function view()
|
16 |
+
{
|
17 |
+
include dirname(__FILE__) . '/page.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function viewSubmit()
|
21 |
+
{
|
22 |
+
$this->redirectBack();
|
23 |
+
}
|
24 |
+
|
25 |
+
// -----------------------------------------------------
|
26 |
+
// Actions
|
27 |
+
// -----------------------------------------------------
|
28 |
+
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
29 |
+
{
|
30 |
+
global $wpdb;
|
31 |
+
|
32 |
+
if (isValidPremiumEdition() == false) return;
|
33 |
+
|
34 |
+
if (! class_exists('BuddyPress'))
|
35 |
+
return;
|
36 |
+
|
37 |
+
$buddypressAction = SPDSGVOSettings::get('su_buddypress_data_action');
|
38 |
+
|
39 |
+
|
40 |
+
if ($buddypressAction == 'ignore')
|
41 |
+
return;
|
42 |
+
|
43 |
+
if ($user == NULL) {
|
44 |
+
$user = get_user_by('email', $email);
|
45 |
+
}
|
46 |
+
|
47 |
+
if ($user == NULL || ! is_a($user, 'WP_User')) {
|
48 |
+
// error_log('user null or not a wp_user');
|
49 |
+
return;
|
50 |
+
}
|
51 |
+
|
52 |
+
if ($buddypressAction == 'del') {
|
53 |
+
bp_activity_remove_all_user_data($user->ID);
|
54 |
+
bp_core_delete_account($user->ID);
|
55 |
+
} elseif ($buddypressAction == 'pseudo') {
|
56 |
+
$wpdb->get_results($wpdb->prepare("
|
57 |
+
UPDATE {$wpdb->prefix}bp_messages_messages
|
58 |
+
SET
|
59 |
+
subject = '".__('Deleted content','shapepress-dsgvo')."',
|
60 |
+
message = '". __('Deleted content','shapepress-dsgvo')."'
|
61 |
+
WHERE sender_id = " . $user->ID));
|
62 |
+
|
63 |
+
$wpdb->get_results($wpdb->prepare("
|
64 |
+
UPDATE {$wpdb->prefix}bp_xprofile_data
|
65 |
+
SET
|
66 |
+
value = '".__('Deleted content','shapepress-dsgvo')."'
|
67 |
+
WHERE user_id = " . $user->ID));
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
public function onSubjectAccessRequest($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
72 |
+
{
|
73 |
+
if (isValidPremiumEdition() == false) return;
|
74 |
+
|
75 |
+
if (! class_exists('BuddyPress')) {
|
76 |
+
error_log('buddypress not active');
|
77 |
+
return;
|
78 |
+
}
|
79 |
+
|
80 |
+
if ($user == NULL) {
|
81 |
+
$user = get_user_by('email', $email);
|
82 |
+
}
|
83 |
+
|
84 |
+
if ($user == NULL || ! is_a($user, 'WP_User')) {
|
85 |
+
return;
|
86 |
+
}
|
87 |
+
|
88 |
+
$data = array();
|
89 |
+
|
90 |
+
// private messages
|
91 |
+
$aParams['user_id'] = $user->ID;
|
92 |
+
$aParams['max'] = FALSE;
|
93 |
+
$aParams['box'] = 'sentbox';
|
94 |
+
if (bp_has_message_threads($aParams)) {
|
95 |
+
while (bp_message_threads()) {
|
96 |
+
bp_message_thread();
|
97 |
+
|
98 |
+
// error_log('foreach ($allPns->messages ' . $pn->excerpt);
|
99 |
+
$data[] = __('PM between','shapepress-dsgvo') .' ' . bp_get_message_thread_to();
|
100 |
+
$data[] = __('Title:','shapepress-dsgvo'). ' ' . bp_get_message_thread_subject();
|
101 |
+
$data[] = __('Message: ','shapepress-dsgvo'). ' <i>' . bp_get_message_thread_excerpt() . '</i>';
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
// blogs
|
106 |
+
$blogParams['user_id'] = $user->ID;
|
107 |
+
if (bp_has_blogs($blogParams)) {
|
108 |
+
while (bp_blogs()) {
|
109 |
+
bp_the_blog();
|
110 |
+
|
111 |
+
// error_log('while blogs');
|
112 |
+
$data[] = __('Blog','shapepress-dsgvo'). ' ' . bp_blog_name();
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
// profile fields
|
117 |
+
// $profileParams['user_id'] = $user->ID;
|
118 |
+
// $profileParams['hide_empty_groups'] = FALSE;
|
119 |
+
// $profileParams['fetch_fields'] = TRUE;
|
120 |
+
// $profileParams['fetch_fields_data'] = TRUE;
|
121 |
+
// if ( bp_has_profile($profileParams) ) {
|
122 |
+
|
123 |
+
// $data[] = 'Erweiterte Profilfelder';
|
124 |
+
// while ( bp_profile_groups() )
|
125 |
+
// {
|
126 |
+
// bp_the_profile_group();
|
127 |
+
// if ( bp_profile_group_has_fields() ){
|
128 |
+
|
129 |
+
// bp_the_profile_group_name();
|
130 |
+
// while ( bp_profile_fields() ) {
|
131 |
+
|
132 |
+
// bp_the_profile_field();
|
133 |
+
// if ( bp_field_has_data() )
|
134 |
+
// {
|
135 |
+
// $data[] = bp_the_profile_field_name(). ':' .bp_the_profile_field_value();
|
136 |
+
// }
|
137 |
+
// }
|
138 |
+
// }
|
139 |
+
// }
|
140 |
+
// }
|
141 |
+
|
142 |
+
$data[] = __('Profildaten','shapepress-dsgvo');
|
143 |
+
$groups = bp_xprofile_get_groups(array(
|
144 |
+
'user_id' => $user->ID,
|
145 |
+
'hide_empty_groups' => true,
|
146 |
+
'hide_empty_fields' => true,
|
147 |
+
'fetch_fields' => true,
|
148 |
+
'fetch_field_data' => true
|
149 |
+
));
|
150 |
+
foreach ((array) $groups as $group) {
|
151 |
+
if (empty($group->fields)) {
|
152 |
+
continue;
|
153 |
+
}
|
154 |
+
|
155 |
+
foreach ((array) $group->fields as $field) {
|
156 |
+
|
157 |
+
$data[] = __('Field group','shapepress-dsgvo') .': ' . $group->name . ':' . $field->name . ':' . $field->data->value;
|
158 |
+
// $profile_data[ $field->name ] = array(
|
159 |
+
// 'field_group_id' => $group->id,
|
160 |
+
// 'field_group_name' => $group->name,
|
161 |
+
// 'field_id' => $field->id,
|
162 |
+
// 'field_type' => $field->type,
|
163 |
+
// 'field_data' => $field->data->value,
|
164 |
+
// );
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
return $data;
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Returns an object with messages for the current user
|
173 |
+
*
|
174 |
+
* @return Object Messages
|
175 |
+
*/
|
176 |
+
public function get_messages($user)
|
177 |
+
{
|
178 |
+
/*
|
179 |
+
* Possible parameters:
|
180 |
+
* String box: the box you the messages are in (possible values are 'inbox', 'sentbox', 'notices', default is 'inbox')
|
181 |
+
* int per_page: items to be displayed per page (default 10)
|
182 |
+
* boolean limit: maximum numbers of emtries (default no limit)
|
183 |
+
*/
|
184 |
+
//error_log('buddyPress.get_messages of userid ' . $user->ID);
|
185 |
+
|
186 |
+
$messages = array();
|
187 |
+
$aParams['user_id'] = $user->ID;
|
188 |
+
$aParams['max'] = FALSE;
|
189 |
+
$aParams['box'] = 'sentbox';
|
190 |
+
if (bp_has_message_threads($aParams)) {
|
191 |
+
while (bp_message_threads()) {
|
192 |
+
bp_message_thread();
|
193 |
+
$aTemp = new stdClass();
|
194 |
+
$aTemp->id = bp_get_message_thread_id();
|
195 |
+
$aTemp->from = bp_get_message_thread_from();
|
196 |
+
$aTemp->to = bp_get_message_thread_to();
|
197 |
+
$aTemp->subject = bp_get_message_thread_subject();
|
198 |
+
$aTemp->excerpt = bp_get_message_thread_excerpt();
|
199 |
+
$aTemp->link = bp_get_message_thread_view_link();
|
200 |
+
$messages[] = $aTemp;
|
201 |
+
}
|
202 |
+
} else {
|
203 |
+
return $this->error('message');
|
204 |
+
}
|
205 |
+
|
206 |
+
return $messages;
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
SPDSGVOBuddypressIntegration::register();
|
includes/integrations/cf7/Cf7Integration.php
CHANGED
@@ -1,142 +1,146 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class SPDSGVOCf7Integration extends SPDSGVOIntegration
|
4 |
-
{
|
5 |
-
|
6 |
-
public $slug = 'cf7';
|
7 |
-
|
8 |
-
public $title = 'ContactForm7';
|
9 |
-
|
10 |
-
public function boot()
|
11 |
-
{
|
12 |
-
$this->isHidden = TRUE;
|
13 |
-
}
|
14 |
-
|
15 |
-
public function view()
|
16 |
-
{
|
17 |
-
include dirname(__FILE__) . '/page.php';
|
18 |
-
}
|
19 |
-
|
20 |
-
public function viewSubmit()
|
21 |
-
{
|
22 |
-
$this->redirectBack();
|
23 |
-
}
|
24 |
-
|
25 |
-
// -----------------------------------------------------
|
26 |
-
// Actions
|
27 |
-
// -----------------------------------------------------
|
28 |
-
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
29 |
-
{
|
30 |
-
if (
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
$
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
$
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
$post->
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
//
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
// if ($user == NULL
|
94 |
-
//
|
95 |
-
//
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
$
|
103 |
-
|
104 |
-
|
105 |
-
);
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
}
|
141 |
-
|
|
|
|
|
|
|
|
|
142 |
SPDSGVOCf7Integration::register();
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOCf7Integration extends SPDSGVOIntegration
|
4 |
+
{
|
5 |
+
|
6 |
+
public $slug = 'cf7';
|
7 |
+
|
8 |
+
public $title = 'ContactForm7';
|
9 |
+
|
10 |
+
public function boot()
|
11 |
+
{
|
12 |
+
$this->isHidden = TRUE;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function view()
|
16 |
+
{
|
17 |
+
include dirname(__FILE__) . '/page.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function viewSubmit()
|
21 |
+
{
|
22 |
+
$this->redirectBack();
|
23 |
+
}
|
24 |
+
|
25 |
+
// -----------------------------------------------------
|
26 |
+
// Actions
|
27 |
+
// -----------------------------------------------------
|
28 |
+
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
29 |
+
{
|
30 |
+
if (isValidPremiumEdition() == false) return;
|
31 |
+
|
32 |
+
if (! class_exists('WPCF7_ContactForm')) {
|
33 |
+
// error_log('WPCF7_ContactForm not active');
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
$cf7Action = SPDSGVOSettings::get('su_cf7_data_action');
|
38 |
+
|
39 |
+
if ($cf7Action == 'ignore') return;
|
40 |
+
|
41 |
+
$args = array(
|
42 |
+
'title' => $email,
|
43 |
+
'post_type' => 'flamingo_contact'
|
44 |
+
);
|
45 |
+
|
46 |
+
$contacts = get_posts($args);
|
47 |
+
|
48 |
+
// search contact
|
49 |
+
$args = array(
|
50 |
+
'post_type' => 'flamingo_inbound'
|
51 |
+
);
|
52 |
+
$allInbounds = get_posts($args);
|
53 |
+
|
54 |
+
$inbounds = array();
|
55 |
+
foreach ($allInbounds as $post) {
|
56 |
+
|
57 |
+
if (strpos($post->post_content, $email) !== false)
|
58 |
+
{
|
59 |
+
$inbounds[] = $post;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
$userPosts = array();
|
64 |
+
$userPosts = array_merge($contacts, $inbounds);
|
65 |
+
|
66 |
+
if ($userPosts) {
|
67 |
+
foreach ($userPosts as $post) {
|
68 |
+
//error_log('bbpAction: '.$bbpAction .'foreach ($userPosts: '.$post->ID);
|
69 |
+
if ($cf7Action == 'del')
|
70 |
+
{
|
71 |
+
wp_delete_post( $post->ID, FALSE );
|
72 |
+
} elseif ($cf7Action == 'pseudo') {
|
73 |
+
|
74 |
+
$post->post_content = __('Deleted content','shapepress-dsgvo');
|
75 |
+
$post->post_title = __('Deleted content','shapepress-dsgvo');
|
76 |
+
$post->post_name = __('Deleted content','shapepress-dsgvo');
|
77 |
+
wp_update_post($post);
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
}
|
83 |
+
|
84 |
+
public function onSubjectAccessRequest($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
85 |
+
{
|
86 |
+
if (isValidPremiumEdition() == false) return;
|
87 |
+
|
88 |
+
if (! class_exists('WPCF7_ContactForm')) {
|
89 |
+
// error_log('WPCF7_ContactForm not active');
|
90 |
+
return;
|
91 |
+
}
|
92 |
+
|
93 |
+
// if ($user == NULL) {
|
94 |
+
// $user = get_user_by('email', $email);
|
95 |
+
// }
|
96 |
+
|
97 |
+
// if ($user == NULL || ! is_a($user, 'WP_User')) {
|
98 |
+
// // error_log('user null or not a wp_user');
|
99 |
+
// return;
|
100 |
+
// }
|
101 |
+
|
102 |
+
$data = array();
|
103 |
+
|
104 |
+
// search contacts
|
105 |
+
//error_log(' search contacts with email '.$email);
|
106 |
+
$args = array(
|
107 |
+
'title' => $email,
|
108 |
+
'post_type' => 'flamingo_contact'
|
109 |
+
);
|
110 |
+
|
111 |
+
$contacts = get_posts($args);
|
112 |
+
|
113 |
+
// search contact
|
114 |
+
$args = array(
|
115 |
+
'post_type' => 'flamingo_inbound'
|
116 |
+
);
|
117 |
+
$allInbounds = get_posts($args);
|
118 |
+
|
119 |
+
$inbounds = array();
|
120 |
+
foreach ($allInbounds as $post) {
|
121 |
+
|
122 |
+
if (strpos($post->post_content, $email) !== false)
|
123 |
+
{
|
124 |
+
$inbounds[] = $post;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
|
128 |
+
$userPosts = array();
|
129 |
+
$userPosts = array_merge($contacts, $inbounds);
|
130 |
+
|
131 |
+
if ($userPosts) {
|
132 |
+
foreach ($userPosts as $post) {
|
133 |
+
if ($post->post_type == 'flamingo_contact') {
|
134 |
+
$data[] = __('Contact entry','shapepress-dsgvo'). " '" . $post->post_title . "'" . __('on','shapepress-dsgvo') . date("d.m.Y H:i", strtotime($post->post_date));
|
135 |
+
} elseif ($post->post_type == 'flamingo_inbound') {
|
136 |
+
$data[] = __('Message','shapepress-dsgvo') . " '" . $post->post_title . "'". __('on','shapepress-dsgvo'). date("d.m.Y H:i", strtotime($post->post_date));
|
137 |
+
$data[] = '<i>' . $post->post_content . '</i>';
|
138 |
+
}
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
return $data;
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
SPDSGVOCf7Integration::register();
|
includes/integrations/mailchimp/MailchimpAPI.php
ADDED
@@ -0,0 +1,445 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Super-simple, minimum abstraction MailChimp API v3 wrapper
|
5 |
+
* MailChimp API v3: http://developer.mailchimp.com
|
6 |
+
* This wrapper: https://github.com/drewm/mailchimp-api
|
7 |
+
*
|
8 |
+
* @author Drew McLellan <drew.mclellan@gmail.com>
|
9 |
+
* @version 2.2
|
10 |
+
*/
|
11 |
+
class SPDSGVOMailChimp{
|
12 |
+
|
13 |
+
private $api_key;
|
14 |
+
private $api_endpoint = 'https://<dc>.api.mailchimp.com/3.0';
|
15 |
+
|
16 |
+
const TIMEOUT = 10;
|
17 |
+
|
18 |
+
/* SSL Verification
|
19 |
+
Read before disabling:
|
20 |
+
http://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php-config/
|
21 |
+
*/
|
22 |
+
public $verify_ssl = true;
|
23 |
+
|
24 |
+
private $request_successful = false;
|
25 |
+
private $last_error = '';
|
26 |
+
private $last_response = array();
|
27 |
+
private $last_request = array();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Create a new instance
|
31 |
+
* @param string $api_key Your MailChimp API key
|
32 |
+
* @param string $api_endpoint Optional custom API endpoint
|
33 |
+
* @throws \Exception
|
34 |
+
*/
|
35 |
+
public function __construct($api_key, $api_endpoint = null)
|
36 |
+
{
|
37 |
+
$this->api_key = $api_key;
|
38 |
+
|
39 |
+
if ($api_endpoint === null) {
|
40 |
+
if (strpos($this->api_key, '-') === false) {
|
41 |
+
throw new \Exception(__('Invalid MailChimp API key', 'shapepress-dsgvo') . "`{$api_key}`" . __('supplied.', 'shapepress-dsgvo'));
|
42 |
+
}
|
43 |
+
list(, $data_center) = explode('-', $this->api_key);
|
44 |
+
$this->api_endpoint = str_replace('<dc>', $data_center, $this->api_endpoint);
|
45 |
+
} else {
|
46 |
+
$this->api_endpoint = $api_endpoint;
|
47 |
+
}
|
48 |
+
|
49 |
+
$this->last_response = array('headers' => null, 'body' => null);
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Create a new instance of a Batch request. Optionally with the ID of an existing batch.
|
54 |
+
* @param string $batch_id Optional ID of an existing batch, if you need to check its status for example.
|
55 |
+
* @return Batch New Batch object.
|
56 |
+
*/
|
57 |
+
public function new_batch($batch_id = null)
|
58 |
+
{
|
59 |
+
return new Batch($this, $batch_id);
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @return string The url to the API endpoint
|
64 |
+
*/
|
65 |
+
public function getApiEndpoint()
|
66 |
+
{
|
67 |
+
return $this->api_endpoint;
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Convert an email address into a 'subscriber hash' for identifying the subscriber in a method URL
|
73 |
+
* @param string $email The subscriber's email address
|
74 |
+
* @return string Hashed version of the input
|
75 |
+
*/
|
76 |
+
public function subscriberHash($email)
|
77 |
+
{
|
78 |
+
return md5(strtolower($email));
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Was the last request successful?
|
83 |
+
* @return bool True for success, false for failure
|
84 |
+
*/
|
85 |
+
public function success()
|
86 |
+
{
|
87 |
+
return $this->request_successful;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Get the last error returned by either the network transport, or by the API.
|
92 |
+
* If something didn't work, this should contain the string describing the problem.
|
93 |
+
* @return string|false describing the error
|
94 |
+
*/
|
95 |
+
public function getLastError()
|
96 |
+
{
|
97 |
+
return $this->last_error ?: false;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Get an array containing the HTTP headers and the body of the API response.
|
102 |
+
* @return array Assoc array with keys 'headers' and 'body'
|
103 |
+
*/
|
104 |
+
public function getLastResponse()
|
105 |
+
{
|
106 |
+
return $this->last_response;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Get an array containing the HTTP headers and the body of the API request.
|
111 |
+
* @return array Assoc array
|
112 |
+
*/
|
113 |
+
public function getLastRequest()
|
114 |
+
{
|
115 |
+
return $this->last_request;
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Make an HTTP DELETE request - for deleting data
|
120 |
+
* @param string $method URL of the API request method
|
121 |
+
* @param array $args Assoc array of arguments (if any)
|
122 |
+
* @param int $timeout Timeout limit for request in seconds
|
123 |
+
* @return array|false Assoc array of API response, decoded from JSON
|
124 |
+
*/
|
125 |
+
public function delete($method, $args = array(), $timeout = self::TIMEOUT)
|
126 |
+
{
|
127 |
+
return $this->makeRequest('delete', $method, $args, $timeout);
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Make an HTTP GET request - for retrieving data
|
132 |
+
* @param string $method URL of the API request method
|
133 |
+
* @param array $args Assoc array of arguments (usually your data)
|
134 |
+
* @param int $timeout Timeout limit for request in seconds
|
135 |
+
* @return array|false Assoc array of API response, decoded from JSON
|
136 |
+
*/
|
137 |
+
public function get($method, $args = array(), $timeout = self::TIMEOUT)
|
138 |
+
{
|
139 |
+
return $this->makeRequest('get', $method, $args, $timeout);
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Make an HTTP PATCH request - for performing partial updates
|
144 |
+
* @param string $method URL of the API request method
|
145 |
+
* @param array $args Assoc array of arguments (usually your data)
|
146 |
+
* @param int $timeout Timeout limit for request in seconds
|
147 |
+
* @return array|false Assoc array of API response, decoded from JSON
|
148 |
+
*/
|
149 |
+
public function patch($method, $args = array(), $timeout = self::TIMEOUT)
|
150 |
+
{
|
151 |
+
return $this->makeRequest('patch', $method, $args, $timeout);
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Make an HTTP POST request - for creating and updating items
|
156 |
+
* @param string $method URL of the API request method
|
157 |
+
* @param array $args Assoc array of arguments (usually your data)
|
158 |
+
* @param int $timeout Timeout limit for request in seconds
|
159 |
+
* @return array|false Assoc array of API response, decoded from JSON
|
160 |
+
*/
|
161 |
+
public function post($method, $args = array(), $timeout = self::TIMEOUT)
|
162 |
+
{
|
163 |
+
return $this->makeRequest('post', $method, $args, $timeout);
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Make an HTTP PUT request - for creating new items
|
168 |
+
* @param string $method URL of the API request method
|
169 |
+
* @param array $args Assoc array of arguments (usually your data)
|
170 |
+
* @param int $timeout Timeout limit for request in seconds
|
171 |
+
* @return array|false Assoc array of API response, decoded from JSON
|
172 |
+
*/
|
173 |
+
public function put($method, $args = array(), $timeout = self::TIMEOUT)
|
174 |
+
{
|
175 |
+
return $this->makeRequest('put', $method, $args, $timeout);
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Performs the underlying HTTP request. Not very exciting.
|
180 |
+
* @param string $http_verb The HTTP verb to use: get, post, put, patch, delete
|
181 |
+
* @param string $method The API method to be called
|
182 |
+
* @param array $args Assoc array of parameters to be passed
|
183 |
+
* @param int $timeout
|
184 |
+
* @return array|false Assoc array of decoded result
|
185 |
+
* @throws \Exception
|
186 |
+
*/
|
187 |
+
private function makeRequest($http_verb, $method, $args = array(), $timeout = self::TIMEOUT)
|
188 |
+
{
|
189 |
+
if (!function_exists('curl_init') || !function_exists('curl_setopt')) {
|
190 |
+
throw new \Exception(__("cURL support is required, but can't be found.", 'shapepress-dsgvo'));
|
191 |
+
}
|
192 |
+
|
193 |
+
$url = $this->api_endpoint . '/' . $method;
|
194 |
+
|
195 |
+
$response = $this->prepareStateForRequest($http_verb, $method, $url, $timeout);
|
196 |
+
|
197 |
+
$ch = curl_init();
|
198 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
199 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
200 |
+
'Accept: application/vnd.api+json',
|
201 |
+
'Content-Type: application/vnd.api+json',
|
202 |
+
'Authorization: apikey ' . $this->api_key
|
203 |
+
));
|
204 |
+
curl_setopt($ch, CURLOPT_USERAGENT, 'DrewM/MailChimp-API/3.0 (github.com/drewm/mailchimp-api)');
|
205 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
206 |
+
curl_setopt($ch, CURLOPT_VERBOSE, true);
|
207 |
+
curl_setopt($ch, CURLOPT_HEADER, true);
|
208 |
+
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
|
209 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->verify_ssl);
|
210 |
+
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
211 |
+
curl_setopt($ch, CURLOPT_ENCODING, '');
|
212 |
+
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
|
213 |
+
|
214 |
+
switch ($http_verb) {
|
215 |
+
case 'post':
|
216 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
217 |
+
$this->attachRequestPayload($ch, $args);
|
218 |
+
break;
|
219 |
+
|
220 |
+
case 'get':
|
221 |
+
$query = http_build_query($args, '', '&');
|
222 |
+
curl_setopt($ch, CURLOPT_URL, $url . '?' . $query);
|
223 |
+
break;
|
224 |
+
|
225 |
+
case 'delete':
|
226 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
227 |
+
break;
|
228 |
+
|
229 |
+
case 'patch':
|
230 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
|
231 |
+
$this->attachRequestPayload($ch, $args);
|
232 |
+
break;
|
233 |
+
|
234 |
+
case 'put':
|
235 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
|
236 |
+
$this->attachRequestPayload($ch, $args);
|
237 |
+
break;
|
238 |
+
}
|
239 |
+
|
240 |
+
$responseContent = curl_exec($ch);
|
241 |
+
$response['headers'] = curl_getinfo($ch);
|
242 |
+
$response = $this->setResponseState($response, $responseContent, $ch);
|
243 |
+
$formattedResponse = $this->formatResponse($response);
|
244 |
+
|
245 |
+
curl_close($ch);
|
246 |
+
|
247 |
+
$this->determineSuccess($response, $formattedResponse, $timeout);
|
248 |
+
|
249 |
+
return $formattedResponse;
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* @param string $http_verb
|
254 |
+
* @param string $method
|
255 |
+
* @param string $url
|
256 |
+
* @param integer $timeout
|
257 |
+
*/
|
258 |
+
private function prepareStateForRequest($http_verb, $method, $url, $timeout)
|
259 |
+
{
|
260 |
+
$this->last_error = '';
|
261 |
+
|
262 |
+
$this->request_successful = false;
|
263 |
+
|
264 |
+
$this->last_response = array(
|
265 |
+
'headers' => null, // array of details from curl_getinfo()
|
266 |
+
'httpHeaders' => null, // array of HTTP headers
|
267 |
+
'body' => null // content of the response
|
268 |
+
);
|
269 |
+
|
270 |
+
$this->last_request = array(
|
271 |
+
'method' => $http_verb,
|
272 |
+
'path' => $method,
|
273 |
+
'url' => $url,
|
274 |
+
'body' => '',
|
275 |
+
'timeout' => $timeout,
|
276 |
+
);
|
277 |
+
|
278 |
+
return $this->last_response;
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Get the HTTP headers as an array of header-name => header-value pairs.
|
283 |
+
*
|
284 |
+
* The "Link" header is parsed into an associative array based on the
|
285 |
+
* rel names it contains. The original value is available under
|
286 |
+
* the "_raw" key.
|
287 |
+
*
|
288 |
+
* @param string $headersAsString
|
289 |
+
* @return array
|
290 |
+
*/
|
291 |
+
private function getHeadersAsArray($headersAsString)
|
292 |
+
{
|
293 |
+
$headers = array();
|
294 |
+
|
295 |
+
foreach (explode("\r\n", $headersAsString) as $i => $line) {
|
296 |
+
if ($i === 0) { // HTTP code
|
297 |
+
continue;
|
298 |
+
}
|
299 |
+
|
300 |
+
$line = trim($line);
|
301 |
+
if (empty($line)) {
|
302 |
+
continue;
|
303 |
+
}
|
304 |
+
|
305 |
+
list($key, $value) = explode(': ', $line);
|
306 |
+
|
307 |
+
if ($key == 'Link') {
|
308 |
+
$value = array_merge(
|
309 |
+
array('_raw' => $value),
|
310 |
+
$this->getLinkHeaderAsArray($value)
|
311 |
+
);
|
312 |
+
}
|
313 |
+
|
314 |
+
$headers[$key] = $value;
|
315 |
+
}
|
316 |
+
|
317 |
+
return $headers;
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Extract all rel => URL pairs from the provided Link header value
|
322 |
+
*
|
323 |
+
* Mailchimp only implements the URI reference and relation type from
|
324 |
+
* RFC 5988, so the value of the header is something like this:
|
325 |
+
*
|
326 |
+
* 'https://us13.api.mailchimp.com/schema/3.0/Lists/Instance.json; rel="describedBy", <https://us13.admin.mailchimp.com/lists/members/?id=XXXX>; rel="dashboard"'
|
327 |
+
*
|
328 |
+
* @param string $linkHeaderAsString
|
329 |
+
* @return array
|
330 |
+
*/
|
331 |
+
private function getLinkHeaderAsArray($linkHeaderAsString)
|
332 |
+
{
|
333 |
+
$urls = array();
|
334 |
+
|
335 |
+
if (preg_match_all('/<(.*?)>\s*;\s*rel="(.*?)"\s*/', $linkHeaderAsString, $matches)) {
|
336 |
+
foreach ($matches[2] as $i => $relName) {
|
337 |
+
$urls[$relName] = $matches[1][$i];
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
return $urls;
|
342 |
+
}
|
343 |
+
|
344 |
+
/**
|
345 |
+
* Encode the data and attach it to the request
|
346 |
+
* @param resource $ch cURL session handle, used by reference
|
347 |
+
* @param array $data Assoc array of data to attach
|
348 |
+
*/
|
349 |
+
private function attachRequestPayload(&$ch, $data)
|
350 |
+
{
|
351 |
+
$encoded = json_encode($data);
|
352 |
+
$this->last_request['body'] = $encoded;
|
353 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
|
354 |
+
}
|
355 |
+
|
356 |
+
/**
|
357 |
+
* Decode the response and format any error messages for debugging
|
358 |
+
* @param array $response The response from the curl request
|
359 |
+
* @return array|false The JSON decoded into an array
|
360 |
+
*/
|
361 |
+
private function formatResponse($response)
|
362 |
+
{
|
363 |
+
$this->last_response = $response;
|
364 |
+
|
365 |
+
if (!empty($response['body'])) {
|
366 |
+
return json_decode($response['body'], true);
|
367 |
+
}
|
368 |
+
|
369 |
+
return false;
|
370 |
+
}
|
371 |
+
|
372 |
+
/**
|
373 |
+
* Do post-request formatting and setting state from the response
|
374 |
+
* @param array $response The response from the curl request
|
375 |
+
* @param string $responseContent The body of the response from the curl request
|
376 |
+
* * @return array The modified response
|
377 |
+
*/
|
378 |
+
private function setResponseState($response, $responseContent, $ch)
|
379 |
+
{
|
380 |
+
if ($responseContent === false) {
|
381 |
+
$this->last_error = curl_error($ch);
|
382 |
+
} else {
|
383 |
+
|
384 |
+
$headerSize = $response['headers']['header_size'];
|
385 |
+
|
386 |
+
$response['httpHeaders'] = $this->getHeadersAsArray(substr($responseContent, 0, $headerSize));
|
387 |
+
$response['body'] = substr($responseContent, $headerSize);
|
388 |
+
|
389 |
+
if (isset($response['headers']['request_header'])) {
|
390 |
+
$this->last_request['headers'] = $response['headers']['request_header'];
|
391 |
+
}
|
392 |
+
}
|
393 |
+
|
394 |
+
return $response;
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Check if the response was successful or a failure. If it failed, store the error.
|
399 |
+
* @param array $response The response from the curl request
|
400 |
+
* @param array|false $formattedResponse The response body payload from the curl request
|
401 |
+
* @param int $timeout The timeout supplied to the curl request.
|
402 |
+
* @return bool If the request was successful
|
403 |
+
*/
|
404 |
+
private function determineSuccess($response, $formattedResponse, $timeout)
|
405 |
+
{
|
406 |
+
$status = $this->findHTTPStatus($response, $formattedResponse);
|
407 |
+
|
408 |
+
if ($status >= 200 && $status <= 299) {
|
409 |
+
$this->request_successful = true;
|
410 |
+
return true;
|
411 |
+
}
|
412 |
+
|
413 |
+
if (isset($formattedResponse['detail'])) {
|
414 |
+
$this->last_error = sprintf('%d: %s', $formattedResponse['status'], $formattedResponse['detail']);
|
415 |
+
return false;
|
416 |
+
}
|
417 |
+
|
418 |
+
if( $timeout > 0 && $response['headers'] && $response['headers']['total_time'] >= $timeout ) {
|
419 |
+
$this->last_error = sprintf(__('Request timed out after', 'shapepress-dsgvo') . ' %f ' . __('seconds.', 'shapepress-dsgvo'), $response['headers']['total_time'] );
|
420 |
+
return false;
|
421 |
+
}
|
422 |
+
|
423 |
+
$this->last_error = __('Unknown error, call getLastResponse() to find out what happened.', 'shapepress-dsgvo');
|
424 |
+
return false;
|
425 |
+
}
|
426 |
+
|
427 |
+
/**
|
428 |
+
* Find the HTTP status code from the headers or API response body
|
429 |
+
* @param array $response The response from the curl request
|
430 |
+
* @param array|false $formattedResponse The response body payload from the curl request
|
431 |
+
* @return int HTTP status code
|
432 |
+
*/
|
433 |
+
private function findHTTPStatus($response, $formattedResponse)
|
434 |
+
{
|
435 |
+
if (!empty($response['headers']) && isset($response['headers']['http_code'])) {
|
436 |
+
return (int) $response['headers']['http_code'];
|
437 |
+
}
|
438 |
+
|
439 |
+
if (!empty($response['body']) && isset($formattedResponse['status'])) {
|
440 |
+
return (int) $formattedResponse['status'];
|
441 |
+
}
|
442 |
+
|
443 |
+
return 418;
|
444 |
+
}
|
445 |
+
}
|
includes/integrations/mailchimp/MailchimpIntegration.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOMailchimpIntegration extends SPDSGVOIntegration{
|
4 |
+
|
5 |
+
public $slug = 'mailchimp';
|
6 |
+
public $title = 'Mailchimp';
|
7 |
+
|
8 |
+
public function boot(){
|
9 |
+
$this->isHidden = FALSE;
|
10 |
+
|
11 |
+
if(!class_exists('SPDSGVOMailChimp')){
|
12 |
+
require_once dirname(__FILE__) .'/MailchimpAPI.php';
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
public function view(){
|
17 |
+
include dirname(__FILE__) .'/page.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function viewSubmit(){
|
21 |
+
|
22 |
+
if($this->has('mailchimp_api_token')){
|
23 |
+
update_option('mailchimp_api_token', $this->get('mailchimp_api_token'));
|
24 |
+
}
|
25 |
+
|
26 |
+
$this->redirectBack();
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
// -----------------------------------------------------
|
31 |
+
// Actions
|
32 |
+
// -----------------------------------------------------
|
33 |
+
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL){
|
34 |
+
$mailChimp = new SPDSGVOMailChimp(get_option('mailchimp_api_token'));
|
35 |
+
$lists = $mailChimp->get('lists');
|
36 |
+
|
37 |
+
if(is_array($lists['lists'])){
|
38 |
+
$hash = $mailChimp->subscriberHash($email);
|
39 |
+
foreach($lists['lists'] as $list){
|
40 |
+
$mailChimp->delete(
|
41 |
+
sprintf('lists/%s/members/%s', $list['id'], $hash)
|
42 |
+
);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
public function onSubjectAccessRequest($email, $firstName = NULL, $lastName = NULL, $user = NULL){
|
48 |
+
|
49 |
+
// Your Code Here!
|
50 |
+
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
SPDSGVOMailchimpIntegration::register();
|
includes/integrations/mailchimp/page.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<form method="post" action="<?= SPDSGVOMailchimpIntegration::formURL() ?> ">
|
2 |
+
<input type="hidden" name="action" value="<?= SPDSGVOMailchimpIntegration::action() ?>">
|
3 |
+
|
4 |
+
<table class="form-table">
|
5 |
+
<tbody>
|
6 |
+
<tr>
|
7 |
+
<th scope="row"><label for="mailchimp_api_token"><?php _e('Mailchimp API Key','shapepress-dsgvo')?></label></th>
|
8 |
+
<td>
|
9 |
+
<input name="mailchimp_api_token" type="text" id="mailchimp_api_token" aria-describedby="admin-email-description" value="<?= get_option('mailchimp_api_token'); ?>" class="regular-text ltr">
|
10 |
+
<p class="description" id="admin-email-description">
|
11 |
+
<a href="https://kb.mailchimp.com/integrations/api-integrations/about-api-keys" target="_blank"><?php _e('Click here','shapepress-dsgvo')?> </a>
|
12 |
+
<?php _e('to get an API key','shapepress-dsgvo')?>
|
13 |
+
</p>
|
14 |
+
</td>
|
15 |
+
</tr>
|
16 |
+
</tbody>
|
17 |
+
</table>
|
18 |
+
|
19 |
+
<?php submit_button(); ?>
|
20 |
+
</form>
|
includes/integrations/woocommerce/WoocommerceIntegration.php
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SPDSGVOWoocommerceIntegration extends SPDSGVOIntegration
|
4 |
+
{
|
5 |
+
|
6 |
+
public $slug = 'woocommerce';
|
7 |
+
|
8 |
+
public $title = 'WooCommerce';
|
9 |
+
|
10 |
+
public function boot()
|
11 |
+
{
|
12 |
+
$this->isHidden = TRUE;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function view()
|
16 |
+
{
|
17 |
+
include dirname(__FILE__) . '/page.php';
|
18 |
+
}
|
19 |
+
|
20 |
+
public function viewSubmit()
|
21 |
+
{
|
22 |
+
$this->redirectBack();
|
23 |
+
}
|
24 |
+
|
25 |
+
// -----------------------------------------------------
|
26 |
+
// Actions
|
27 |
+
// -----------------------------------------------------
|
28 |
+
public function onSuperUnsubscribe($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
29 |
+
{
|
30 |
+
if (isValidPremiumEdition() == false) return;
|
31 |
+
|
32 |
+
if (!class_exists( 'WooCommerce' )) return;
|
33 |
+
|
34 |
+
error_log('Woo.onSuperUnsubscribe of email: '.$email);
|
35 |
+
// Get orders from the customer with email $email
|
36 |
+
$query = new WC_Order_Query();
|
37 |
+
$query->set('customer', $email);
|
38 |
+
$customer_orders = $query->get_orders();
|
39 |
+
|
40 |
+
$args = array(
|
41 |
+
'billing_email' => $email,
|
42 |
+
);
|
43 |
+
$ordersByMail = wc_get_orders( $args );
|
44 |
+
$customer_orders = array_merge($customer_orders, $ordersByMail);
|
45 |
+
|
46 |
+
$wooAction = SPDSGVOSettings::get('su_woo_data_action');
|
47 |
+
error_log('Woo.onSuperUnsubscribe.$wooAction: '.$wooAction);
|
48 |
+
|
49 |
+
if ($wooAction != 'ignore') {
|
50 |
+
|
51 |
+
foreach ($customer_orders as $order) {
|
52 |
+
|
53 |
+
error_log('Woo.onSuperUnsubscribe.$order->ID'.$order->get_id() );
|
54 |
+
|
55 |
+
if ($wooAction == 'pseudo') {
|
56 |
+
error_log('Woo.onSuperUnsubscribe: setting values of $order->ID'.$order->get_id() );
|
57 |
+
|
58 |
+
$order->set_billing_first_name('User');
|
59 |
+
$order->set_billing_last_name('Deleted');
|
60 |
+
$order->set_billing_address_1('Street');
|
61 |
+
$order->set_billing_address_2('');
|
62 |
+
$order->set_billing_city('City');
|
63 |
+
$order->set_billing_address_2('');
|
64 |
+
$order->set_billing_email('email@deleteduser.at');
|
65 |
+
|
66 |
+
$order->set_customer_ip_address('');
|
67 |
+
$order->set_customer_user_agent('');
|
68 |
+
|
69 |
+
if ($order->has_shipping_address()) {
|
70 |
+
$order->set_shipping_first_name('User');
|
71 |
+
$order->set_shipping_last_name('Deleted');
|
72 |
+
$order->set_shipping_address_1('Street');
|
73 |
+
$order->set_shipping_address_2('');
|
74 |
+
$order->set_shipping_city('City');
|
75 |
+
$order->set_shipping_address_2('');
|
76 |
+
$order->set_shipping_email('email@deleteduser.at');
|
77 |
+
}
|
78 |
+
|
79 |
+
$order->save();
|
80 |
+
|
81 |
+
} else if ($wooAction == 'del') {
|
82 |
+
|
83 |
+
$order->delete(FALSE);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
public function onSubjectAccessRequest($email, $firstName = NULL, $lastName = NULL, $user = NULL)
|
90 |
+
{
|
91 |
+
if (isValidPremiumEdition() == false) return;
|
92 |
+
|
93 |
+
if (!class_exists( 'WooCommerce' )) return;
|
94 |
+
|
95 |
+
$data = array();
|
96 |
+
|
97 |
+
// $customer_orders = get_posts( array(
|
98 |
+
// 'numberposts' => -1,
|
99 |
+
// 'meta_key' => '_customer_user',
|
100 |
+
// 'meta_value' => $user->ID,
|
101 |
+
// 'post_type' => wc_get_order_types(),
|
102 |
+
// 'post_status' => array_keys( wc_get_order_statuses() ),
|
103 |
+
// ) );
|
104 |
+
|
105 |
+
// Get orders from the customer with email $email
|
106 |
+
$query = new WC_Order_Query();
|
107 |
+
$query->set('customer', $email);
|
108 |
+
$customer_orders = $query->get_orders();
|
109 |
+
|
110 |
+
// Iterating through each Order
|
111 |
+
foreach ($customer_orders as $order) {
|
112 |
+
|
113 |
+
$orderData = array();
|
114 |
+
$orderData[] = __('Order','shapepress-dsgvo') .' ' . $order->get_order_number() . ' '.__('of','shapepress-dsgvo').' ' . wc_format_datetime($order->get_date_created());
|
115 |
+
|
116 |
+
// Going through each current customer order items
|
117 |
+
foreach ($order->get_items() as $item_id => $item_values) {
|
118 |
+
// $product_id = $item_values['product_id']; // product ID
|
119 |
+
$productName = $item_values['name'];
|
120 |
+
|
121 |
+
// Order Item meta data
|
122 |
+
// $item_meta_data = wc_get_order_item_meta($item_id);
|
123 |
+
|
124 |
+
$orderData[] = __('Product','shapepress-dsgvo') .": " . $productName;
|
125 |
+
}
|
126 |
+
|
127 |
+
$orderData[] = $order->get_formatted_billing_address();
|
128 |
+
if ($order->has_shipping_address()) {
|
129 |
+
$orderData[] = $order->get_formatted_shipping_address();
|
130 |
+
}
|
131 |
+
|
132 |
+
$orderData[] = ' ';
|
133 |
+
|
134 |
+
$data[] = $orderData;
|
135 |
+
}
|
136 |
+
|
137 |
+
return $data;
|
138 |
+
}
|
139 |
+
}
|
140 |
+
|
141 |
+
SPDSGVOWoocommerceIntegration::register();
|
includes/models/subject-access-request.php
CHANGED
@@ -53,24 +53,24 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
53 |
}
|
54 |
$breakdown .= implode(', ', $data);
|
55 |
$breakdown .= '</p>';
|
56 |
-
|
57 |
$i++;
|
58 |
if($i > 5){
|
59 |
break;
|
60 |
}
|
61 |
}
|
62 |
-
|
63 |
|
64 |
|
65 |
// Send Email
|
66 |
$email = SPDSGVOMail::init()
|
67 |
->from(SPDSGVOSettings::get('admin_email'))
|
68 |
->to($this->email)
|
69 |
-
->subject('
|
70 |
-
->beforeTemplate(SPDSGVO::pluginDir('
|
71 |
-
->afterTemplate( SPDSGVO::pluginDir('
|
72 |
-
->template(SPDSGVO::pluginDir('
|
73 |
-
|
74 |
|
75 |
'zip_link' => SPDSGVODownloadSubjectAccessRequestAction::url(array(
|
76 |
'token' => $this->token,
|
@@ -79,7 +79,7 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
79 |
|
80 |
'count' => $dataCollecter->totalFound,
|
81 |
'breakdown' => $breakdown,
|
82 |
-
|
83 |
'home_url' => home_url(),
|
84 |
'website' => home_url(),
|
85 |
'admin_email' => SPDSGVOSettings::get('admin_email'),
|
@@ -91,7 +91,7 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
91 |
$this->pdf_path,
|
92 |
));
|
93 |
}catch(Exception $e){
|
94 |
-
|
95 |
}
|
96 |
|
97 |
|
@@ -131,7 +131,7 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
131 |
}
|
132 |
|
133 |
public function _postFinderToken($results, $args){
|
134 |
-
return @$results[0];
|
135 |
}
|
136 |
|
137 |
public function _finderPending($args){
|
@@ -158,7 +158,7 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
158 |
// Misc
|
159 |
//======================================================================
|
160 |
public function name(){
|
161 |
-
return $this->first_name .' '. $this->last_name;
|
162 |
}
|
163 |
|
164 |
public function filename($extension){
|
@@ -178,10 +178,10 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
178 |
public function buildPDF(){
|
179 |
$pdf = new SPDSGVOPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
|
180 |
$pdf->SetCreator(PDF_CREATOR);
|
181 |
-
$pdf->SetTitle('
|
182 |
-
$pdf->SetSubject('
|
183 |
|
184 |
-
$pdf->SetHeaderData('', PDF_HEADER_LOGO_WIDTH,
|
185 |
$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
|
186 |
$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
|
187 |
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
|
@@ -190,11 +190,11 @@ Class SPDSGVOSubjectAccessRequest extends SPDSGVOModel {
|
|
190 |
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
|
191 |
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
|
192 |
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
193 |
-
|
194 |
$pdf->SetFont('helvetica', '', 12);
|
195 |
$pdf->AddPage();
|
196 |
$pdf->coloredTable($this->collectedData);
|
197 |
-
|
198 |
$fileName = $this->filename('pdf');
|
199 |
$upload = wp_upload_bits($fileName, NULL, $pdf->Output($path, 'S'));
|
200 |
$this->pdf_path = $upload['file'];
|
@@ -218,4 +218,4 @@ SPDSGVOSubjectAccessRequest::register(array(
|
|
218 |
'publicly_queryable' => FALSE,
|
219 |
'exclude_from_search' => FALSE,
|
220 |
'public' => FALSE,
|
221 |
-
));
|
53 |
}
|
54 |
$breakdown .= implode(', ', $data);
|
55 |
$breakdown .= '</p>';
|
56 |
+
|
57 |
$i++;
|
58 |
if($i > 5){
|
59 |
break;
|
60 |
}
|
61 |
}
|
62 |
+
|
63 |
|
64 |
|
65 |
// Send Email
|
66 |
$email = SPDSGVOMail::init()
|
67 |
->from(SPDSGVOSettings::get('admin_email'))
|
68 |
->to($this->email)
|
69 |
+
->subject(__('Subject access request','shapepress-dsgvo'). ': '. parse_url(home_url(), PHP_URL_HOST))
|
70 |
+
->beforeTemplate(SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/header.php'))
|
71 |
+
->afterTemplate( SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/footer.php'))
|
72 |
+
->template(SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/subject-access-request.php'), array(
|
73 |
+
'title' => __('Subject access request','shapepress-dsgvo'),
|
74 |
|
75 |
'zip_link' => SPDSGVODownloadSubjectAccessRequestAction::url(array(
|
76 |
'token' => $this->token,
|
79 |
|
80 |
'count' => $dataCollecter->totalFound,
|
81 |
'breakdown' => $breakdown,
|
82 |
+
|
83 |
'home_url' => home_url(),
|
84 |
'website' => home_url(),
|
85 |
'admin_email' => SPDSGVOSettings::get('admin_email'),
|
91 |
$this->pdf_path,
|
92 |
));
|
93 |
}catch(Exception $e){
|
94 |
+
|
95 |
}
|
96 |
|
97 |
|
131 |
}
|
132 |
|
133 |
public function _postFinderToken($results, $args){
|
134 |
+
return @$results[0];
|
135 |
}
|
136 |
|
137 |
public function _finderPending($args){
|
158 |
// Misc
|
159 |
//======================================================================
|
160 |
public function name(){
|
161 |
+
return $this->first_name .' '. $this->last_name;
|
162 |
}
|
163 |
|
164 |
public function filename($extension){
|
178 |
public function buildPDF(){
|
179 |
$pdf = new SPDSGVOPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
|
180 |
$pdf->SetCreator(PDF_CREATOR);
|
181 |
+
$pdf->SetTitle(__('All data of', 'shapepress-dsgvo') . ' '. $this->name());
|
182 |
+
$pdf->SetSubject(__('All data of', 'shapepress-dsgvo') . ' '. $this->name());
|
183 |
|
184 |
+
$pdf->SetHeaderData('', PDF_HEADER_LOGO_WIDTH, __('All data of', 'shapepress-dsgvo') . " {$this->name()}", sprintf(__('Date', 'shapepress-dsgvo') . ": %s \n" . __('Source', 'shapepress-dsgvo') . ": %s", date('j. F Y, G:i:s'), home_url()));
|
185 |
$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
|
186 |
$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
|
187 |
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
|
190 |
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
|
191 |
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
|
192 |
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
193 |
+
|
194 |
$pdf->SetFont('helvetica', '', 12);
|
195 |
$pdf->AddPage();
|
196 |
$pdf->coloredTable($this->collectedData);
|
197 |
+
|
198 |
$fileName = $this->filename('pdf');
|
199 |
$upload = wp_upload_bits($fileName, NULL, $pdf->Output($path, 'S'));
|
200 |
$this->pdf_path = $upload['file'];
|
218 |
'publicly_queryable' => FALSE,
|
219 |
'exclude_from_search' => FALSE,
|
220 |
'public' => FALSE,
|
221 |
+
));
|
includes/models/unsubscriber.php
CHANGED
@@ -22,22 +22,21 @@ Class SPDSGVOUnsubscriber extends SPDSGVOModel {
|
|
22 |
// doSuperUnsubscribe()
|
23 |
//======================================================================
|
24 |
public function doSuperUnsubscribe(){
|
25 |
-
|
26 |
$user = get_user_by('email', $this->email);
|
27 |
$ignored_roles = array('administrator');
|
28 |
-
|
29 |
-
|
30 |
if( array_intersect($ignored_roles, $user->roles ))
|
31 |
{
|
32 |
-
error_log('doSuperUnsubscribe: user '.$this->email.' ignored because he has role of '.implode($user->roles));
|
33 |
} else
|
34 |
{
|
35 |
$this->status = 'in-progress';
|
36 |
$this->save();
|
37 |
-
|
38 |
$dataCollecter = new SPDSGVODataCollecter($this->email, $this->first_name, $this->last_name);
|
39 |
$dataCollecter->superUnsubscribe();
|
40 |
-
|
41 |
$this->status = 'done';
|
42 |
$this->save();
|
43 |
}
|
@@ -45,7 +44,7 @@ Class SPDSGVOUnsubscriber extends SPDSGVOModel {
|
|
45 |
|
46 |
|
47 |
public static function doByID($ID){
|
48 |
-
|
49 |
if(!is_null($unsubscriber)){
|
50 |
$unsubscriber->doSuperUnsubscribe();
|
51 |
return TRUE;
|
@@ -69,7 +68,7 @@ Class SPDSGVOUnsubscriber extends SPDSGVOModel {
|
|
69 |
}
|
70 |
|
71 |
public function _postFinderToken($results, $args){
|
72 |
-
return @$results[0];
|
73 |
}
|
74 |
|
75 |
public function _finderStatus($args){
|
@@ -88,20 +87,20 @@ Class SPDSGVOUnsubscriber extends SPDSGVOModel {
|
|
88 |
// Hooks
|
89 |
//======================================================================
|
90 |
public function inserting(){
|
91 |
-
|
92 |
}
|
93 |
|
94 |
-
public function inserted()
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
$email = SPDSGVOMail::init()
|
99 |
-
->to($this->email)
|
100 |
->from(SPDSGVOSettings::get('admin_email'))
|
101 |
-
->
|
102 |
-
->
|
103 |
-
->
|
104 |
-
->
|
|
|
105 |
'website' => parse_url(home_url(), PHP_URL_HOST),
|
106 |
'confirm_link' => SPDSGVOSuperUnsubscribeConfirmAction::url(array(
|
107 |
'token' => $this->token
|
@@ -118,7 +117,7 @@ Class SPDSGVOUnsubscriber extends SPDSGVOModel {
|
|
118 |
// Misc
|
119 |
//======================================================================
|
120 |
public function name(){
|
121 |
-
return $this->first_name .' '. $this->last_name;
|
122 |
}
|
123 |
|
124 |
public static function randomString($len = 20){
|
@@ -144,4 +143,4 @@ function registerUnsubscriberDSGVOModel(){
|
|
144 |
'public' => FALSE,
|
145 |
));
|
146 |
}
|
147 |
-
add_action('init', 'registerUnsubscriberDSGVOModel');
|
22 |
// doSuperUnsubscribe()
|
23 |
//======================================================================
|
24 |
public function doSuperUnsubscribe(){
|
|
|
25 |
$user = get_user_by('email', $this->email);
|
26 |
$ignored_roles = array('administrator');
|
27 |
+
|
28 |
+
|
29 |
if( array_intersect($ignored_roles, $user->roles ))
|
30 |
{
|
31 |
+
//error_log('doSuperUnsubscribe: user '.$this->email.' ignored because he has role of '.implode($user->roles));
|
32 |
} else
|
33 |
{
|
34 |
$this->status = 'in-progress';
|
35 |
$this->save();
|
36 |
+
|
37 |
$dataCollecter = new SPDSGVODataCollecter($this->email, $this->first_name, $this->last_name);
|
38 |
$dataCollecter->superUnsubscribe();
|
39 |
+
|
40 |
$this->status = 'done';
|
41 |
$this->save();
|
42 |
}
|
44 |
|
45 |
|
46 |
public static function doByID($ID){
|
47 |
+
$unsubscriber = self::find($ID);
|
48 |
if(!is_null($unsubscriber)){
|
49 |
$unsubscriber->doSuperUnsubscribe();
|
50 |
return TRUE;
|
68 |
}
|
69 |
|
70 |
public function _postFinderToken($results, $args){
|
71 |
+
return @$results[0];
|
72 |
}
|
73 |
|
74 |
public function _finderStatus($args){
|
87 |
// Hooks
|
88 |
//======================================================================
|
89 |
public function inserting(){
|
90 |
+
$this->token = self::randomString();
|
91 |
}
|
92 |
|
93 |
+
public function inserted(){
|
94 |
+
|
95 |
+
if ($this->process_now === '1') return;
|
96 |
+
|
97 |
$email = SPDSGVOMail::init()
|
|
|
98 |
->from(SPDSGVOSettings::get('admin_email'))
|
99 |
+
->to($this->email)
|
100 |
+
->subject(__('Confirmation of delete request','shapepress-dsgvo'). ': '. parse_url(home_url(), PHP_URL_HOST))
|
101 |
+
->beforeTemplate(SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/header.php'))
|
102 |
+
->afterTemplate( SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/footer.php'))
|
103 |
+
->template(SPDSGVO::pluginDir('/templates/'.get_locale().'/emails/super-unsubscribe.php'), array(
|
104 |
'website' => parse_url(home_url(), PHP_URL_HOST),
|
105 |
'confirm_link' => SPDSGVOSuperUnsubscribeConfirmAction::url(array(
|
106 |
'token' => $this->token
|
117 |
// Misc
|
118 |
//======================================================================
|
119 |
public function name(){
|
120 |
+
return $this->first_name .' '. $this->last_name;
|
121 |
}
|
122 |
|
123 |
public static function randomString($len = 20){
|
143 |
'public' => FALSE,
|
144 |
));
|
145 |
}
|
146 |
+
add_action('init', 'registerUnsubscriberDSGVOModel');
|
languages/shapepress-dsgvo-de_DE.mo
ADDED
Binary file
|
languages/shapepress-dsgvo-de_DE.po
ADDED
@@ -0,0 +1,2216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: \n"
|
4 |
+
"POT-Creation-Date: 2018-08-16 15:54+0200\n"
|
5 |
+
"PO-Revision-Date: 2018-08-16 16:50+0200\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: \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 |
+
"X-Generator: Poedit 2.0.8\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
16 |
+
"X-Poedit-SearchPath-0: .\n"
|
17 |
+
"X-Poedit-SearchPathExcluded-0: includes/lib/tcpdf\n"
|
18 |
+
"X-Poedit-SearchPathExcluded-1: includes/lib/plugin-update-checker\n"
|
19 |
+
|
20 |
+
#: admin/base.php:2
|
21 |
+
msgid "WP DSGVO Tools"
|
22 |
+
msgstr "WP DSGVO Tools"
|
23 |
+
|
24 |
+
#: admin/base.php:32
|
25 |
+
msgid "WP DSGVO Tools is not binding and does not replace expert advice"
|
26 |
+
msgstr "WP DSGVO Tools ist unverbindlich & ersetzt keine Expertenberatung"
|
27 |
+
|
28 |
+
#: admin/base.php:34
|
29 |
+
msgid "GDPR website self check"
|
30 |
+
msgstr "DSGVO Website Selbstcheck"
|
31 |
+
|
32 |
+
#: admin/base.php:35
|
33 |
+
msgid "Includes only your web presence!"
|
34 |
+
msgstr "Umfasst nur Ihren Webauftritt!"
|
35 |
+
|
36 |
+
#: admin/base.php:40
|
37 |
+
msgid "VdV (directory of processing times)"
|
38 |
+
msgstr "VdV (Verzeichnis der Verarbeitungstägkeiten)"
|
39 |
+
|
40 |
+
#: admin/base.php:40
|
41 |
+
msgid "downloaded"
|
42 |
+
msgstr "heruntergeladen"
|
43 |
+
|
44 |
+
#: admin/base.php:41
|
45 |
+
msgid "filled"
|
46 |
+
msgstr "ausgefüllt"
|
47 |
+
|
48 |
+
#: admin/base.php:47
|
49 |
+
msgid "WP DSGVO Tools plugin completely filled"
|
50 |
+
msgstr "WP DSGVO Tools Plugin vollständig ausgefüllt"
|
51 |
+
|
52 |
+
#: admin/base.php:52
|
53 |
+
msgid ""
|
54 |
+
"Monthly maintenance of the website (maintenance contract with the web "
|
55 |
+
"designer)"
|
56 |
+
msgstr "Monatliche Wartung der Website (Wartungsvertrag beim Webdesigner)"
|
57 |
+
|
58 |
+
#: admin/base.php:56
|
59 |
+
msgid "Security Precautions (strong passwords, who has access, ...)"
|
60 |
+
msgstr "Sicherheitsvorkehrungen (Starke Passwörter, wer hat Zugriff,...)"
|
61 |
+
|
62 |
+
#: admin/base.php:60
|
63 |
+
msgid "GDPR compliant and secure web hosting? Our recommendation:"
|
64 |
+
msgstr "DSGVO konformes und sicheres Web-Hosting? Unsere Empfehlung:"
|
65 |
+
|
66 |
+
#: admin/base.php:66
|
67 |
+
msgid "Check the security of unsupported plugins"
|
68 |
+
msgstr "Sicherheit von nicht unterstützten Plugins prüfen"
|
69 |
+
|
70 |
+
#: admin/base.php:71
|
71 |
+
msgid "Expert advice"
|
72 |
+
msgstr "Expertenberatung"
|
73 |
+
|
74 |
+
#: admin/base.php:71
|
75 |
+
msgid "requested"
|
76 |
+
msgstr "angefordert"
|
77 |
+
|
78 |
+
#: admin/base.php:75
|
79 |
+
msgid "Blog Edition"
|
80 |
+
msgstr "Blog Edition"
|
81 |
+
|
82 |
+
#: admin/base.php:77
|
83 |
+
msgid ""
|
84 |
+
"Stylish Cookie Notice: Customize the look & feel of your Wordpress Page!"
|
85 |
+
msgstr ""
|
86 |
+
"Stylebare Cookie Notice: Passe das Look & Feel deiner Wordpress Page an!"
|
87 |
+
|
88 |
+
#: admin/base.php:78
|
89 |
+
msgid "Texts customizable with comment checkbox"
|
90 |
+
msgstr "Texte bei Kommentarcheckbox anpassbar"
|
91 |
+
|
92 |
+
#: admin/base.php:82
|
93 |
+
msgid "Get the Blog Edition now"
|
94 |
+
msgstr "Jetzt die Blog Edition holen"
|
95 |
+
|
96 |
+
#: admin/base.php:86
|
97 |
+
msgid "Upgrade to Premium"
|
98 |
+
msgstr "Upgrade to Premium"
|
99 |
+
|
100 |
+
#: admin/base.php:88
|
101 |
+
msgid "Cookie Notice Popup"
|
102 |
+
msgstr "Cookie Notice Popup"
|
103 |
+
|
104 |
+
#: admin/base.php:89
|
105 |
+
msgid "Support & Community"
|
106 |
+
msgstr "Support & Community"
|
107 |
+
|
108 |
+
#: admin/base.php:90
|
109 |
+
msgid "More Integrations"
|
110 |
+
msgstr "Weitere Integrationen"
|
111 |
+
|
112 |
+
#: admin/base.php:91
|
113 |
+
msgid "Automatic user data reports"
|
114 |
+
msgstr "Automatische Userdaten Auszüge"
|
115 |
+
|
116 |
+
#: admin/base.php:92
|
117 |
+
msgid "Email notifications"
|
118 |
+
msgstr "Email Benachrichtigungen"
|
119 |
+
|
120 |
+
#: admin/base.php:93
|
121 |
+
msgid "Style & Customization (from Blog Edition)"
|
122 |
+
msgstr "Style & Farbanpassungen (Ab Blog Edition)"
|
123 |
+
|
124 |
+
#: admin/base.php:94
|
125 |
+
msgid "and much more"
|
126 |
+
msgstr "und viele mehr"
|
127 |
+
|
128 |
+
#: admin/base.php:98
|
129 |
+
msgid "Get Premium version now"
|
130 |
+
msgstr "Hol dir jetzt unser Premium Plugin"
|
131 |
+
|
132 |
+
#: admin/base.php:101
|
133 |
+
msgid "FAQ & checklists"
|
134 |
+
msgstr "FAQ & Checklisten"
|
135 |
+
|
136 |
+
#: admin/base.php:102
|
137 |
+
msgid "GDPR experts booking"
|
138 |
+
msgstr "DSGVO Experten buchen"
|
139 |
+
|
140 |
+
#: admin/base.php:103
|
141 |
+
msgid "Book legal advice"
|
142 |
+
msgstr "Rechtliche Beratung buchen"
|
143 |
+
|
144 |
+
#: admin/class-sp-dsgvo-admin.php:71 admin/tabs/privacy-policy/page.php:1
|
145 |
+
msgid "Privacy policy"
|
146 |
+
msgstr "Datenschutz"
|
147 |
+
|
148 |
+
#: admin/class-sp-dsgvo-admin.php:72
|
149 |
+
#: admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php:11
|
150 |
+
#: admin/tabs/imprint/page.php:1
|
151 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:61
|
152 |
+
msgid "Imprint"
|
153 |
+
msgstr "Impressum"
|
154 |
+
|
155 |
+
#: admin/class-sp-dsgvo-admin.php:78
|
156 |
+
msgid "Experts Info"
|
157 |
+
msgstr "Experteninfo"
|
158 |
+
|
159 |
+
#: admin/class-sp-dsgvo-admin.php:79
|
160 |
+
msgid "Legal advice"
|
161 |
+
msgstr "Rechtsberatung"
|
162 |
+
|
163 |
+
#: admin/class-sp-dsgvo-admin.php:80
|
164 |
+
msgid "FAQ"
|
165 |
+
msgstr "FAQ"
|
166 |
+
|
167 |
+
#: admin/class-sp-dsgvo-admin.php:81
|
168 |
+
msgid "About WP DSGVO Tools"
|
169 |
+
msgstr "Über WP DSGVO Tools"
|
170 |
+
|
171 |
+
#: admin/class-sp-dsgvo-admin.php:125
|
172 |
+
msgid "Are you sure you want to dismiss this request?"
|
173 |
+
msgstr "Sind Sie Sicher dass Sie die Anfrage abbrechen wollen?"
|
174 |
+
|
175 |
+
#: admin/class-sp-dsgvo-admin.php:142
|
176 |
+
msgid "Privacy settings user page"
|
177 |
+
msgstr "Datenschutzeinstellungen Benutzer Seite"
|
178 |
+
|
179 |
+
#: admin/class-sp-dsgvo-admin.php:143
|
180 |
+
msgid "Delete request page"
|
181 |
+
msgstr "Löschanfrage Seite"
|
182 |
+
|
183 |
+
#: admin/class-sp-dsgvo-admin.php:144
|
184 |
+
msgid "Terms page"
|
185 |
+
msgstr "AGB Seite"
|
186 |
+
|
187 |
+
#: admin/class-sp-dsgvo-admin.php:145
|
188 |
+
msgid "Explicit permissions page"
|
189 |
+
msgstr "Explizite Berechtigungen Seite"
|
190 |
+
|
191 |
+
#: admin/class-sp-dsgvo-admin.php:146
|
192 |
+
msgid "Opt Out page"
|
193 |
+
msgstr "Opt Out Seite"
|
194 |
+
|
195 |
+
#: admin/class-sp-dsgvo-admin.php:147 admin/tabs/privacy-policy/page.php:12
|
196 |
+
msgid "Privacy policy page"
|
197 |
+
msgstr "Datenschutz Seite"
|
198 |
+
|
199 |
+
#: admin/class-sp-dsgvo-admin.php:148
|
200 |
+
msgid "Subject access request page"
|
201 |
+
msgstr "Datenauszug Seite"
|
202 |
+
|
203 |
+
#: admin/class-sp-dsgvo-admin.php:149
|
204 |
+
msgid "Imprint page"
|
205 |
+
msgstr "Impressum Seite"
|
206 |
+
|
207 |
+
#: admin/class-sp-dsgvo-admin.php:200
|
208 |
+
msgid "Privacy settings of the user"
|
209 |
+
msgstr "Datenschutzeinstellungen des Benutzers"
|
210 |
+
|
211 |
+
#: admin/class-sp-dsgvo-admin.php:205
|
212 |
+
msgid "Dienste"
|
213 |
+
msgstr "Dienste"
|
214 |
+
|
215 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:28
|
216 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:50
|
217 |
+
msgid "error during license activation: "
|
218 |
+
msgstr "Fehler während der Aktivierung: "
|
219 |
+
|
220 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:77
|
221 |
+
msgid "error during license details: "
|
222 |
+
msgstr "Fehler während der Lizenzabfrage: "
|
223 |
+
|
224 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php:11
|
225 |
+
#: admin/tabs/common-settings/page.php:41
|
226 |
+
msgid "Common Settings"
|
227 |
+
msgstr "Allgemeine Einstellungen"
|
228 |
+
|
229 |
+
#: admin/tabs/common-settings/page.php:4
|
230 |
+
msgid "Activate Blog/Premium"
|
231 |
+
msgstr "Blog/Premium Edition freischalten"
|
232 |
+
|
233 |
+
#: admin/tabs/common-settings/page.php:8
|
234 |
+
msgid "License"
|
235 |
+
msgstr "Lizenz"
|
236 |
+
|
237 |
+
#: admin/tabs/common-settings/page.php:16
|
238 |
+
msgid "Premium version has been activated"
|
239 |
+
msgstr "Die Premium Edition ist aktiviert."
|
240 |
+
|
241 |
+
#: admin/tabs/common-settings/page.php:16
|
242 |
+
msgid "Invalid or expired license."
|
243 |
+
msgstr "Ungültige oder abgelaufene Lizenz."
|
244 |
+
|
245 |
+
#: admin/tabs/common-settings/page.php:19
|
246 |
+
msgid "Blog version has been activated"
|
247 |
+
msgstr "Die Blog Edition ist aktiviert."
|
248 |
+
|
249 |
+
#: admin/tabs/common-settings/page.php:19
|
250 |
+
msgid "Invalid license."
|
251 |
+
msgstr "Ungültige Lizenz."
|
252 |
+
|
253 |
+
#: admin/tabs/common-settings/page.php:23
|
254 |
+
msgid "Activated on:"
|
255 |
+
msgstr "Aktiviert am:"
|
256 |
+
|
257 |
+
#: admin/tabs/common-settings/page.php:24
|
258 |
+
msgid "Valid to:"
|
259 |
+
msgstr "Gültig bis:"
|
260 |
+
|
261 |
+
#: admin/tabs/common-settings/page.php:26
|
262 |
+
msgid "Deactivate license"
|
263 |
+
msgstr "Lizenz deaktivieren"
|
264 |
+
|
265 |
+
#: admin/tabs/common-settings/page.php:28
|
266 |
+
msgid "Activating the license unlocks more features."
|
267 |
+
msgstr "Aktivieren der Lizenz schaltet weitere Funktionen frei."
|
268 |
+
|
269 |
+
#: admin/tabs/common-settings/page.php:29
|
270 |
+
msgid "Activate license"
|
271 |
+
msgstr "Lizenz aktivieren"
|
272 |
+
|
273 |
+
#: admin/tabs/common-settings/page.php:45
|
274 |
+
msgid "Admin Email"
|
275 |
+
msgstr "Admin Email"
|
276 |
+
|
277 |
+
#: admin/tabs/common-settings/page.php:49
|
278 |
+
msgid "Used by sending emails."
|
279 |
+
msgstr "Wird bei Emails verwendet."
|
280 |
+
|
281 |
+
#: admin/tabs/common-settings/page.php:52
|
282 |
+
msgid "Use WPML Strings"
|
283 |
+
msgstr "WPML Strings verwenden"
|
284 |
+
|
285 |
+
#: admin/tabs/common-settings/page.php:57
|
286 |
+
msgid ""
|
287 |
+
"Use WPML String Translation for text inputs. (E.g. Checkbox for comments.)"
|
288 |
+
msgstr ""
|
289 |
+
"WPML String Übersetzungen für Eingabefelder verwenden. (z.B. bei der "
|
290 |
+
"Checkbox für Kommentare)"
|
291 |
+
|
292 |
+
#: admin/tabs/common-settings/page.php:62
|
293 |
+
#: admin/tabs/common-settings/page.php:64
|
294 |
+
msgid "Comments"
|
295 |
+
msgstr "Kommentare"
|
296 |
+
|
297 |
+
#: admin/tabs/common-settings/page.php:64
|
298 |
+
msgid "Customizing possible with Blog/Premium edition."
|
299 |
+
msgstr "Anpassung ab der Blog/Premium Edition möglich."
|
300 |
+
|
301 |
+
#: admin/tabs/common-settings/page.php:65
|
302 |
+
msgid "Click here to get a license."
|
303 |
+
msgstr "Hier klicken um eine Lizenz anzufordern."
|
304 |
+
|
305 |
+
#: admin/tabs/common-settings/page.php:70
|
306 |
+
msgid "Checkbox for comments:"
|
307 |
+
msgstr "Checkbox bei Kommentaren:"
|
308 |
+
|
309 |
+
#: admin/tabs/common-settings/page.php:75
|
310 |
+
msgid ""
|
311 |
+
"Displays at checkbox which requires confirmation when creating a comment."
|
312 |
+
msgstr ""
|
313 |
+
"Zeigt eine Checkbox bei Kommentaren an welche die Zustimmung zu den DSGVO "
|
314 |
+
"Bestimmungen fordert."
|
315 |
+
|
316 |
+
#: admin/tabs/common-settings/page.php:80
|
317 |
+
msgid "Replace CF7 Acceptance text"
|
318 |
+
msgstr "CF7 Acceptance Text ersetzen"
|
319 |
+
|
320 |
+
#: admin/tabs/common-settings/page.php:87
|
321 |
+
msgid ""
|
322 |
+
"Replaces the text of CF7 Acceptance Checkboxes with following text. (Add to "
|
323 |
+
"your form: [acceptance dsgvo] Text[/acceptance])"
|
324 |
+
msgstr ""
|
325 |
+
"Überschreibt den Text von Acceptance Checkboxen von CF7 mit dem "
|
326 |
+
"nachfolgendem Text. (Im Formular ergänzen: [acceptance dsgvo] Text[/"
|
327 |
+
"acceptance])"
|
328 |
+
|
329 |
+
#: admin/tabs/common-settings/page.php:91 admin/tabs/cookie-notice/page.php:583
|
330 |
+
msgid "Text"
|
331 |
+
msgstr "Text"
|
332 |
+
|
333 |
+
#: admin/tabs/common-settings/page.php:93
|
334 |
+
msgid "Message text:"
|
335 |
+
msgstr "Meldungstext:"
|
336 |
+
|
337 |
+
#: admin/tabs/common-settings/page.php:99
|
338 |
+
msgid "Info text:"
|
339 |
+
msgstr "Hinweistext:"
|
340 |
+
|
341 |
+
#: admin/tabs/common-settings/page.php:107
|
342 |
+
msgid "Confirmation text"
|
343 |
+
msgstr "Zustimmungstext"
|
344 |
+
|
345 |
+
#: admin/tabs/common-settings/page.php:118
|
346 |
+
msgid "Company data"
|
347 |
+
msgstr "Unternehmensdaten"
|
348 |
+
|
349 |
+
#: admin/tabs/common-settings/page.php:119
|
350 |
+
msgid ""
|
351 |
+
"The following input fields represent the basic data necessary for the "
|
352 |
+
"creation of GDPR compliant data protection regulations and an imprint.<br /"
|
353 |
+
">All entries made here are automatically used in the privacy policy and "
|
354 |
+
"imprint generated by the WP DSGVO Tools Plugin."
|
355 |
+
msgstr ""
|
356 |
+
"Die nachfolgenden Eingabefelder stellen die grundlegenden Daten dar, die zum "
|
357 |
+
"Erzeugen DSGVO-konformer Datenschutzbestimmungen sowie ein Impressum "
|
358 |
+
"notwendig sind.<br />Alle Eingaben die sie hier tätigen werden "
|
359 |
+
"automatisch in das vom WP DSGVO Tools Plugin generierten "
|
360 |
+
"Datenschutzbestimmungen sowie Impressum verwendet."
|
361 |
+
|
362 |
+
#: admin/tabs/common-settings/page.php:123
|
363 |
+
msgid "Company name:"
|
364 |
+
msgstr "Name des Unternehmens:"
|
365 |
+
|
366 |
+
#: admin/tabs/common-settings/page.php:130
|
367 |
+
msgid "Street:"
|
368 |
+
msgstr "Straße:"
|
369 |
+
|
370 |
+
#: admin/tabs/common-settings/page.php:137
|
371 |
+
msgid "ZIP + Location:"
|
372 |
+
msgstr "PLZ + Ort:"
|
373 |
+
|
374 |
+
#: admin/tabs/common-settings/page.php:144
|
375 |
+
msgid "Commercial book no.:"
|
376 |
+
msgstr "Firmenbuch Nr.:"
|
377 |
+
|
378 |
+
#: admin/tabs/common-settings/page.php:151
|
379 |
+
msgid "§11 Place of Jurisdiction:"
|
380 |
+
msgstr "Gerichtsstand:"
|
381 |
+
|
382 |
+
#: admin/tabs/common-settings/page.php:158
|
383 |
+
msgid "VAT No.:"
|
384 |
+
msgstr "USt. Id:"
|
385 |
+
|
386 |
+
#: admin/tabs/common-settings/page.php:165
|
387 |
+
msgid "Legal representatives:"
|
388 |
+
msgstr "Gesetzlicher Vertreter:"
|
389 |
+
|
390 |
+
#: admin/tabs/common-settings/page.php:169
|
391 |
+
msgid "The person who legally represents the company."
|
392 |
+
msgstr "Die Person die das Unternehmen gesetzlich vertritt."
|
393 |
+
|
394 |
+
#: admin/tabs/common-settings/page.php:172
|
395 |
+
msgid "Shareholder"
|
396 |
+
msgstr "Gesellschafter"
|
397 |
+
|
398 |
+
#: admin/tabs/common-settings/page.php:176
|
399 |
+
msgid "In case of companies please contact all shareholders here."
|
400 |
+
msgstr ""
|
401 |
+
"Im Fall von Gesellschaften hier bitte alle Gesellschafter anführen."
|
402 |
+
|
403 |
+
#: admin/tabs/common-settings/page.php:179
|
404 |
+
msgid "Responsible for content:"
|
405 |
+
msgstr "Verantwortlicher für Inhalt:"
|
406 |
+
|
407 |
+
#: admin/tabs/common-settings/page.php:183
|
408 |
+
msgid "The person responsible for the content on this website."
|
409 |
+
msgstr ""
|
410 |
+
"Die Person die für den Inhalt auf dieser Website verantwortlich ist."
|
411 |
+
|
412 |
+
#: admin/tabs/common-settings/page.php:186
|
413 |
+
msgid "Phone:"
|
414 |
+
msgstr "Telefon:"
|
415 |
+
|
416 |
+
#: admin/tabs/common-settings/page.php:193
|
417 |
+
msgid "Email:"
|
418 |
+
msgstr "Email:"
|
419 |
+
|
420 |
+
#: admin/tabs/common-settings/page.php:200
|
421 |
+
msgid "Newsletter service:"
|
422 |
+
msgstr "Newsletter Service:"
|
423 |
+
|
424 |
+
#: admin/tabs/common-settings/page.php:204
|
425 |
+
msgid ""
|
426 |
+
"Name of the shipping service provider with which the newsletters will be "
|
427 |
+
"sent."
|
428 |
+
msgstr ""
|
429 |
+
"Name des Versanddienstleisters mit dem die Newsletter versendet werden."
|
430 |
+
|
431 |
+
#: admin/tabs/common-settings/page.php:207
|
432 |
+
msgid "URL Privacy Police of Newsletter Service:"
|
433 |
+
msgstr "URL Datenschutz Newsletter Service:"
|
434 |
+
|
435 |
+
#: admin/tabs/common-settings/page.php:211
|
436 |
+
msgid "The URL to the terms of the newsletter service."
|
437 |
+
msgstr "Die URL zu den AGB des Dienstes"
|
438 |
+
|
439 |
+
#: admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php:11
|
440 |
+
#: admin/tabs/cookie-notice/page.php:4 admin/tabs/cookie-notice/page.php:152
|
441 |
+
msgid "Cookie Notice"
|
442 |
+
msgstr "Cookie Notice"
|
443 |
+
|
444 |
+
#: admin/tabs/cookie-notice/page.php:8
|
445 |
+
msgid "Tracker initialization:"
|
446 |
+
msgstr "Tracker Initialisierung:"
|
447 |
+
|
448 |
+
#: admin/tabs/cookie-notice/page.php:13
|
449 |
+
msgid "When loading the page"
|
450 |
+
msgstr "Beim Laden der Seite"
|
451 |
+
|
452 |
+
#: admin/tabs/cookie-notice/page.php:14
|
453 |
+
msgid "After approval of the cookie"
|
454 |
+
msgstr "Nach Zustimmung des Cookies"
|
455 |
+
|
456 |
+
#: admin/tabs/cookie-notice/page.php:16
|
457 |
+
msgid ""
|
458 |
+
"Specifies when the trackers should be active. Whether before the consent of "
|
459 |
+
"the cookie or after clicking on Ok. For After approval Reload after approval "
|
460 |
+
"must be checked."
|
461 |
+
msgstr ""
|
462 |
+
"Gibt an wann die Tracker aktiv sein sollen. Ob vor Zustimmung des Cookies "
|
463 |
+
"oder nach dem Klick auf Ok. Bei \"Nach Zustimmung\" muss \"Neuladen nach "
|
464 |
+
"Zustimmung\" angehakt sein."
|
465 |
+
|
466 |
+
#: admin/tabs/cookie-notice/page.php:27
|
467 |
+
msgid "Google Analyics"
|
468 |
+
msgstr "Google Analytics"
|
469 |
+
|
470 |
+
#: admin/tabs/cookie-notice/page.php:35
|
471 |
+
msgid "GTAG number:"
|
472 |
+
msgstr "GTAG Nummer:"
|
473 |
+
|
474 |
+
#: admin/tabs/cookie-notice/page.php:43
|
475 |
+
msgid ""
|
476 |
+
"The IP address will be anonymously and visitors get the option refuse "
|
477 |
+
"tracking. <br />Tip: Country specific geodata will be further tracked even "
|
478 |
+
"with anonymization."
|
479 |
+
msgstr ""
|
480 |
+
"Die IP Adresse wird anonymisiert und die Besucher erhalten die Möglichkeit "
|
481 |
+
"das Tracking abzulehnen.<br /> Tipp: Länderspezfische Geodaten werden auch "
|
482 |
+
"bei Anonymisierung weitergetracked."
|
483 |
+
|
484 |
+
#: admin/tabs/cookie-notice/page.php:51
|
485 |
+
msgid "Facebook Pixel"
|
486 |
+
msgstr "Facebook Pixel"
|
487 |
+
|
488 |
+
#: admin/tabs/cookie-notice/page.php:58
|
489 |
+
msgid "FB Pixel Id:"
|
490 |
+
msgstr "FB Pixel Id:"
|
491 |
+
|
492 |
+
#: admin/tabs/cookie-notice/page.php:66
|
493 |
+
msgid "Visitors maintained the opportunity to reject the tracking."
|
494 |
+
msgstr "Besucher erhalten die Möglichkeit das Tracking abzulehnen."
|
495 |
+
|
496 |
+
#: admin/tabs/cookie-notice/page.php:76
|
497 |
+
msgid "Use your own Codes (at own risk)"
|
498 |
+
msgstr "Eigenen Tracker Code verwenden (auf eigenes Risiko)"
|
499 |
+
|
500 |
+
#: admin/tabs/cookie-notice/page.php:100
|
501 |
+
msgid "Google Analytics code:"
|
502 |
+
msgstr "Google Analytics Code:"
|
503 |
+
|
504 |
+
#: admin/tabs/cookie-notice/page.php:106
|
505 |
+
msgid "If left blank, the standard GA script will be used"
|
506 |
+
msgstr "Wenn leer gelassen wird das Standard GA Skript verwenden."
|
507 |
+
|
508 |
+
#: admin/tabs/cookie-notice/page.php:125
|
509 |
+
msgid "Facebook Pixel code:"
|
510 |
+
msgstr "Facebook Pixel Code:"
|
511 |
+
|
512 |
+
#: admin/tabs/cookie-notice/page.php:131
|
513 |
+
msgid ""
|
514 |
+
"If left blank, the standard FB Pixel script will be used. [pixel_number] "
|
515 |
+
"will be replaced with FB Pixel ID."
|
516 |
+
msgstr "Wenn leer gelassen wird das Standard Pixel Skript verwenden."
|
517 |
+
|
518 |
+
#: admin/tabs/cookie-notice/page.php:147
|
519 |
+
msgid "Notice type"
|
520 |
+
msgstr "Meldungsart:"
|
521 |
+
|
522 |
+
#: admin/tabs/cookie-notice/page.php:151
|
523 |
+
msgid "No notice"
|
524 |
+
msgstr "keine Cookie Notice"
|
525 |
+
|
526 |
+
#: admin/tabs/cookie-notice/page.php:154
|
527 |
+
msgid "Privacy Popup"
|
528 |
+
msgstr "Datenschutzvereinbarungen Popup"
|
529 |
+
|
530 |
+
#: admin/tabs/cookie-notice/page.php:164
|
531 |
+
msgid "Popup logo"
|
532 |
+
msgstr "Popup Logo"
|
533 |
+
|
534 |
+
#: admin/tabs/cookie-notice/page.php:182 admin/tabs/services/page.php:108
|
535 |
+
#: admin/tabs/services/page.php:184
|
536 |
+
msgid "Upload image"
|
537 |
+
msgstr "Bild uploaden"
|
538 |
+
|
539 |
+
#: admin/tabs/cookie-notice/page.php:189
|
540 |
+
msgid "Close button action"
|
541 |
+
msgstr "Schließen Button Aktion"
|
542 |
+
|
543 |
+
#: admin/tabs/cookie-notice/page.php:193
|
544 |
+
msgid "Close popup"
|
545 |
+
msgstr "Popup schließen"
|
546 |
+
|
547 |
+
#: admin/tabs/cookie-notice/page.php:194
|
548 |
+
msgid "Redirect to URL"
|
549 |
+
msgstr "Umleitung zur URL"
|
550 |
+
|
551 |
+
#: admin/tabs/cookie-notice/page.php:201
|
552 |
+
msgid "Close button URL"
|
553 |
+
msgstr "Schließen Button URL"
|
554 |
+
|
555 |
+
#: admin/tabs/cookie-notice/page.php:210
|
556 |
+
msgid "Accordion title text"
|
557 |
+
msgstr "Überschrift für Optionsansicht"
|
558 |
+
|
559 |
+
#: admin/tabs/cookie-notice/page.php:225
|
560 |
+
msgid "Popup background:"
|
561 |
+
msgstr "Popup Hintergrund:"
|
562 |
+
|
563 |
+
#: admin/tabs/cookie-notice/page.php:240
|
564 |
+
msgid "Separators color:"
|
565 |
+
msgstr "Farbe der Trenner"
|
566 |
+
|
567 |
+
#: admin/tabs/cookie-notice/page.php:255
|
568 |
+
msgid "Font color:"
|
569 |
+
msgstr "Schriftfarbe:"
|
570 |
+
|
571 |
+
#: admin/tabs/cookie-notice/page.php:270
|
572 |
+
msgid "Links color:"
|
573 |
+
msgstr "Farbe der Links"
|
574 |
+
|
575 |
+
#: admin/tabs/cookie-notice/page.php:285
|
576 |
+
msgid "Links color (hover):"
|
577 |
+
msgstr "Farbe der Links (hover)"
|
578 |
+
|
579 |
+
#: admin/tabs/cookie-notice/page.php:300
|
580 |
+
msgid "Accept button font color:"
|
581 |
+
msgstr "Farbe des Akzeptieren Buttons"
|
582 |
+
|
583 |
+
#: admin/tabs/cookie-notice/page.php:315
|
584 |
+
msgid "Accept button background color:"
|
585 |
+
msgstr "Hintergrundfarbe des Akzeptieren Buttons"
|
586 |
+
|
587 |
+
#: admin/tabs/cookie-notice/page.php:342
|
588 |
+
msgid "Notice text:"
|
589 |
+
msgstr "Meldungstext:"
|
590 |
+
|
591 |
+
#: admin/tabs/cookie-notice/page.php:344
|
592 |
+
msgid "Insert the text here"
|
593 |
+
msgstr "Text hier eingeben"
|
594 |
+
|
595 |
+
#: admin/tabs/cookie-notice/page.php:348
|
596 |
+
msgid "Validity:"
|
597 |
+
msgstr "Gültigkeit:"
|
598 |
+
|
599 |
+
#: admin/tabs/cookie-notice/page.php:354
|
600 |
+
msgid "Tag"
|
601 |
+
msgstr "Tag"
|
602 |
+
|
603 |
+
#: admin/tabs/cookie-notice/page.php:356
|
604 |
+
msgid "Woche"
|
605 |
+
msgstr "Woche"
|
606 |
+
|
607 |
+
#: admin/tabs/cookie-notice/page.php:358 admin/tabs/cookie-notice/page.php:360
|
608 |
+
#: admin/tabs/cookie-notice/page.php:362
|
609 |
+
msgid "Month"
|
610 |
+
msgstr "Monat"
|
611 |
+
|
612 |
+
#: admin/tabs/cookie-notice/page.php:364
|
613 |
+
msgid "Year"
|
614 |
+
msgstr "Jahr"
|
615 |
+
|
616 |
+
#: admin/tabs/cookie-notice/page.php:366
|
617 |
+
msgid "For this period, the cookie is navigation use validly."
|
618 |
+
msgstr "Für diesen Zeitraum ist der Cookie gültig."
|
619 |
+
|
620 |
+
#: admin/tabs/cookie-notice/page.php:375
|
621 |
+
msgid "Confirmation"
|
622 |
+
msgstr "Zustimmung"
|
623 |
+
|
624 |
+
#: admin/tabs/cookie-notice/page.php:380 admin/tabs/cookie-notice/page.php:417
|
625 |
+
#: admin/tabs/cookie-notice/page.php:465
|
626 |
+
msgid "Button text:"
|
627 |
+
msgstr "Buttontext:"
|
628 |
+
|
629 |
+
#: admin/tabs/cookie-notice/page.php:385
|
630 |
+
msgid "zB.: Ok"
|
631 |
+
msgstr "Ok"
|
632 |
+
|
633 |
+
#: admin/tabs/cookie-notice/page.php:386
|
634 |
+
msgid "The text to be displayed is to accept the note and hide the message."
|
635 |
+
msgstr ""
|
636 |
+
"Der Text der angezeigt werden soll um den Hinweis zu akzeptieren und die "
|
637 |
+
"Nachricht ausblendet."
|
638 |
+
|
639 |
+
#: admin/tabs/cookie-notice/page.php:391
|
640 |
+
msgid "Reload after confirm:"
|
641 |
+
msgstr "Neuladen nach Zustimmung:"
|
642 |
+
|
643 |
+
#: admin/tabs/cookie-notice/page.php:397
|
644 |
+
msgid "Enable this option to reload the page after accepting cookies."
|
645 |
+
msgstr ""
|
646 |
+
"Aktiviere diese Option, um die Seite neu zu laden, nachdem Cookies "
|
647 |
+
"akzeptiert wurden."
|
648 |
+
|
649 |
+
#: admin/tabs/cookie-notice/page.php:402 public/class-sp-dsgvo-public.php:184
|
650 |
+
msgid "Decline"
|
651 |
+
msgstr "Ablehnen"
|
652 |
+
|
653 |
+
#: admin/tabs/cookie-notice/page.php:407 admin/tabs/cookie-notice/page.php:454
|
654 |
+
msgid "Button active:"
|
655 |
+
msgstr "Button aktiv:"
|
656 |
+
|
657 |
+
#: admin/tabs/cookie-notice/page.php:423
|
658 |
+
msgid "eg.: Decline"
|
659 |
+
msgstr "zB.: Ablehnen"
|
660 |
+
|
661 |
+
#: admin/tabs/cookie-notice/page.php:424
|
662 |
+
msgid "The text of the option to decline cookies."
|
663 |
+
msgstr "Der Text der Option zum Ablehnen von Cookies."
|
664 |
+
|
665 |
+
#: admin/tabs/cookie-notice/page.php:429
|
666 |
+
msgid "Link target for rejection:"
|
667 |
+
msgstr "Linkziel bei Ablehnung:"
|
668 |
+
|
669 |
+
#: admin/tabs/cookie-notice/page.php:435
|
670 |
+
msgid "zb.: www.google.at"
|
671 |
+
msgstr "zb.: www.google.at"
|
672 |
+
|
673 |
+
#: admin/tabs/cookie-notice/page.php:436
|
674 |
+
msgid ""
|
675 |
+
"Specifies the destination where visitors who want to reject the message "
|
676 |
+
"should be forwarded."
|
677 |
+
msgstr ""
|
678 |
+
"Gibt das Ziel an wohin Besucher, die die Nachricht ablehnen weitergeleitet "
|
679 |
+
"werden sollen."
|
680 |
+
|
681 |
+
#: admin/tabs/cookie-notice/page.php:440
|
682 |
+
msgid "Do not set a cookie on forwarding:"
|
683 |
+
msgstr "Kein Cookie setzen bei Weiterleitung:"
|
684 |
+
|
685 |
+
#: admin/tabs/cookie-notice/page.php:445
|
686 |
+
msgid ""
|
687 |
+
"If active, the visitor refuses and returns to the page, the notice will "
|
688 |
+
"reappear."
|
689 |
+
msgstr ""
|
690 |
+
"Wenn aktiv, der Besucher ablehnt und erneut auf die Seite kommt wird ihm die "
|
691 |
+
"Notice wieder angezeigt."
|
692 |
+
|
693 |
+
#: admin/tabs/cookie-notice/page.php:449 public/class-sp-dsgvo-public.php:195
|
694 |
+
msgid "Read more"
|
695 |
+
msgstr "Weiterlesen"
|
696 |
+
|
697 |
+
#: admin/tabs/cookie-notice/page.php:471
|
698 |
+
msgid "zB.: Erfahre mehr"
|
699 |
+
msgstr "zB.: Erfahre mehr"
|
700 |
+
|
701 |
+
#: admin/tabs/cookie-notice/page.php:472
|
702 |
+
msgid "The text of the option to obtain more information"
|
703 |
+
msgstr "Der Text der Option zum Erhalten von mehr Informationen."
|
704 |
+
|
705 |
+
#: admin/tabs/cookie-notice/page.php:476
|
706 |
+
msgid "Link destination to read on:"
|
707 |
+
msgstr "Linkziel zum Weiterlesen:"
|
708 |
+
|
709 |
+
#: admin/tabs/cookie-notice/page.php:489
|
710 |
+
msgid ""
|
711 |
+
"Specifies the destination to where visitors will find more information about "
|
712 |
+
"cookies."
|
713 |
+
msgstr ""
|
714 |
+
"Gibt das Ziel an wohin Besucher weitere Informationen über Cookies finden."
|
715 |
+
|
716 |
+
#: admin/tabs/cookie-notice/page.php:495
|
717 |
+
msgid "Options for displaying the cookie notice."
|
718 |
+
msgstr "Optionen zur Darstellung der Cookie Notice"
|
719 |
+
|
720 |
+
#: admin/tabs/cookie-notice/page.php:499
|
721 |
+
msgid "Position:"
|
722 |
+
msgstr "Position:"
|
723 |
+
|
724 |
+
#: admin/tabs/cookie-notice/page.php:503
|
725 |
+
msgid "On top"
|
726 |
+
msgstr "Oben"
|
727 |
+
|
728 |
+
#: admin/tabs/cookie-notice/page.php:505
|
729 |
+
msgid "Bottom"
|
730 |
+
msgstr "Unten"
|
731 |
+
|
732 |
+
#: admin/tabs/cookie-notice/page.php:507
|
733 |
+
msgid "Specifies the location where the cookie notice should be displayed."
|
734 |
+
msgstr "Gibt die Position an wo die Cookie Notice angezeigt werden soll."
|
735 |
+
|
736 |
+
#: admin/tabs/cookie-notice/page.php:511
|
737 |
+
msgid "Animation"
|
738 |
+
msgstr "Animation"
|
739 |
+
|
740 |
+
#: admin/tabs/cookie-notice/page.php:516
|
741 |
+
msgid "None"
|
742 |
+
msgstr "Keine"
|
743 |
+
|
744 |
+
#: admin/tabs/cookie-notice/page.php:518
|
745 |
+
msgid "fade"
|
746 |
+
msgstr "Ausgleiten"
|
747 |
+
|
748 |
+
#: admin/tabs/cookie-notice/page.php:520
|
749 |
+
msgid "hide"
|
750 |
+
msgstr "Ausblenden"
|
751 |
+
|
752 |
+
#: admin/tabs/cookie-notice/page.php:522
|
753 |
+
msgid "Animation when accepting the cookie message."
|
754 |
+
msgstr "Animation beim Akzeptieren der Cookie-Nachricht."
|
755 |
+
|
756 |
+
#: admin/tabs/cookie-notice/page.php:533 admin/tabs/cookie-notice/page.php:535
|
757 |
+
msgid "Color adjustment"
|
758 |
+
msgstr "Farbliche Anpassung"
|
759 |
+
|
760 |
+
#: admin/tabs/cookie-notice/page.php:535
|
761 |
+
msgid "Possible with blog or premium edition"
|
762 |
+
msgstr "Anpassung ab der Blog/Premium Edition möglich."
|
763 |
+
|
764 |
+
#: admin/tabs/cookie-notice/page.php:536
|
765 |
+
msgid "Click here to get a license"
|
766 |
+
msgstr "Hier klicken um eine Lizenz zu erhalten."
|
767 |
+
|
768 |
+
#: admin/tabs/cookie-notice/page.php:541
|
769 |
+
msgid "Background:"
|
770 |
+
msgstr "Hintergrund:"
|
771 |
+
|
772 |
+
#: admin/tabs/cookie-notice/page.php:550
|
773 |
+
msgid "Text:"
|
774 |
+
msgstr "Text:"
|
775 |
+
|
776 |
+
#: admin/tabs/cookie-notice/page.php:558
|
777 |
+
msgid "Buttons"
|
778 |
+
msgstr "Buttons"
|
779 |
+
|
780 |
+
#: admin/tabs/cookie-notice/page.php:559
|
781 |
+
msgid "Background"
|
782 |
+
msgstr "Hintergrund"
|
783 |
+
|
784 |
+
#: admin/tabs/cookie-notice/page.php:564
|
785 |
+
msgid "Font:"
|
786 |
+
msgstr "Schrift:"
|
787 |
+
|
788 |
+
#: admin/tabs/cookie-notice/page.php:571
|
789 |
+
msgid "CSS Classes"
|
790 |
+
msgstr "CSS Klassen"
|
791 |
+
|
792 |
+
#: admin/tabs/cookie-notice/page.php:572
|
793 |
+
msgid ""
|
794 |
+
"The colors listed under \"Color Changes“ must be overwritten with !Important."
|
795 |
+
msgstr ""
|
796 |
+
"Die unter \"Farbliche Anpassung\" angeführten Farben müssen mit !important "
|
797 |
+
"überschrieben werden."
|
798 |
+
|
799 |
+
#: admin/tabs/cookie-notice/page.php:575
|
800 |
+
msgid "Cookie notice:"
|
801 |
+
msgstr "Cookie Notice:"
|
802 |
+
|
803 |
+
#: admin/tabs/cookie-notice/page.php:591
|
804 |
+
msgid "Buttons:"
|
805 |
+
msgstr "Buttons:"
|
806 |
+
|
807 |
+
#: admin/tabs/cookie-notice/page.php:599
|
808 |
+
msgid "Further display options"
|
809 |
+
msgstr "Weitere Darstellungsoptionen"
|
810 |
+
|
811 |
+
#: admin/tabs/cookie-notice/page.php:602
|
812 |
+
msgid "Font size"
|
813 |
+
msgstr "Textgröße"
|
814 |
+
|
815 |
+
#: admin/tabs/cookie-notice/page.php:609 admin/tabs/cookie-notice/page.php:632
|
816 |
+
#: admin/tabs/services/page.php:62 admin/tabs/services/page.php:128
|
817 |
+
#: admin/tabs/services/page.php:167
|
818 |
+
msgid "Default"
|
819 |
+
msgstr "Standard"
|
820 |
+
|
821 |
+
#: admin/tabs/cookie-notice/page.php:625
|
822 |
+
msgid "Height of cookie notice"
|
823 |
+
msgstr "Höhe der Cookie Notice"
|
824 |
+
|
825 |
+
#: admin/tabs/cookie-notice/page.php:647
|
826 |
+
msgid "Show icon:"
|
827 |
+
msgstr "Icon anzeigen:"
|
828 |
+
|
829 |
+
#: admin/tabs/cookie-notice/page.php:656
|
830 |
+
msgid "Use overlay"
|
831 |
+
msgstr "Overlay verwenden"
|
832 |
+
|
833 |
+
#: admin/tabs/cookie-notice/page.php:662
|
834 |
+
msgid ""
|
835 |
+
"Displays a gray background and prevents the visitor from interacting with "
|
836 |
+
"the site before making a choice."
|
837 |
+
msgstr ""
|
838 |
+
"Blendet einen grauen Hintergrund ein und verhindert das Besucher mit der "
|
839 |
+
"Site agieren bevor eine Wahl getroffen wurde."
|
840 |
+
|
841 |
+
#: admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php:10
|
842 |
+
#: admin/tabs/gravity-forms/page.php:4
|
843 |
+
msgid "Gravity Forms"
|
844 |
+
msgstr "Gravity Forms"
|
845 |
+
|
846 |
+
#: admin/tabs/gravity-forms/page.php:6
|
847 |
+
msgid ""
|
848 |
+
"With these settings the saving behavior of Gravity Forms can be configured."
|
849 |
+
msgstr ""
|
850 |
+
"Mit diesen Einstellungen kann das Speicherverhalten von Gravity Forms "
|
851 |
+
"konfiguriert werden."
|
852 |
+
|
853 |
+
#: admin/tabs/gravity-forms/page.php:13
|
854 |
+
msgid "Do not save form data in the database"
|
855 |
+
msgstr "Keine Formulardaten in der Datenbank speichern"
|
856 |
+
|
857 |
+
#: admin/tabs/gravity-forms/page.php:17
|
858 |
+
msgid ""
|
859 |
+
"If activated, no data will be stored, but only sent by e-mail. (Note: This "
|
860 |
+
"option overrides form-specific settings).)."
|
861 |
+
msgstr ""
|
862 |
+
"Wenn aktiviert, werden keine Daten gespeichert, sonder nur per Email "
|
863 |
+
"versendet. (Anmerkung: Diese Option überschreibt formularspezfische "
|
864 |
+
"Einstellungen)."
|
865 |
+
|
866 |
+
#: admin/tabs/gravity-forms/page.php:20
|
867 |
+
msgid "Do not save IP address and user agent in database"
|
868 |
+
msgstr "Keine IP Addresse und User Agent speichern"
|
869 |
+
|
870 |
+
#: admin/tabs/gravity-forms/page.php:24
|
871 |
+
msgid ""
|
872 |
+
"By default, if this checkbox is checked, this will be prevented from saving "
|
873 |
+
"the IP address and user agent of the sender."
|
874 |
+
msgstr ""
|
875 |
+
"Standardmäßig speichert Gravity Forms die IP Adresse und den User Agent des "
|
876 |
+
"Absenders. Wenn diese Checkbox aktiviert ist, wird dies verhindert."
|
877 |
+
|
878 |
+
#: admin/tabs/gravity-forms/page.php:34
|
879 |
+
msgid "Specific form settings"
|
880 |
+
msgstr "Spezifische Formulareinstellungen"
|
881 |
+
|
882 |
+
#: admin/tabs/gravity-forms/page.php:35
|
883 |
+
msgid ""
|
884 |
+
"For each Gravity Forms form, it can be subsequently defined for each field "
|
885 |
+
"whether the data of the input field is stored in the database or not."
|
886 |
+
msgstr ""
|
887 |
+
"Für jedes Gravity Forms Formular kann nachfolgend pro Feld definiert werden, "
|
888 |
+
"ob die Daten des Eingabefeldes in der Datenbank gespeichert werden oder "
|
889 |
+
"nicht."
|
890 |
+
|
891 |
+
#: admin/tabs/gravity-forms/page.php:46
|
892 |
+
msgid "Nicht in der Datenbank speichern."
|
893 |
+
msgstr "Nicht in der Datenbank speichern."
|
894 |
+
|
895 |
+
#: admin/tabs/imprint/page.php:2
|
896 |
+
msgid ""
|
897 |
+
"With the shortcode <code>[imprint]</code> an inprint automatically gets "
|
898 |
+
"generated. The data will be taken from general settings."
|
899 |
+
msgstr ""
|
900 |
+
"Eine Seite erstellen die den Shortcode <code>[imprint]</code> verwendet."
|
901 |
+
|
902 |
+
#: admin/tabs/imprint/page.php:10
|
903 |
+
msgid "Imprint Page"
|
904 |
+
msgstr "Impressum Seite"
|
905 |
+
|
906 |
+
#: admin/tabs/imprint/page.php:14 admin/tabs/privacy-policy/page.php:15
|
907 |
+
#: admin/tabs/services/page.php:17
|
908 |
+
msgid "Page"
|
909 |
+
msgstr "Seite"
|
910 |
+
|
911 |
+
#: admin/tabs/imprint/page.php:16 admin/tabs/privacy-policy/page.php:17
|
912 |
+
#: admin/tabs/services/page.php:19
|
913 |
+
#: admin/tabs/subject-access-request/page.php:56
|
914 |
+
#: admin/tabs/super-unsubscribe/page.php:126
|
915 |
+
msgid "Select"
|
916 |
+
msgstr "Wählen"
|
917 |
+
|
918 |
+
#: admin/tabs/imprint/page.php:26
|
919 |
+
msgid "Create a page that uses the shortcode <code>[imprint]</code>."
|
920 |
+
msgstr ""
|
921 |
+
"Eine Seite erstellen die den Shortcode <code>[imprint]</code> verwendet."
|
922 |
+
|
923 |
+
#: admin/tabs/imprint/page.php:26 admin/tabs/services/page.php:37
|
924 |
+
#: admin/tabs/subject-access-request/page.php:71
|
925 |
+
#: admin/tabs/super-unsubscribe/page.php:140
|
926 |
+
msgid "Create page"
|
927 |
+
msgstr "Seite erstellen"
|
928 |
+
|
929 |
+
#: admin/tabs/imprint/page.php:28
|
930 |
+
msgid ""
|
931 |
+
"Attention: The shortcode <code>[imprint]</code> was not found on the page "
|
932 |
+
"you selected."
|
933 |
+
msgstr ""
|
934 |
+
"Achtung: Der Shortcode <code>[imprint]</code> wurde auf der von ihnen "
|
935 |
+
"gewählten Seite nicht gefunden."
|
936 |
+
|
937 |
+
#: admin/tabs/imprint/page.php:28 admin/tabs/imprint/page.php:30
|
938 |
+
#: admin/tabs/privacy-policy/page.php:27 admin/tabs/privacy-policy/page.php:29
|
939 |
+
#: admin/tabs/privacy-policy/page.php:31 admin/tabs/services/page.php:41
|
940 |
+
#: admin/tabs/services/page.php:43
|
941 |
+
#: admin/tabs/subject-access-request/page.php:76
|
942 |
+
#: admin/tabs/subject-access-request/page.php:79
|
943 |
+
#: admin/tabs/super-unsubscribe/page.php:145
|
944 |
+
#: admin/tabs/super-unsubscribe/page.php:148
|
945 |
+
msgid "Edit page"
|
946 |
+
msgstr "Seite bearbeiten"
|
947 |
+
|
948 |
+
#: admin/tabs/imprint/page.php:40 admin/tabs/privacy-policy/page.php:61
|
949 |
+
msgid ""
|
950 |
+
"Note: In order to be able to reset or reload the text (eg: after changing "
|
951 |
+
"the language), highlight the text, delete it and click save. Thus, the text "
|
952 |
+
"is reloaded."
|
953 |
+
msgstr ""
|
954 |
+
"Hinweis: Um den Text zurückzusetzen bzw. neuladen zu können (zB. nach Ändern "
|
955 |
+
"der Sprache), den Text markieren, löschen und auf speichern klicken. Somit "
|
956 |
+
"wird der Text neu geladen."
|
957 |
+
|
958 |
+
#: admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php:10
|
959 |
+
#: admin/tabs/integrations/page.php:1
|
960 |
+
msgid "Integrations"
|
961 |
+
msgstr "Integrationen"
|
962 |
+
|
963 |
+
#: admin/tabs/integrations/page.php:14
|
964 |
+
msgid "No integrations installed"
|
965 |
+
msgstr "Keine Integrationen installiert"
|
966 |
+
|
967 |
+
#: admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php:11
|
968 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:51
|
969 |
+
msgid "Privacy Policy"
|
970 |
+
msgstr "Datenschutzvereinbarungen"
|
971 |
+
|
972 |
+
#: admin/tabs/privacy-policy/page.php:3
|
973 |
+
msgid ""
|
974 |
+
"The shortcode <code>[privacy_policy]</code> generates a privacy page from "
|
975 |
+
"the input made under General Settings."
|
976 |
+
msgstr ""
|
977 |
+
"Mit dem Shortcode <code>[privacy_policy]</code> wird eine Datenschutzseite "
|
978 |
+
"aus den unter Allgemeinen Einstellungen getätigten Eingaben generiert."
|
979 |
+
|
980 |
+
#: admin/tabs/privacy-policy/page.php:5
|
981 |
+
msgid ""
|
982 |
+
"Initially, this text is filled with a template. The text blocks in the "
|
983 |
+
"square brackets ([]) are filled with the values that you entered in the "
|
984 |
+
"General Settings. You can customize the entire text to your requirements, as "
|
985 |
+
"well as delete passages if they do not apply to them."
|
986 |
+
msgstr ""
|
987 |
+
"Initial wird dieser Text mit einer Vorlage befüllt. Die Textbausteine in den "
|
988 |
+
"rechteckigen Klammern ([]) werden mit den Werten belegt, die sie in den "
|
989 |
+
"Allgemeinen Einstellungen eingegeben haben. Sie können den kompletten Text "
|
990 |
+
"ihren Anforderungen anpassen, sowie Textpassagen rauslöschen falls diese bei "
|
991 |
+
"ihnen nicht zutreffen."
|
992 |
+
|
993 |
+
#: admin/tabs/privacy-policy/page.php:27
|
994 |
+
msgid "Create a page that uses the shortcode <code>[privacy_policy]</code>."
|
995 |
+
msgstr ""
|
996 |
+
"Eine Seite erstellen die den Shortcode <code>[privacy_policy]</code> "
|
997 |
+
"verwendet."
|
998 |
+
|
999 |
+
#: admin/tabs/privacy-policy/page.php:29
|
1000 |
+
msgid ""
|
1001 |
+
"Attention: The shortcode <code>[privacy_policy]</code> was not found on the "
|
1002 |
+
"page you selected."
|
1003 |
+
msgstr ""
|
1004 |
+
"Achtung: Der Shortcode <code>[privacy_policy]</code> wurde auf der von ihnen "
|
1005 |
+
"gewählten Seite nicht gefunden."
|
1006 |
+
|
1007 |
+
#: admin/tabs/privacy-policy/page.php:36
|
1008 |
+
msgid "Show checkbox at WooCommerce checkout to confirm privacy policy"
|
1009 |
+
msgstr "Datenschutz Checkbox bei Woo Checkout anzeigen"
|
1010 |
+
|
1011 |
+
#: admin/tabs/privacy-policy/page.php:48
|
1012 |
+
msgid "I have read and accepted the Privacy Policy."
|
1013 |
+
msgstr "Ich habe die Datenschutzbestimmungen gelesen und akzeptiert."
|
1014 |
+
|
1015 |
+
#: admin/tabs/privacy-policy/page.php:51
|
1016 |
+
msgid "WooCommerce privacy policy text"
|
1017 |
+
msgstr "WooCommerce Datenschutz Text"
|
1018 |
+
|
1019 |
+
#: admin/tabs/services/class-sp-dsgvo-delete-service-action.php:22
|
1020 |
+
msgid "Third-party service deleted by"
|
1021 |
+
msgstr "Datenschutz Checkbox bei Woo Registrierung anzeigen"
|
1022 |
+
|
1023 |
+
#: admin/tabs/services/class-sp-dsgvo-services-tab.php:10
|
1024 |
+
msgid "Privacy policy & Plugins"
|
1025 |
+
msgstr "Datenschutz & Plugins"
|
1026 |
+
|
1027 |
+
#: admin/tabs/services/page.php:1
|
1028 |
+
msgid "Privacy: Settings and 3rd party plugins"
|
1029 |
+
msgstr "Datenschutz: Einstellungen und 3rd Party Plugins"
|
1030 |
+
|
1031 |
+
#: admin/tabs/services/page.php:2
|
1032 |
+
msgid ""
|
1033 |
+
"All 3rd Party Plugins (Google Analytics, Facebook Pixel, ..) can be listed "
|
1034 |
+
"here to give their users a selective opt-in / opt-out."
|
1035 |
+
msgstr ""
|
1036 |
+
"Hier können alle 3rd Party Plugins (Google Analytics, Facebook Pixel,..) "
|
1037 |
+
"aufgelistet werden um ihren Benutzern ein selektives Opt-In/Opt-Out zu "
|
1038 |
+
"ermöglichen."
|
1039 |
+
|
1040 |
+
#: admin/tabs/services/page.php:3
|
1041 |
+
msgid ""
|
1042 |
+
"With the shortcode <code>[display_services]</code> these services can then "
|
1043 |
+
"be displayed to the user."
|
1044 |
+
msgstr ""
|
1045 |
+
"Mit dem Shortcode <code>[display_services]</code> können diese Dienste dann "
|
1046 |
+
"dem User angezeigt werden."
|
1047 |
+
|
1048 |
+
#: admin/tabs/services/page.php:12
|
1049 |
+
msgid "Datenschutz Seite für ihre Benutzer"
|
1050 |
+
msgstr "Datenschutz Seite für ihre Benutzer"
|
1051 |
+
|
1052 |
+
#: admin/tabs/services/page.php:29
|
1053 |
+
msgid ""
|
1054 |
+
"Specifies the page where users have the option to customize their privacy "
|
1055 |
+
"settings (selective opt-in / opt-out)."
|
1056 |
+
msgstr ""
|
1057 |
+
"Gibt die Seite an auf der Benutzer die Möglichkeit haben ihre "
|
1058 |
+
"Datenschutzeinstellungen (selektivies Opt-In/Opt-out) anzupassen."
|
1059 |
+
|
1060 |
+
#: admin/tabs/services/page.php:35
|
1061 |
+
msgid ""
|
1062 |
+
"Create a page that uses the shortcode <code>[user_privacy_settings_form]</"
|
1063 |
+
"code>."
|
1064 |
+
msgstr ""
|
1065 |
+
"Eine Seite erstellen die den Shortcode <code>[user_privacy_settings_form]</"
|
1066 |
+
"code> verwendet."
|
1067 |
+
|
1068 |
+
#: admin/tabs/services/page.php:41
|
1069 |
+
msgid ""
|
1070 |
+
"Attention: The shortcode <code>[user_privacy_settings_form]</code> was not "
|
1071 |
+
"found on the selected page. The form will not be displayed."
|
1072 |
+
msgstr ""
|
1073 |
+
"Achtung: Der Shortcode <code>[user_privacy_settings_form]</code> wurde auf "
|
1074 |
+
"der gewählten Seite nicht gefunden. Das Formular wird somit nicht angezeigt."
|
1075 |
+
|
1076 |
+
#: admin/tabs/services/page.php:44
|
1077 |
+
msgid ""
|
1078 |
+
"The shortcode <code>[user_privacy_settings_form]</code> allows the user to "
|
1079 |
+
"activate or deactivate services on the selected page."
|
1080 |
+
msgstr ""
|
1081 |
+
"Mit dem Shortcode <code>[user_privacy_settings_form]</code> wird dem User "
|
1082 |
+
"auf der gewählten Seite ermöglicht Dienste zu aktivieren bzw deaktivieren."
|
1083 |
+
|
1084 |
+
#: admin/tabs/services/page.php:58 admin/tabs/services/page.php:124
|
1085 |
+
msgid "Slug"
|
1086 |
+
msgstr "Slug"
|
1087 |
+
|
1088 |
+
#: admin/tabs/services/page.php:59 admin/tabs/services/page.php:125
|
1089 |
+
#: admin/tabs/services/page.php:146
|
1090 |
+
#: includes/class-sp-dsgvo-data-collecter.php:66
|
1091 |
+
#: includes/class-sp-dsgvo-data-collecter.php:71
|
1092 |
+
#: includes/class-sp-dsgvo-data-collecter.php:78
|
1093 |
+
#: includes/class-sp-dsgvo-data-collecter.php:132
|
1094 |
+
#: includes/class-sp-dsgvo-data-collecter.php:146
|
1095 |
+
#: includes/class-sp-dsgvo-data-collecter.php:169
|
1096 |
+
msgid "Name"
|
1097 |
+
msgstr "Name"
|
1098 |
+
|
1099 |
+
#: admin/tabs/services/page.php:60 admin/tabs/services/page.php:126
|
1100 |
+
#: admin/tabs/services/page.php:153 templates/de_DE/emails/feedback.php:10
|
1101 |
+
#: templates/en_EN/emails/feedback.php:10
|
1102 |
+
#: templates/en_US/emails/feedback.php:10
|
1103 |
+
msgid "Reason"
|
1104 |
+
msgstr "Grund"
|
1105 |
+
|
1106 |
+
#: admin/tabs/services/page.php:61 admin/tabs/services/page.php:127
|
1107 |
+
#: admin/tabs/services/page.php:160
|
1108 |
+
msgid "Terms Url"
|
1109 |
+
msgstr "AGB URL"
|
1110 |
+
|
1111 |
+
#: admin/tabs/services/page.php:63 admin/tabs/services/page.php:178
|
1112 |
+
msgid "Image"
|
1113 |
+
msgstr "Bild"
|
1114 |
+
|
1115 |
+
#: admin/tabs/services/page.php:64 admin/tabs/services/page.php:114
|
1116 |
+
#: admin/tabs/services/page.php:129 admin/tabs/super-unsubscribe/page.php:73
|
1117 |
+
#: admin/tabs/super-unsubscribe/page.php:86
|
1118 |
+
#: admin/tabs/super-unsubscribe/page.php:99
|
1119 |
+
#: admin/tabs/super-unsubscribe/page.php:112
|
1120 |
+
msgid "Delete"
|
1121 |
+
msgstr "Löschen"
|
1122 |
+
|
1123 |
+
#: admin/tabs/services/page.php:85
|
1124 |
+
msgid "Terms & Conditions link"
|
1125 |
+
msgstr "AGB URL"
|
1126 |
+
|
1127 |
+
#: admin/tabs/services/page.php:89 admin/tabs/services/page.php:170
|
1128 |
+
#: public/shortcodes/privacy-settings-form.php:19
|
1129 |
+
msgid "Enabled"
|
1130 |
+
msgstr "Aktiviert"
|
1131 |
+
|
1132 |
+
#: admin/tabs/services/page.php:90 admin/tabs/services/page.php:171
|
1133 |
+
msgid "Disabled"
|
1134 |
+
msgstr "Deaktiviert"
|
1135 |
+
|
1136 |
+
#: admin/tabs/services/page.php:142 admin/tabs/services/page.php:193
|
1137 |
+
msgid "Add service"
|
1138 |
+
msgstr "Dienst hinzufügen"
|
1139 |
+
|
1140 |
+
#: admin/tabs/services/page.php:149
|
1141 |
+
msgid "Service name"
|
1142 |
+
msgstr "Dienstname"
|
1143 |
+
|
1144 |
+
#: admin/tabs/services/page.php:156
|
1145 |
+
#: public/shortcodes/privacy-settings-form.php:17
|
1146 |
+
msgid "Reason for use"
|
1147 |
+
msgstr "Grund der Nutzung"
|
1148 |
+
|
1149 |
+
#: admin/tabs/services/page.php:163
|
1150 |
+
msgid "The URL pointing to the terms of the service"
|
1151 |
+
msgstr "Die URL zu den AGB des Dienstes"
|
1152 |
+
|
1153 |
+
#: admin/tabs/services/page.php:173
|
1154 |
+
msgid "Indicates whether the service should be enabled by default or not."
|
1155 |
+
msgstr "Gibt an ob der Dienst standardmäßig aktiviert sein soll oder nicht."
|
1156 |
+
|
1157 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:18
|
1158 |
+
msgid "Plugin installed"
|
1159 |
+
msgstr "Plugin installiert"
|
1160 |
+
|
1161 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:36
|
1162 |
+
#: admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php:10
|
1163 |
+
#: templates/de_DE/emails/subject-access-request.php:21
|
1164 |
+
#: templates/en_EN/emails/subject-access-request.php:21
|
1165 |
+
#: templates/en_US/emails/subject-access-request.php:21
|
1166 |
+
msgid "Subject Access Request"
|
1167 |
+
msgstr "Datenauszug"
|
1168 |
+
|
1169 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:41
|
1170 |
+
msgid "User privacy settings"
|
1171 |
+
msgstr "Datenschutzeinstellungen Benutzer Seite"
|
1172 |
+
|
1173 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:46
|
1174 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:67
|
1175 |
+
msgid "Terms & Conditions"
|
1176 |
+
msgstr "AGB"
|
1177 |
+
|
1178 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:56
|
1179 |
+
#: templates/de_DE/emails/super-unsubscribe.php:20
|
1180 |
+
#: templates/en_EN/emails/super-unsubscribe.php:20
|
1181 |
+
#: templates/en_US/emails/super-unsubscribe.php:20
|
1182 |
+
msgid "Delete Request"
|
1183 |
+
msgstr "Löschanfrage"
|
1184 |
+
|
1185 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:72
|
1186 |
+
msgid "Opt-out"
|
1187 |
+
msgstr "Opt-out"
|
1188 |
+
|
1189 |
+
#: admin/tabs/setup/class-sp-dsgvo-setup-tab.php:9 admin/tabs/setup/page.php:1
|
1190 |
+
msgid "Setup"
|
1191 |
+
msgstr "Setup"
|
1192 |
+
|
1193 |
+
#: admin/tabs/subject-access-request/page.php:1
|
1194 |
+
msgid "Subject Access Requests"
|
1195 |
+
msgstr "Datenauszugsanfrage"
|
1196 |
+
|
1197 |
+
#: admin/tabs/subject-access-request/page.php:2
|
1198 |
+
msgid ""
|
1199 |
+
"This feature allows users to request a digest of all data stored by you. "
|
1200 |
+
"<br> All data in your database is checked for confidential data and sent to "
|
1201 |
+
"the User by email."
|
1202 |
+
msgstr ""
|
1203 |
+
"Mit diesem Feature können User einen Auszug über alle von ihnen "
|
1204 |
+
"gespeicherten Daten anfordern. Alle Daten in ihrer Datenbank werden auf "
|
1205 |
+
"vertrauliche Daten überprüft und dem User per Email gesendet."
|
1206 |
+
|
1207 |
+
#: admin/tabs/subject-access-request/page.php:14
|
1208 |
+
#: admin/tabs/super-unsubscribe/page.php:14
|
1209 |
+
msgid "Automatic processing"
|
1210 |
+
msgstr "Automatisch Abarbeitung"
|
1211 |
+
|
1212 |
+
#: admin/tabs/subject-access-request/page.php:19
|
1213 |
+
#: admin/tabs/super-unsubscribe/page.php:52
|
1214 |
+
msgid "none"
|
1215 |
+
msgstr "keine"
|
1216 |
+
|
1217 |
+
#: admin/tabs/subject-access-request/page.php:20
|
1218 |
+
msgid "day"
|
1219 |
+
msgstr "Tag"
|
1220 |
+
|
1221 |
+
#: admin/tabs/subject-access-request/page.php:21
|
1222 |
+
#: admin/tabs/subject-access-request/page.php:22
|
1223 |
+
msgid "days"
|
1224 |
+
msgstr "Tage"
|
1225 |
+
|
1226 |
+
#: admin/tabs/subject-access-request/page.php:23
|
1227 |
+
msgid "weeks"
|
1228 |
+
msgstr "Wochen"
|
1229 |
+
|
1230 |
+
#: admin/tabs/subject-access-request/page.php:26
|
1231 |
+
msgid ""
|
1232 |
+
"Requests will be automatically processed after the set time and sent to the "
|
1233 |
+
"user."
|
1234 |
+
msgstr ""
|
1235 |
+
"Anfragen werden nach eingestellter Zeit automatisch bearbeitet und dem User "
|
1236 |
+
"gesendet."
|
1237 |
+
|
1238 |
+
#: admin/tabs/subject-access-request/page.php:30
|
1239 |
+
#: admin/tabs/super-unsubscribe/page.php:27
|
1240 |
+
msgid "Email for new application:"
|
1241 |
+
msgstr "Email bei Neuantrag:"
|
1242 |
+
|
1243 |
+
#: admin/tabs/subject-access-request/page.php:37
|
1244 |
+
#: admin/tabs/super-unsubscribe/page.php:34
|
1245 |
+
msgid "Send a notification for a new application to the admin email address."
|
1246 |
+
msgstr ""
|
1247 |
+
"Eine Benachrichtigung bei neuem Antrag an die Admin Emailadresse senden."
|
1248 |
+
|
1249 |
+
#: admin/tabs/subject-access-request/page.php:41
|
1250 |
+
msgid "GDPR consent text:"
|
1251 |
+
msgstr "DSGVO Zustimmungstext:"
|
1252 |
+
|
1253 |
+
#: admin/tabs/subject-access-request/page.php:46
|
1254 |
+
msgid "The text to be displayed in the GDPR checkbox for data storage."
|
1255 |
+
msgstr ""
|
1256 |
+
"Der Text der bei der Checkbox für die Datenspeicherung angezeigt werden soll"
|
1257 |
+
|
1258 |
+
#: admin/tabs/subject-access-request/page.php:51
|
1259 |
+
msgid "Request page:"
|
1260 |
+
msgstr "Seite zum Anfordern:"
|
1261 |
+
|
1262 |
+
#: admin/tabs/subject-access-request/page.php:65
|
1263 |
+
msgid ""
|
1264 |
+
"Specifies the page on which users have the option to request their data "
|
1265 |
+
"extract."
|
1266 |
+
msgstr ""
|
1267 |
+
"Gibt die Seite an auf der Benutzer die Möglichkeit haben ihren Datenauszug "
|
1268 |
+
"anzufordern."
|
1269 |
+
|
1270 |
+
#: admin/tabs/subject-access-request/page.php:69
|
1271 |
+
msgid "Create a page using the shortcode <code>[sar_form]</code>."
|
1272 |
+
msgstr ""
|
1273 |
+
"Eine Seite erstellen die den Shortcode <code>[sar_form]</code> verwendet."
|
1274 |
+
|
1275 |
+
#: admin/tabs/subject-access-request/page.php:75
|
1276 |
+
msgid ""
|
1277 |
+
"Attention: The shortcode <code>[sar_form]</code> of the selected page was "
|
1278 |
+
"not found. Thus, the user has no opportunity to request the data."
|
1279 |
+
msgstr ""
|
1280 |
+
"Achtung: Der Shortcode <code>[sar_form]</code> wurde auf der von ihnen "
|
1281 |
+
"gewählten Seite nicht gefunden. Somit hat der User keine Mö"
|
1282 |
+
"glichkeit zur Anforderung der Daten."
|
1283 |
+
|
1284 |
+
#: admin/tabs/subject-access-request/page.php:100
|
1285 |
+
#: admin/tabs/subject-access-request/page.php:161
|
1286 |
+
#: admin/tabs/super-unsubscribe/page.php:199
|
1287 |
+
#: admin/tabs/super-unsubscribe/page.php:278
|
1288 |
+
msgid "ID"
|
1289 |
+
msgstr "ID"
|
1290 |
+
|
1291 |
+
#: admin/tabs/subject-access-request/page.php:102
|
1292 |
+
#: admin/tabs/subject-access-request/page.php:162
|
1293 |
+
#: admin/tabs/subject-access-request/page.php:193
|
1294 |
+
#: admin/tabs/super-unsubscribe/page.php:201
|
1295 |
+
#: admin/tabs/super-unsubscribe/page.php:279
|
1296 |
+
#: admin/tabs/super-unsubscribe/page.php:312
|
1297 |
+
#: includes/class-sp-dsgvo-data-collecter.php:79
|
1298 |
+
#: includes/class-sp-dsgvo-data-collecter.php:133
|
1299 |
+
#: includes/class-sp-dsgvo-data-collecter.php:170
|
1300 |
+
#: includes/class-sp-dsgvo-data-collecter.php:376
|
1301 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:38
|
1302 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:39
|
1303 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:42
|
1304 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:43
|
1305 |
+
msgid "Email"
|
1306 |
+
msgstr "Email"
|
1307 |
+
|
1308 |
+
#: admin/tabs/subject-access-request/page.php:104
|
1309 |
+
#: admin/tabs/subject-access-request/page.php:163
|
1310 |
+
#: admin/tabs/subject-access-request/page.php:198
|
1311 |
+
#: admin/tabs/super-unsubscribe/page.php:203
|
1312 |
+
#: admin/tabs/super-unsubscribe/page.php:280
|
1313 |
+
#: admin/tabs/super-unsubscribe/page.php:317
|
1314 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:26
|
1315 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:27
|
1316 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:30
|
1317 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:31
|
1318 |
+
msgid "First name"
|
1319 |
+
msgstr "Vorname"
|
1320 |
+
|
1321 |
+
#: admin/tabs/subject-access-request/page.php:106
|
1322 |
+
#: admin/tabs/subject-access-request/page.php:164
|
1323 |
+
#: admin/tabs/subject-access-request/page.php:203
|
1324 |
+
#: admin/tabs/super-unsubscribe/page.php:205
|
1325 |
+
#: admin/tabs/super-unsubscribe/page.php:281
|
1326 |
+
#: admin/tabs/super-unsubscribe/page.php:322
|
1327 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:31
|
1328 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:32
|
1329 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:35
|
1330 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:36
|
1331 |
+
msgid "Last name"
|
1332 |
+
msgstr "Nachname"
|
1333 |
+
|
1334 |
+
#: admin/tabs/subject-access-request/page.php:108
|
1335 |
+
#: admin/tabs/subject-access-request/page.php:165
|
1336 |
+
#: admin/tabs/subject-access-request/page.php:208
|
1337 |
+
#: admin/tabs/super-unsubscribe/page.php:207
|
1338 |
+
#: admin/tabs/super-unsubscribe/page.php:282
|
1339 |
+
#: admin/tabs/super-unsubscribe/page.php:327
|
1340 |
+
msgid "GDPR approval"
|
1341 |
+
msgstr "DSGVO Zustimmung"
|
1342 |
+
|
1343 |
+
#: admin/tabs/subject-access-request/page.php:110
|
1344 |
+
#: admin/tabs/subject-access-request/page.php:138
|
1345 |
+
#: admin/tabs/subject-access-request/page.php:166
|
1346 |
+
msgid "Run"
|
1347 |
+
msgstr "Ausführen"
|
1348 |
+
|
1349 |
+
#: admin/tabs/subject-access-request/page.php:113
|
1350 |
+
#: admin/tabs/subject-access-request/page.php:168
|
1351 |
+
#: admin/tabs/super-unsubscribe/page.php:214
|
1352 |
+
#: admin/tabs/super-unsubscribe/page.php:286
|
1353 |
+
msgid "Dismiss"
|
1354 |
+
msgstr "Ablehnen"
|
1355 |
+
|
1356 |
+
#: admin/tabs/subject-access-request/page.php:152
|
1357 |
+
msgid "No open requests"
|
1358 |
+
msgstr "Keine offenen Anfragen vorhanden."
|
1359 |
+
|
1360 |
+
#: admin/tabs/subject-access-request/page.php:177
|
1361 |
+
msgid "Run all"
|
1362 |
+
msgstr "Alle ausführen"
|
1363 |
+
|
1364 |
+
#: admin/tabs/subject-access-request/page.php:189
|
1365 |
+
#: admin/tabs/super-unsubscribe/page.php:307
|
1366 |
+
msgid "Add entry"
|
1367 |
+
msgstr "Eintrag hinzufügen"
|
1368 |
+
|
1369 |
+
#: admin/tabs/subject-access-request/page.php:213
|
1370 |
+
msgid "Run now"
|
1371 |
+
msgstr "Sofort ausführen"
|
1372 |
+
|
1373 |
+
#: admin/tabs/subject-access-request/page.php:218
|
1374 |
+
msgid "Show email"
|
1375 |
+
msgstr "Email anzeigen"
|
1376 |
+
|
1377 |
+
#: admin/tabs/subject-access-request/page.php:225
|
1378 |
+
#: admin/tabs/super-unsubscribe/page.php:339
|
1379 |
+
msgid "Add"
|
1380 |
+
msgstr "Hinzufügen"
|
1381 |
+
|
1382 |
+
#: admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php:9
|
1383 |
+
msgid "Delete request"
|
1384 |
+
msgstr "Löschanfrage"
|
1385 |
+
|
1386 |
+
#: admin/tabs/super-unsubscribe/page.php:1
|
1387 |
+
msgid "Delete Requests"
|
1388 |
+
msgstr "Löschanfragen"
|
1389 |
+
|
1390 |
+
#: admin/tabs/super-unsubscribe/page.php:2
|
1391 |
+
msgid ""
|
1392 |
+
"Here you will find all deletion requests that users have made on their site. "
|
1393 |
+
"With a click on \"delete now \" you delete all stored data of the user on "
|
1394 |
+
"their side including Plugins."
|
1395 |
+
msgstr ""
|
1396 |
+
"Hier finden sie alle Löschanfragen die User ihrer Seite gestellt haben. Mit "
|
1397 |
+
"einem klick auf \"Jetzt löschen\" löschen sie alle gespeicherten Daten des "
|
1398 |
+
"Users auf ihrer Seite inklusive Plugins."
|
1399 |
+
|
1400 |
+
#: admin/tabs/super-unsubscribe/page.php:18
|
1401 |
+
msgid "Immediately on request"
|
1402 |
+
msgstr "Sofort bei Anfrage"
|
1403 |
+
|
1404 |
+
#: admin/tabs/super-unsubscribe/page.php:24
|
1405 |
+
msgid "If enabled, delete requests are performed immediately."
|
1406 |
+
msgstr "Wenn aktiviert, werden Löschanfragen sofort durchgeführt."
|
1407 |
+
|
1408 |
+
#: admin/tabs/super-unsubscribe/page.php:38
|
1409 |
+
msgid "GDPR confirmation text:"
|
1410 |
+
msgstr "DSGVO Zustimmungstext:"
|
1411 |
+
|
1412 |
+
#: admin/tabs/super-unsubscribe/page.php:43
|
1413 |
+
msgid "The text to be displayed in the GDPR checkbox for data deletion."
|
1414 |
+
msgstr ""
|
1415 |
+
"Der Text der bei der Checkbox für die DSGVO Checkbox angezeigt werden soll."
|
1416 |
+
|
1417 |
+
#: admin/tabs/super-unsubscribe/page.php:47
|
1418 |
+
msgid "After period"
|
1419 |
+
msgstr "Nach Zeit"
|
1420 |
+
|
1421 |
+
#: admin/tabs/super-unsubscribe/page.php:53
|
1422 |
+
msgid "month"
|
1423 |
+
msgstr "Monat"
|
1424 |
+
|
1425 |
+
#: admin/tabs/super-unsubscribe/page.php:54
|
1426 |
+
#: admin/tabs/super-unsubscribe/page.php:55
|
1427 |
+
msgid "months"
|
1428 |
+
msgstr "Monate"
|
1429 |
+
|
1430 |
+
#: admin/tabs/super-unsubscribe/page.php:56
|
1431 |
+
msgid "year"
|
1432 |
+
msgstr "Jahr"
|
1433 |
+
|
1434 |
+
#: admin/tabs/super-unsubscribe/page.php:57
|
1435 |
+
#: admin/tabs/super-unsubscribe/page.php:58
|
1436 |
+
msgid "years"
|
1437 |
+
msgstr "Jahre"
|
1438 |
+
|
1439 |
+
#: admin/tabs/super-unsubscribe/page.php:61
|
1440 |
+
msgid ""
|
1441 |
+
"Data is automatically deleted after the set time. Ensures the maximum "
|
1442 |
+
"retention time."
|
1443 |
+
msgstr ""
|
1444 |
+
"Daten werden nach eingestellter Zeit automatisch gelöscht. Stellt die "
|
1445 |
+
"maximale Aufbewahrungszeit sicher."
|
1446 |
+
|
1447 |
+
#: admin/tabs/super-unsubscribe/page.php:66
|
1448 |
+
msgid "WooCommerce Data"
|
1449 |
+
msgstr "WooCommerce Daten"
|
1450 |
+
|
1451 |
+
#: admin/tabs/super-unsubscribe/page.php:71
|
1452 |
+
#: admin/tabs/super-unsubscribe/page.php:84
|
1453 |
+
#: admin/tabs/super-unsubscribe/page.php:97
|
1454 |
+
#: admin/tabs/super-unsubscribe/page.php:110
|
1455 |
+
msgid "No action"
|
1456 |
+
msgstr "Keine Aktion"
|
1457 |
+
|
1458 |
+
#: admin/tabs/super-unsubscribe/page.php:72
|
1459 |
+
#: admin/tabs/super-unsubscribe/page.php:85
|
1460 |
+
#: admin/tabs/super-unsubscribe/page.php:98
|
1461 |
+
#: admin/tabs/super-unsubscribe/page.php:111
|
1462 |
+
msgid "Pseudonymise"
|
1463 |
+
msgstr "Pseudonymisieren"
|
1464 |
+
|
1465 |
+
#: admin/tabs/super-unsubscribe/page.php:76
|
1466 |
+
msgid "Specifies what should happen to personal data of orders."
|
1467 |
+
msgstr "Gibt an was mit persönlichen Daten von Bestellungen passieren soll."
|
1468 |
+
|
1469 |
+
#: admin/tabs/super-unsubscribe/page.php:79
|
1470 |
+
msgid "bbPress Data"
|
1471 |
+
msgstr "bbPress Daten"
|
1472 |
+
|
1473 |
+
#: admin/tabs/super-unsubscribe/page.php:89
|
1474 |
+
msgid "Specifies what should happen with forum entries."
|
1475 |
+
msgstr "Gibt an was mit Foreneinträge passieren soll."
|
1476 |
+
|
1477 |
+
#: admin/tabs/super-unsubscribe/page.php:92
|
1478 |
+
msgid "buddyPress Data"
|
1479 |
+
msgstr "buddyPress Daten"
|
1480 |
+
|
1481 |
+
#: admin/tabs/super-unsubscribe/page.php:102
|
1482 |
+
msgid "Specifies what should happen with PNs and extended profile fields."
|
1483 |
+
msgstr "Gibt an was mit PNs und erweiterten Profilfeldern passieren soll."
|
1484 |
+
|
1485 |
+
#: admin/tabs/super-unsubscribe/page.php:105
|
1486 |
+
msgid "CF7/Flamingo Data"
|
1487 |
+
msgstr "CF7/Flamingo Daten"
|
1488 |
+
|
1489 |
+
#: admin/tabs/super-unsubscribe/page.php:115
|
1490 |
+
msgid "Specifies what to do with contact entries and messages."
|
1491 |
+
msgstr "Gibt an was mit Kontakteinträgen und Nachrichten passieren soll."
|
1492 |
+
|
1493 |
+
#: admin/tabs/super-unsubscribe/page.php:120
|
1494 |
+
msgid "Page for deletion request:"
|
1495 |
+
msgstr "Seite für Löschanfrage:"
|
1496 |
+
|
1497 |
+
#: admin/tabs/super-unsubscribe/page.php:138
|
1498 |
+
msgid "Create a page using the shortcode <code>[unsubscribe_form]</code>."
|
1499 |
+
msgstr ""
|
1500 |
+
"Eine Seite erstellen die den Shortcode <code>[unsubscribe_form]</code> "
|
1501 |
+
"verwendet."
|
1502 |
+
|
1503 |
+
#: admin/tabs/super-unsubscribe/page.php:144
|
1504 |
+
msgid ""
|
1505 |
+
"Attention: The shortcode <code>[unsubscribe_form]</code> that should be on "
|
1506 |
+
"the selected page was not found. Thus, the user has no opportunity to ask a "
|
1507 |
+
"deletion request."
|
1508 |
+
msgstr ""
|
1509 |
+
"Achtung: Der Shortcode <code>[unsubscribe_form]</code> wurde auf der von "
|
1510 |
+
"ihnen gewählten Seite nicht gefunden. Somit hat der User keine Möglichkeit "
|
1511 |
+
"eine Löschanfrage zu stellen."
|
1512 |
+
|
1513 |
+
#: admin/tabs/super-unsubscribe/page.php:180
|
1514 |
+
msgid "Pending"
|
1515 |
+
msgstr "Ausstehend"
|
1516 |
+
|
1517 |
+
#: admin/tabs/super-unsubscribe/page.php:187
|
1518 |
+
msgid "Done"
|
1519 |
+
msgstr "Erledigt"
|
1520 |
+
|
1521 |
+
#: admin/tabs/super-unsubscribe/page.php:209
|
1522 |
+
#: admin/tabs/super-unsubscribe/page.php:283
|
1523 |
+
msgid "State"
|
1524 |
+
msgstr "Status"
|
1525 |
+
|
1526 |
+
#: admin/tabs/super-unsubscribe/page.php:211
|
1527 |
+
#: admin/tabs/super-unsubscribe/page.php:244
|
1528 |
+
#: admin/tabs/super-unsubscribe/page.php:247
|
1529 |
+
#: admin/tabs/super-unsubscribe/page.php:284
|
1530 |
+
msgid "Delete now"
|
1531 |
+
msgstr "Jetzt löschen"
|
1532 |
+
|
1533 |
+
#: admin/tabs/super-unsubscribe/page.php:265
|
1534 |
+
msgid "No requests done"
|
1535 |
+
msgstr "Es wurden noch keine Löschanfragen durchgeführt."
|
1536 |
+
|
1537 |
+
#: admin/tabs/super-unsubscribe/page.php:267
|
1538 |
+
msgid "No pending requests"
|
1539 |
+
msgstr "Keine Löschanfragen vorhanden"
|
1540 |
+
|
1541 |
+
#: admin/tabs/super-unsubscribe/page.php:295
|
1542 |
+
msgid "Delete all"
|
1543 |
+
msgstr "Alle löschen"
|
1544 |
+
|
1545 |
+
#: admin/tabs/super-unsubscribe/page.php:308
|
1546 |
+
msgid ""
|
1547 |
+
"ATTENTION: Executing this action deletes the account (except administrators)."
|
1548 |
+
msgstr ""
|
1549 |
+
"ACHTUNG: Mit Ausführen dieser Aktion wird der Account gelöscht "
|
1550 |
+
"(Administratoren ausgenommen)."
|
1551 |
+
|
1552 |
+
#: admin/tabs/super-unsubscribe/page.php:332
|
1553 |
+
msgid "Run without user confirmation"
|
1554 |
+
msgstr "Ohne Benutzerbestätigung ausführen"
|
1555 |
+
|
1556 |
+
#: includes/class-sp-dsgvo-ajax-action.php:93
|
1557 |
+
msgid "Public property $action not provied"
|
1558 |
+
msgstr "Eigenschaft $action nicht mitgesendet"
|
1559 |
+
|
1560 |
+
#: includes/class-sp-dsgvo-cron.php:66
|
1561 |
+
msgid "All"
|
1562 |
+
msgstr "Alle"
|
1563 |
+
|
1564 |
+
#: includes/class-sp-dsgvo-cron.php:66
|
1565 |
+
msgid "Minutes"
|
1566 |
+
msgstr "Minuten"
|
1567 |
+
|
1568 |
+
#: includes/class-sp-dsgvo-data-collecter.php:77
|
1569 |
+
msgid "Login"
|
1570 |
+
msgstr "Login"
|
1571 |
+
|
1572 |
+
#: includes/class-sp-dsgvo-data-collecter.php:80
|
1573 |
+
#: includes/class-sp-dsgvo-data-collecter.php:82
|
1574 |
+
#: includes/class-sp-dsgvo-data-collecter.php:134
|
1575 |
+
#: includes/class-sp-dsgvo-data-collecter.php:147
|
1576 |
+
#: includes/class-sp-dsgvo-data-collecter.php:171
|
1577 |
+
#: includes/class-sp-dsgvo-data-collecter.php:399
|
1578 |
+
msgid "Url"
|
1579 |
+
msgstr "URL"
|
1580 |
+
|
1581 |
+
#: includes/class-sp-dsgvo-data-collecter.php:81
|
1582 |
+
msgid "Display Name"
|
1583 |
+
msgstr "Anzeigename"
|
1584 |
+
|
1585 |
+
#: includes/class-sp-dsgvo-data-collecter.php:107
|
1586 |
+
msgid "Advanced"
|
1587 |
+
msgstr "Erweitert"
|
1588 |
+
|
1589 |
+
#: includes/class-sp-dsgvo-data-collecter.php:135
|
1590 |
+
#: includes/class-sp-dsgvo-data-collecter.php:172
|
1591 |
+
msgid "IP Address"
|
1592 |
+
msgstr "IP Adresse"
|
1593 |
+
|
1594 |
+
#: includes/class-sp-dsgvo-data-collecter.php:136
|
1595 |
+
#: includes/class-sp-dsgvo-data-collecter.php:173
|
1596 |
+
msgid "Comment"
|
1597 |
+
msgstr "Kommentar"
|
1598 |
+
|
1599 |
+
#: includes/class-sp-dsgvo-data-collecter.php:145
|
1600 |
+
msgid "User name"
|
1601 |
+
msgstr "Benutzername"
|
1602 |
+
|
1603 |
+
#: includes/class-sp-dsgvo-data-collecter.php:148
|
1604 |
+
msgid "Display name"
|
1605 |
+
msgstr "Anzeigename"
|
1606 |
+
|
1607 |
+
#: includes/class-sp-dsgvo-data-collecter.php:382
|
1608 |
+
msgid "ZIP Code"
|
1609 |
+
msgstr "PLZ"
|
1610 |
+
|
1611 |
+
#: includes/class-sp-dsgvo-data-collecter.php:389
|
1612 |
+
msgid "Phone number"
|
1613 |
+
msgstr "Telefonnummer"
|
1614 |
+
|
1615 |
+
#: includes/class-sp-dsgvo-data-collecter.php:407
|
1616 |
+
msgid "Address"
|
1617 |
+
msgstr "Adresse"
|
1618 |
+
|
1619 |
+
#: includes/class-sp-dsgvo-mail.php:198 includes/class-sp-dsgvo-mail.php:205
|
1620 |
+
msgid "Attachment not found at"
|
1621 |
+
msgstr "Anhang nicht gefunden"
|
1622 |
+
|
1623 |
+
#: includes/class-sp-dsgvo-mail.php:223 includes/class-sp-dsgvo-mail.php:265
|
1624 |
+
msgid "Template file not found"
|
1625 |
+
msgstr "Template nicht gefunden"
|
1626 |
+
|
1627 |
+
#: includes/class-sp-dsgvo-mail.php:377
|
1628 |
+
msgid "You must set at least 1 recipient"
|
1629 |
+
msgstr "Es muss min. 1 Empfänger angegeben werden."
|
1630 |
+
|
1631 |
+
#: includes/class-sp-dsgvo-mail.php:381
|
1632 |
+
msgid "You must set a template"
|
1633 |
+
msgstr "Ein Template muss ausgewählt werden."
|
1634 |
+
|
1635 |
+
#: includes/class-sp-dsgvo-settings.php:43 public/class-sp-dsgvo-public.php:443
|
1636 |
+
msgid "I confirm"
|
1637 |
+
msgstr "Ich akzeptiere"
|
1638 |
+
|
1639 |
+
#: includes/class-sp-dsgvo-settings.php:44 public/class-sp-dsgvo-public.php:441
|
1640 |
+
msgid "The confirmation to GDPR is mandatory."
|
1641 |
+
msgstr ""
|
1642 |
+
"Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend."
|
1643 |
+
|
1644 |
+
#: includes/class-sp-dsgvo-settings.php:45 public/class-sp-dsgvo-public.php:442
|
1645 |
+
msgid ""
|
1646 |
+
"This form stores your name, email address and content so that we can "
|
1647 |
+
"evaluate the comments on our site. For more information, visit our Privacy "
|
1648 |
+
"Policy page."
|
1649 |
+
msgstr ""
|
1650 |
+
"Dieses Formular speichert Ihren Namen, Ihre Email Adresse sowie den Inhalt, "
|
1651 |
+
"damit wir die Kommentare auf unsere Seite auswerten können. Weitere "
|
1652 |
+
"Informationen finden Sie auf unserer Seite der Datenschutzbestimmungen."
|
1653 |
+
|
1654 |
+
#: includes/class-sp-dsgvo-settings.php:70
|
1655 |
+
#: includes/class-sp-dsgvo-settings.php:112
|
1656 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:46
|
1657 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:50
|
1658 |
+
msgid ""
|
1659 |
+
"I agree to the storage of the data for processing within the meaning of the "
|
1660 |
+
"GDPR."
|
1661 |
+
msgstr ""
|
1662 |
+
"Ich stimme der Speicherung der Daten zur Verarbeitung im Sinne der DSGVO zu."
|
1663 |
+
|
1664 |
+
#: includes/class-sp-dsgvo-settings.php:81
|
1665 |
+
#: includes/class-sp-dsgvo-settings.php:236
|
1666 |
+
msgid "We use cookies to analyze visitor behavior."
|
1667 |
+
msgstr "Wir benutzen Cookies um das Besucherverhalten zu analysieren."
|
1668 |
+
|
1669 |
+
#: includes/class-sp-dsgvo-settings.php:88
|
1670 |
+
#: includes/class-sp-dsgvo-settings.php:243
|
1671 |
+
msgid "Google Analytics is used to analyze website traffic."
|
1672 |
+
msgstr "Google Analytics wird zum Anlayiseren des Websitetraffics verwendet."
|
1673 |
+
|
1674 |
+
#: includes/class-sp-dsgvo-settings.php:95
|
1675 |
+
#: includes/class-sp-dsgvo-settings.php:250
|
1676 |
+
msgid "Facebook Pixel is used to analyze visitor behavior."
|
1677 |
+
msgstr "Facebook Pixel wird zum Analysieren des Besucherverhaltens verwendet."
|
1678 |
+
|
1679 |
+
#: includes/class-sp-dsgvo-settings.php:119
|
1680 |
+
msgid ""
|
1681 |
+
"This website uses cookies. By clicking 'accept' you are providing consent to "
|
1682 |
+
"us using cookies on this browser."
|
1683 |
+
msgstr ""
|
1684 |
+
"Wir verwenden Cookies, um Ihnen das beste Nutzererlebnis bieten zu können. "
|
1685 |
+
"Wenn Sie fortfahren, diese Seite zu verwenden, nehmen wir an, dass Sie damit "
|
1686 |
+
"einverstanden sind."
|
1687 |
+
|
1688 |
+
#: includes/class-sp-dsgvo-settings.php:127
|
1689 |
+
#: public/class-sp-dsgvo-public.php:171
|
1690 |
+
msgid ""
|
1691 |
+
"We use cookies to give you the best user experience. If you continue to use "
|
1692 |
+
"this site, we assume that you agree."
|
1693 |
+
msgstr ""
|
1694 |
+
"Wir verwenden Cookies, um Ihnen das beste Nutzererlebnis bieten zu können. "
|
1695 |
+
"Wenn Sie fortfahren, diese Seite zu verwenden, nehmen wir an, dass Sie damit "
|
1696 |
+
"einverstanden sind."
|
1697 |
+
|
1698 |
+
#: includes/class-sp-dsgvo-settings.php:129
|
1699 |
+
msgid "OK"
|
1700 |
+
msgstr "OK"
|
1701 |
+
|
1702 |
+
#: includes/class-sp-dsgvo-settings.php:132
|
1703 |
+
msgid "Deny"
|
1704 |
+
msgstr "Ablehnen"
|
1705 |
+
|
1706 |
+
#: includes/class-sp-dsgvo-settings.php:135
|
1707 |
+
msgid "More information"
|
1708 |
+
msgstr "Mehr Information"
|
1709 |
+
|
1710 |
+
#: includes/cron/do-delete-data-request.php:15
|
1711 |
+
msgid "DoDSGVODeleteDataRequest with days:"
|
1712 |
+
msgstr "DoDSGVODeleteDataRequest with days:"
|
1713 |
+
|
1714 |
+
#: includes/cron/do-delete-data-request.php:15
|
1715 |
+
msgid "and intval:"
|
1716 |
+
msgstr "and intval:"
|
1717 |
+
|
1718 |
+
#: includes/cron/do-delete-data-request.php:20
|
1719 |
+
msgid "doing sar"
|
1720 |
+
msgstr "doing sar"
|
1721 |
+
|
1722 |
+
#: includes/cron/do-delete-data-request.php:20
|
1723 |
+
msgid "with intval"
|
1724 |
+
msgstr "with intval"
|
1725 |
+
|
1726 |
+
#: includes/cron/do-delete-data-request.php:27
|
1727 |
+
msgid "sar"
|
1728 |
+
msgstr "sar"
|
1729 |
+
|
1730 |
+
#: includes/cron/do-delete-data-request.php:27
|
1731 |
+
msgid "has not the date to process"
|
1732 |
+
msgstr "has not the date to process"
|
1733 |
+
|
1734 |
+
#: includes/html/index-footer.php:6
|
1735 |
+
msgid "Downloaded from"
|
1736 |
+
msgstr "Heruntergeladen von"
|
1737 |
+
|
1738 |
+
#: includes/html/index-footer.php:6
|
1739 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:111
|
1740 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:113
|
1741 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:115
|
1742 |
+
#: includes/integrations/cf7/Cf7Integration.php:134
|
1743 |
+
#: includes/integrations/cf7/Cf7Integration.php:136
|
1744 |
+
msgid "on"
|
1745 |
+
msgstr "am"
|
1746 |
+
|
1747 |
+
#: includes/html/index-header.php:5 includes/html/index-header.php:412
|
1748 |
+
msgid "All data relating to"
|
1749 |
+
msgstr "Alle Daten von"
|
1750 |
+
|
1751 |
+
#: includes/html/index-header.php:413
|
1752 |
+
msgid "Objects"
|
1753 |
+
msgstr "Objekte"
|
1754 |
+
|
1755 |
+
#: includes/html/index-header.php:413
|
1756 |
+
msgid "Generated on"
|
1757 |
+
msgstr "Erstellt am"
|
1758 |
+
|
1759 |
+
#: includes/html/index-header.php:426
|
1760 |
+
msgid "Type"
|
1761 |
+
msgstr "Type"
|
1762 |
+
|
1763 |
+
#: includes/html/index-header.php:427
|
1764 |
+
msgid "Data"
|
1765 |
+
msgstr "Daten"
|
1766 |
+
|
1767 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:69
|
1768 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:70
|
1769 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:59
|
1770 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:60
|
1771 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:66
|
1772 |
+
#: includes/integrations/cf7/Cf7Integration.php:74
|
1773 |
+
#: includes/integrations/cf7/Cf7Integration.php:75
|
1774 |
+
#: includes/integrations/cf7/Cf7Integration.php:76
|
1775 |
+
msgid "Deleted content"
|
1776 |
+
msgstr "Gelöschter Inhalt"
|
1777 |
+
|
1778 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:111
|
1779 |
+
msgid "Forum"
|
1780 |
+
msgstr "Forum"
|
1781 |
+
|
1782 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:113
|
1783 |
+
msgid "Forum thread"
|
1784 |
+
msgstr "Forum Thread"
|
1785 |
+
|
1786 |
+
#: includes/integrations/bbpress/BbpressIntegration.php:115
|
1787 |
+
msgid "Forum entry"
|
1788 |
+
msgstr "Forum Eintrag"
|
1789 |
+
|
1790 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:99
|
1791 |
+
msgid "PM between"
|
1792 |
+
msgstr "PN zwischen"
|
1793 |
+
|
1794 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:100
|
1795 |
+
msgid "Title:"
|
1796 |
+
msgstr "Titel:"
|
1797 |
+
|
1798 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:101
|
1799 |
+
msgid "Message: "
|
1800 |
+
msgstr "Nachricht: "
|
1801 |
+
|
1802 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:112
|
1803 |
+
msgid "Blog"
|
1804 |
+
msgstr "Blog"
|
1805 |
+
|
1806 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:142
|
1807 |
+
msgid "Profildaten"
|
1808 |
+
msgstr "Profildaten"
|
1809 |
+
|
1810 |
+
#: includes/integrations/buddypress/BuddyPressIntegration.php:157
|
1811 |
+
msgid "Field group"
|
1812 |
+
msgstr "Feldgruppe"
|
1813 |
+
|
1814 |
+
#: includes/integrations/cf7/Cf7Integration.php:134
|
1815 |
+
msgid "Contact entry"
|
1816 |
+
msgstr "Kontakteintrag"
|
1817 |
+
|
1818 |
+
#: includes/integrations/cf7/Cf7Integration.php:136
|
1819 |
+
#: templates/de_DE/emails/feedback.php:15
|
1820 |
+
#: templates/en_EN/emails/feedback.php:15
|
1821 |
+
#: templates/en_US/emails/feedback.php:15
|
1822 |
+
msgid "Message"
|
1823 |
+
msgstr "Nachricht"
|
1824 |
+
|
1825 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:41
|
1826 |
+
msgid "Invalid MailChimp API key"
|
1827 |
+
msgstr "Ungültiger MailChimp API Key"
|
1828 |
+
|
1829 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:41
|
1830 |
+
msgid "supplied."
|
1831 |
+
msgstr "angegeben"
|
1832 |
+
|
1833 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:190
|
1834 |
+
msgid "cURL support is required, but can't be found."
|
1835 |
+
msgstr "cURL support is required, but can't be found."
|
1836 |
+
|
1837 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:419
|
1838 |
+
msgid "Request timed out after"
|
1839 |
+
msgstr "Request timed out after"
|
1840 |
+
|
1841 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:419
|
1842 |
+
msgid "seconds."
|
1843 |
+
msgstr "seconds."
|
1844 |
+
|
1845 |
+
#: includes/integrations/mailchimp/MailchimpAPI.php:423
|
1846 |
+
msgid "Unknown error, call getLastResponse() to find out what happened."
|
1847 |
+
msgstr "Unknown error, call getLastResponse() to find out what happened."
|
1848 |
+
|
1849 |
+
#: includes/integrations/mailchimp/page.php:7
|
1850 |
+
msgid "Mailchimp API Key"
|
1851 |
+
msgstr "MailChimp API key"
|
1852 |
+
|
1853 |
+
#: includes/integrations/mailchimp/page.php:11
|
1854 |
+
msgid "Click here"
|
1855 |
+
msgstr "Hier klicken"
|
1856 |
+
|
1857 |
+
#: includes/integrations/mailchimp/page.php:12
|
1858 |
+
msgid "to get an API key"
|
1859 |
+
msgstr "um einen API Key zu erhalten."
|
1860 |
+
|
1861 |
+
#: includes/integrations/woocommerce/WoocommerceIntegration.php:114
|
1862 |
+
msgid "Order"
|
1863 |
+
msgstr "Bestellung"
|
1864 |
+
|
1865 |
+
#: includes/integrations/woocommerce/WoocommerceIntegration.php:114
|
1866 |
+
msgid "of"
|
1867 |
+
msgstr "von"
|
1868 |
+
|
1869 |
+
#: includes/integrations/woocommerce/WoocommerceIntegration.php:124
|
1870 |
+
msgid "Product"
|
1871 |
+
msgstr "Produkt"
|
1872 |
+
|
1873 |
+
#: includes/models/subject-access-request.php:69
|
1874 |
+
#: includes/models/subject-access-request.php:73
|
1875 |
+
msgid "Subject access request"
|
1876 |
+
msgstr "Datenauszug"
|
1877 |
+
|
1878 |
+
#: includes/models/subject-access-request.php:181
|
1879 |
+
#: includes/models/subject-access-request.php:182
|
1880 |
+
#: includes/models/subject-access-request.php:184
|
1881 |
+
msgid "All data of"
|
1882 |
+
msgstr "Alle Daten zu"
|
1883 |
+
|
1884 |
+
#: includes/models/subject-access-request.php:184
|
1885 |
+
msgid "Date"
|
1886 |
+
msgstr "Datum"
|
1887 |
+
|
1888 |
+
#: includes/models/subject-access-request.php:184
|
1889 |
+
msgid "Source"
|
1890 |
+
msgstr "Quelle"
|
1891 |
+
|
1892 |
+
#: includes/models/unsubscriber.php:100
|
1893 |
+
msgid "Confirmation of delete request"
|
1894 |
+
msgstr "Bestätigung der Datenlöschung"
|
1895 |
+
|
1896 |
+
#: public/actions/user-permissions.php:37
|
1897 |
+
msgid "updated their user permissions"
|
1898 |
+
msgstr "hat die Berechtigungen geändert"
|
1899 |
+
|
1900 |
+
#: public/class-sp-dsgvo-public.php:177
|
1901 |
+
msgid "Ok"
|
1902 |
+
msgstr "Ok"
|
1903 |
+
|
1904 |
+
#: public/class-sp-dsgvo-public.php:293 public/class-sp-dsgvo-public.php:316
|
1905 |
+
msgid "More options"
|
1906 |
+
msgstr "Mehr Optionen"
|
1907 |
+
|
1908 |
+
#: public/class-sp-dsgvo-public.php:318
|
1909 |
+
msgid "Accept"
|
1910 |
+
msgstr "Akzeptieren"
|
1911 |
+
|
1912 |
+
#: public/class-sp-dsgvo-public.php:507
|
1913 |
+
msgid "Privacy Policy: "
|
1914 |
+
msgstr "Datenschutzvereinbarungen"
|
1915 |
+
|
1916 |
+
#: public/class-sp-dsgvo-public.php:550
|
1917 |
+
msgid "Consent to the privacy policy is mandatory."
|
1918 |
+
msgstr "Die Zustimmung zu den Datenschutzbestimmungen ist zwingend."
|
1919 |
+
|
1920 |
+
#: public/class-sp-dsgvo-public.php:556
|
1921 |
+
msgid "Privacy Policy accepted"
|
1922 |
+
msgstr "Datenschutzbestimmungen akzeptiert"
|
1923 |
+
|
1924 |
+
#: public/js/simplebar.js:11
|
1925 |
+
msgid "entries"
|
1926 |
+
msgstr "Einträge"
|
1927 |
+
|
1928 |
+
#: public/js/simplebar.js:11
|
1929 |
+
msgid "values"
|
1930 |
+
msgstr "Werte"
|
1931 |
+
|
1932 |
+
#: public/js/simplebar.js:11
|
1933 |
+
msgid "keys"
|
1934 |
+
msgstr "Schlüssel"
|
1935 |
+
|
1936 |
+
#: public/shortcodes/decline-permission.php:5
|
1937 |
+
msgid "Decline Terms & Conditions"
|
1938 |
+
msgstr "Datenschutzbestimmungen ablehnen"
|
1939 |
+
|
1940 |
+
#: public/shortcodes/display-services.php:13
|
1941 |
+
msgid "Open Terms of service"
|
1942 |
+
msgstr "AGB des Dienstes aufrufen"
|
1943 |
+
|
1944 |
+
#: public/shortcodes/explicit-permission.php:6
|
1945 |
+
msgid "Accepted"
|
1946 |
+
msgstr "Akzeptiert"
|
1947 |
+
|
1948 |
+
#: public/shortcodes/explicit-permission.php:7
|
1949 |
+
msgid "Declined"
|
1950 |
+
msgstr "Abgelehnt"
|
1951 |
+
|
1952 |
+
#: public/shortcodes/privacy-settings-form-alt.php:43
|
1953 |
+
#: public/shortcodes/privacy-settings-form-alt.php:45
|
1954 |
+
#: public/shortcodes/privacy-settings-form.php:18
|
1955 |
+
#: public/shortcodes/privacy-settings-form.php:28
|
1956 |
+
msgid "Terms"
|
1957 |
+
msgstr "AGB"
|
1958 |
+
|
1959 |
+
#: public/shortcodes/privacy-settings-form-alt.php:65
|
1960 |
+
#: public/shortcodes/privacy-settings-form.php:34
|
1961 |
+
msgid "Yes"
|
1962 |
+
msgstr "Ja"
|
1963 |
+
|
1964 |
+
#: public/shortcodes/privacy-settings-form-alt.php:68
|
1965 |
+
#: public/shortcodes/privacy-settings-form.php:37
|
1966 |
+
msgid "No"
|
1967 |
+
msgstr "Nein"
|
1968 |
+
|
1969 |
+
#: public/shortcodes/privacy-settings-form-alt.php:78
|
1970 |
+
#: public/shortcodes/privacy-settings-form.php:46
|
1971 |
+
msgid ""
|
1972 |
+
"Since you are not logged in we save these settings in a cookie. These "
|
1973 |
+
"settings are thus only active on this PC."
|
1974 |
+
msgstr ""
|
1975 |
+
"Da Sie nicht eingeloggt sind speichern wir diese Einstellungen in einem "
|
1976 |
+
"Cookie. Diese Einstellungen sind somit nur auf diesem PC aktiv."
|
1977 |
+
|
1978 |
+
#: public/shortcodes/privacy-settings-form.php:16
|
1979 |
+
msgid "Service"
|
1980 |
+
msgstr "Dienst"
|
1981 |
+
|
1982 |
+
#: public/shortcodes/privacy-settings-form.php:50
|
1983 |
+
msgid "Save"
|
1984 |
+
msgstr "Speichern"
|
1985 |
+
|
1986 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:11
|
1987 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php:10
|
1988 |
+
msgid "No token provided."
|
1989 |
+
msgstr "Kein Token vorhanden"
|
1990 |
+
|
1991 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:19
|
1992 |
+
msgid "Bad token provided."
|
1993 |
+
msgstr "Fehlerhaftes Token"
|
1994 |
+
|
1995 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:71
|
1996 |
+
msgid "Error"
|
1997 |
+
msgstr "Fehler"
|
1998 |
+
|
1999 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:9
|
2000 |
+
msgid "Please enter an email address"
|
2001 |
+
msgstr "Bitte eine Email Adresse angeben."
|
2002 |
+
|
2003 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:13
|
2004 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:13
|
2005 |
+
msgid "The GDPR approval is mandatory."
|
2006 |
+
msgstr "Die DSGVO Zustimmung ist zwingend."
|
2007 |
+
|
2008 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:28
|
2009 |
+
msgid "New subject access request"
|
2010 |
+
msgstr "Neue Anfrage zum Datenauszug"
|
2011 |
+
|
2012 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:29
|
2013 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:31
|
2014 |
+
msgid "A new subject access request from "
|
2015 |
+
msgstr "Es ist eine neue Anfrage zu einem Datenauszug von "
|
2016 |
+
|
2017 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:18
|
2018 |
+
msgid "Your request has been created"
|
2019 |
+
msgstr "Ihr Antrag wurde eingereicht."
|
2020 |
+
|
2021 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:18
|
2022 |
+
msgid ""
|
2023 |
+
"You will receive an email from us with a current extract of your data stored "
|
2024 |
+
"with us."
|
2025 |
+
msgstr ""
|
2026 |
+
"Sie erhalten eine Email von uns mit einem aktuellen Auszug Ihrer bei uns "
|
2027 |
+
"gespeicherten Daten."
|
2028 |
+
|
2029 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:51
|
2030 |
+
msgid "Create request"
|
2031 |
+
msgstr "Anfrage absenden"
|
2032 |
+
|
2033 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php:18
|
2034 |
+
msgid "Bad token provided"
|
2035 |
+
msgstr "Bad token provided."
|
2036 |
+
|
2037 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:9
|
2038 |
+
msgid "Please enter an email address."
|
2039 |
+
msgstr "Bitte eine Email Adresse angeben."
|
2040 |
+
|
2041 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:30
|
2042 |
+
msgid "New delete request"
|
2043 |
+
msgstr "Neue Löschanfrage"
|
2044 |
+
|
2045 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:19
|
2046 |
+
msgid "Request sent successfully. You will receive an email in a few minutes."
|
2047 |
+
msgstr ""
|
2048 |
+
"Anfrage erfolgreich gesendet. Sie erhalten in wenigen Minuten eine Email."
|
2049 |
+
|
2050 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:23
|
2051 |
+
msgid "Request successfully completed. Your data has been completely deleted."
|
2052 |
+
msgstr ""
|
2053 |
+
"Anfrage erfolgreich abgeschlossen. Ihre Daten wurden vollständig gelöscht."
|
2054 |
+
|
2055 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:55
|
2056 |
+
msgid "Create delete request"
|
2057 |
+
msgstr "Löschanfrage senden"
|
2058 |
+
|
2059 |
+
#: templates/de_DE/emails/feedback.php:1 templates/en_EN/emails/feedback.php:1
|
2060 |
+
#: templates/en_US/emails/feedback.php:1
|
2061 |
+
msgid "WP DSGVO Tools Feedback"
|
2062 |
+
msgstr "WP DSGVO Tools Feedback"
|
2063 |
+
|
2064 |
+
#: templates/de_DE/emails/feedback.php:4 templates/en_EN/emails/feedback.php:4
|
2065 |
+
#: templates/en_US/emails/feedback.php:4
|
2066 |
+
msgid "From"
|
2067 |
+
msgstr "Von"
|
2068 |
+
|
2069 |
+
#: templates/de_DE/emails/subject-access-request.php:46
|
2070 |
+
#: templates/en_EN/emails/subject-access-request.php:46
|
2071 |
+
#: templates/en_US/emails/subject-access-request.php:46
|
2072 |
+
msgid ""
|
2073 |
+
"We have received your subject access request. A PDF document containing all "
|
2074 |
+
"the data we have stored about you is attached.\n"
|
2075 |
+
"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Amount of personal data found"
|
2076 |
+
msgstr ""
|
2077 |
+
"Wir haben soeben Ihre Anfrage für einen Datenauszug erhalten. Ein PDF "
|
2078 |
+
"mit einer Erklärung, welche Daten wir von Ihnen besitzen, ist "
|
2079 |
+
"beigefügt. Anzahl gefundener persönlichen Daten:"
|
2080 |
+
|
2081 |
+
#: templates/de_DE/emails/subject-access-request.php:49
|
2082 |
+
#: templates/en_EN/emails/subject-access-request.php:49
|
2083 |
+
#: templates/en_US/emails/subject-access-request.php:49
|
2084 |
+
msgid "Here you see a summary about this data"
|
2085 |
+
msgstr "Hier ist ein Überblick welche Daten gefunden wurden:"
|
2086 |
+
|
2087 |
+
#: templates/de_DE/emails/subject-access-request.php:52
|
2088 |
+
#: templates/en_EN/emails/subject-access-request.php:52
|
2089 |
+
#: templates/en_US/emails/subject-access-request.php:52
|
2090 |
+
msgid "Download your archive"
|
2091 |
+
msgstr "Archiv runterladen"
|
2092 |
+
|
2093 |
+
#: templates/de_DE/emails/subject-access-request.php:54
|
2094 |
+
#: templates/en_EN/emails/subject-access-request.php:54
|
2095 |
+
#: templates/en_US/emails/subject-access-request.php:54
|
2096 |
+
msgid ""
|
2097 |
+
"Following this link you can download a PDF and a JSON file dump of your data."
|
2098 |
+
msgstr ""
|
2099 |
+
"Sie können auch einen vollständiges Auszug Ihres Archives als PDF "
|
2100 |
+
"und ein JSON dump herunterladen."
|
2101 |
+
|
2102 |
+
#: templates/de_DE/emails/subject-access-request.php:56
|
2103 |
+
#: templates/en_EN/emails/subject-access-request.php:56
|
2104 |
+
#: templates/en_US/emails/subject-access-request.php:56
|
2105 |
+
msgid "Download archive"
|
2106 |
+
msgstr "Archiv jetzt runterladen"
|
2107 |
+
|
2108 |
+
#: templates/de_DE/emails/subject-access-request.php:94
|
2109 |
+
#: templates/de_DE/emails/super-unsubscribe.php:84
|
2110 |
+
#: templates/en_EN/emails/subject-access-request.php:94
|
2111 |
+
#: templates/en_EN/emails/super-unsubscribe.php:84
|
2112 |
+
#: templates/en_US/emails/subject-access-request.php:94
|
2113 |
+
#: templates/en_US/emails/super-unsubscribe.php:84
|
2114 |
+
msgid "Sent from"
|
2115 |
+
msgstr "Gesendet von"
|
2116 |
+
|
2117 |
+
#: templates/de_DE/emails/subject-access-request.php:98
|
2118 |
+
#: templates/de_DE/emails/super-unsubscribe.php:88
|
2119 |
+
#: templates/en_EN/emails/subject-access-request.php:98
|
2120 |
+
#: templates/en_EN/emails/super-unsubscribe.php:88
|
2121 |
+
#: templates/en_US/emails/subject-access-request.php:98
|
2122 |
+
#: templates/en_US/emails/super-unsubscribe.php:88
|
2123 |
+
msgid "Contact"
|
2124 |
+
msgstr "Kontakt"
|
2125 |
+
|
2126 |
+
#: templates/de_DE/emails/super-unsubscribe.php:45
|
2127 |
+
#: templates/en_EN/emails/super-unsubscribe.php:45
|
2128 |
+
#: templates/en_US/emails/super-unsubscribe.php:45
|
2129 |
+
msgid "We have received your delete request."
|
2130 |
+
msgstr "Wir haben soeben Ihre Anfrage zur Datenlöschung erhalten."
|
2131 |
+
|
2132 |
+
#: templates/de_DE/emails/super-unsubscribe.php:46
|
2133 |
+
#: templates/en_EN/emails/super-unsubscribe.php:46
|
2134 |
+
#: templates/en_US/emails/super-unsubscribe.php:46
|
2135 |
+
msgid ""
|
2136 |
+
"If you confirm the following link, all your data stored at\n"
|
2137 |
+
"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{website}} gets deleted."
|
2138 |
+
msgstr ""
|
2139 |
+
"Wenn Sie auf die "Bestätige Datenlöschung" Schaltflä"
|
2140 |
+
"che klicken werden all Ihre persönlichen Daten von {{website}} gelö"
|
2141 |
+
"scht."
|
2142 |
+
|
2143 |
+
#: templates/de_DE/emails/super-unsubscribe.php:51
|
2144 |
+
#: templates/en_EN/emails/super-unsubscribe.php:51
|
2145 |
+
#: templates/en_US/emails/super-unsubscribe.php:51
|
2146 |
+
msgid "Confirm Delete"
|
2147 |
+
msgstr "Löschung bestätigen"
|
2148 |
+
|
2149 |
+
#: templates/de_DE/emails/super-unsubscribe.php:53
|
2150 |
+
#: templates/en_EN/emails/super-unsubscribe.php:53
|
2151 |
+
#: templates/en_US/emails/super-unsubscribe.php:53
|
2152 |
+
msgid "If you don't want do delete your data just ignore this email."
|
2153 |
+
msgstr ""
|
2154 |
+
"Wenn Sie dies nicht durchführen möchten, können Sie dieses E-"
|
2155 |
+
"Mail gnorieren."
|
2156 |
+
|
2157 |
+
#~ msgid "Allgemeine Einstellungen"
|
2158 |
+
#~ msgstr "Common Settings"
|
2159 |
+
|
2160 |
+
#~ msgid "Woocommerce Integration"
|
2161 |
+
#~ msgstr "Woocommerce Integration"
|
2162 |
+
|
2163 |
+
#~ msgid "Texts customizable with comment checkbox (from Blog Edition)"
|
2164 |
+
#~ msgstr "Texte bei Kommentarcheckbox anpassbar (Ab Blog Edition)"
|
2165 |
+
|
2166 |
+
#~ msgid "In der Blog oder Premium Edition möglich"
|
2167 |
+
#~ msgstr "In der Blog oder Premium Edition möglich"
|
2168 |
+
|
2169 |
+
#~ msgid "Gültig bis:"
|
2170 |
+
#~ msgstr "Gültig bis:"
|
2171 |
+
|
2172 |
+
#~ msgid "I have read and accepted the PrivacyPolicyPlaceholder."
|
2173 |
+
#~ msgstr "Ich habe die PrivacyPolicyPlaceholder gelesen und akzeptiert."
|
2174 |
+
|
2175 |
+
#~ msgid "imprint_text"
|
2176 |
+
#~ msgstr ""
|
2177 |
+
#~ "[company_name]\n"
|
2178 |
+
#~ "Inhaber: [company_owner]\n"
|
2179 |
+
#~ "[adress_street]\n"
|
2180 |
+
#~ "[adress_zip_location]\n"
|
2181 |
+
#~ "\n"
|
2182 |
+
#~ "Geschäftsführung: [company_management]\n"
|
2183 |
+
#~ "\n"
|
2184 |
+
#~ "Telefonnummer: [comm_phone]\n"
|
2185 |
+
#~ "E-Mailadresse: [comm_email]\n"
|
2186 |
+
#~ "\n"
|
2187 |
+
#~ "Registergericht & Registernummer: [company_register_court] ,"
|
2188 |
+
#~ "[company_register_nr]\n"
|
2189 |
+
#~ "\n"
|
2190 |
+
#~ "Umsatzsteuer-Identifikationsnummer: [company_uid]\n"
|
2191 |
+
#~ "\n"
|
2192 |
+
#~ "Inhaltlich verantwortlich: [content_responsible]\n"
|
2193 |
+
#~ "\n"
|
2194 |
+
#~ "Plattform der Europäischen Kommission zur Online-Streitbeilegung (OS) für "
|
2195 |
+
#~ "Verbraucher: https://ec.europa.eu/consumers/odr/. Wir sind nicht bereit "
|
2196 |
+
#~ "und nicht verpflichtet an einem Streitbeilegungsverfahren vor einer "
|
2197 |
+
#~ "Verbraucherschlichtungsstelle teilzunehmen."
|
2198 |
+
|
2199 |
+
#~ msgid "License Key"
|
2200 |
+
#~ msgstr "Lizenz"
|
2201 |
+
|
2202 |
+
#~ msgid "Datenauszug"
|
2203 |
+
#~ msgstr "Subject Access Request"
|
2204 |
+
|
2205 |
+
#~ msgid "Datenschutzeinstellungen Benutzer"
|
2206 |
+
#~ msgstr "Datenschutzeinstellungen Benutzer"
|
2207 |
+
|
2208 |
+
#~ msgid "Datenschutz"
|
2209 |
+
#~ msgstr "Privacy Policy"
|
2210 |
+
|
2211 |
+
#~ msgid ""
|
2212 |
+
#~ "Die URL zu den Datenschutzbestimmungen des Versanddienstleisters mit dem "
|
2213 |
+
#~ "die Newsletter versendet werden."
|
2214 |
+
#~ msgstr ""
|
2215 |
+
#~ "Die URL zu den Datenschutzbestimmungen des Versanddienstleisters mit dem "
|
2216 |
+
#~ "die Newsletter versendet werden."
|
languages/shapepress-dsgvo-en_EN.mo
ADDED
Binary file
|
languages/shapepress-dsgvo-en_EN.po
ADDED
@@ -0,0 +1,1967 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: shapepress-dsgvo-de_DE\n"
|
4 |
+
"POT-Creation-Date: 2018-07-09 15:24+0200\n"
|
5 |
+
"PO-Revision-Date: 2018-07-09 15:24+0200\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: \n"
|
8 |
+
"Language: en\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.0.8\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
16 |
+
"X-Poedit-SearchPath-0: .\n"
|
17 |
+
"X-Poedit-SearchPathExcluded-0: .git\n"
|
18 |
+
"X-Poedit-SearchPathExcluded-1: .settings\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-2: includes/integrations\n"
|
20 |
+
|
21 |
+
#: admin/base.php:2
|
22 |
+
msgid "WP DSGVO Tools"
|
23 |
+
msgstr ""
|
24 |
+
|
25 |
+
#: admin/base.php:32
|
26 |
+
msgid "WP DSGVO Tools is not binding and does not replace expert advice"
|
27 |
+
msgstr ""
|
28 |
+
|
29 |
+
#: admin/base.php:34
|
30 |
+
msgid "GDPR website self check"
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: admin/base.php:35
|
34 |
+
msgid "Includes only your web presence!"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: admin/base.php:40
|
38 |
+
msgid "VdV (directory of processing times)"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
#: admin/base.php:40
|
42 |
+
msgid "downloaded"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: admin/base.php:41
|
46 |
+
msgid "filled"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: admin/base.php:47
|
50 |
+
msgid "WP DSGVO Tools plugin completely filled"
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: admin/base.php:52
|
54 |
+
msgid ""
|
55 |
+
"Monthly maintenance of the website (maintenance contract with the web "
|
56 |
+
"designer)"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: admin/base.php:56
|
60 |
+
msgid "Security Precautions (strong passwords, who has access, ...)"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: admin/base.php:60
|
64 |
+
msgid "GDPR compliant and secure web hosting? Our recommendation:"
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: admin/base.php:66
|
68 |
+
msgid "Check the security of unsupported plugins"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: admin/base.php:71
|
72 |
+
msgid "Expert advice"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: admin/base.php:71
|
76 |
+
msgid "requested"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: admin/base.php:75
|
80 |
+
msgid "Blog Edition"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: admin/base.php:77
|
84 |
+
msgid ""
|
85 |
+
"Stylish Cookie Notice: Customize the look & feel of your Wordpress Page!"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/base.php:78
|
89 |
+
msgid "Texts customizable with comment checkbox"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin/base.php:82
|
93 |
+
msgid "Get the Blog Edition now"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin/base.php:84
|
97 |
+
msgid "Upgrade to Premium"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin/base.php:86
|
101 |
+
msgid "Support & Community"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: admin/base.php:87
|
105 |
+
msgid "Woocommerce Integration"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: admin/base.php:88
|
109 |
+
msgid "Automatic user data reports"
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: admin/base.php:89
|
113 |
+
msgid "Email notifications"
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: admin/base.php:90
|
117 |
+
msgid "Style & Customization (from Blog Edition)"
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#: admin/base.php:91
|
121 |
+
msgid "Texts customizable with comment checkbox (from Blog Edition)"
|
122 |
+
msgstr ""
|
123 |
+
|
124 |
+
#: admin/base.php:95
|
125 |
+
msgid "Get Premium version now"
|
126 |
+
msgstr ""
|
127 |
+
|
128 |
+
#: admin/base.php:98
|
129 |
+
msgid "FAQ & checklists"
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: admin/base.php:99
|
133 |
+
msgid "GDPR experts booking"
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
#: admin/base.php:100
|
137 |
+
msgid "Book legal advice"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: admin/class-sp-dsgvo-admin.php:71 admin/tabs/privacy-policy/page.php:1
|
141 |
+
#: public/class-sp-dsgvo-public.php:397 public/class-sp-dsgvo-public.php:400
|
142 |
+
msgid "Privacy policy"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: admin/class-sp-dsgvo-admin.php:72
|
146 |
+
#: admin/tabs/imprint/class-sp-dsgvo-imprint-tab.php:11
|
147 |
+
#: admin/tabs/imprint/page.php:1
|
148 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:61
|
149 |
+
msgid "Imprint"
|
150 |
+
msgstr ""
|
151 |
+
|
152 |
+
#: admin/class-sp-dsgvo-admin.php:78
|
153 |
+
msgid "Experts Info"
|
154 |
+
msgstr ""
|
155 |
+
|
156 |
+
#: admin/class-sp-dsgvo-admin.php:79
|
157 |
+
msgid "Legal advice"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
#: admin/class-sp-dsgvo-admin.php:80
|
161 |
+
msgid "FAQ"
|
162 |
+
msgstr ""
|
163 |
+
|
164 |
+
#: admin/class-sp-dsgvo-admin.php:81
|
165 |
+
msgid "About WP DSGVO Tools"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: admin/class-sp-dsgvo-admin.php:131
|
169 |
+
msgid "Privacy settings user page"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: admin/class-sp-dsgvo-admin.php:132
|
173 |
+
msgid "Delete request page"
|
174 |
+
msgstr ""
|
175 |
+
|
176 |
+
#: admin/class-sp-dsgvo-admin.php:133
|
177 |
+
msgid "Terms page"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: admin/class-sp-dsgvo-admin.php:134
|
181 |
+
msgid "Explicit permissions page"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: admin/class-sp-dsgvo-admin.php:135
|
185 |
+
msgid "Opt Out page"
|
186 |
+
msgstr ""
|
187 |
+
|
188 |
+
#: admin/class-sp-dsgvo-admin.php:136 admin/tabs/privacy-policy/page.php:12
|
189 |
+
msgid "Privacy policy page"
|
190 |
+
msgstr ""
|
191 |
+
|
192 |
+
#: admin/class-sp-dsgvo-admin.php:137
|
193 |
+
msgid "Subject access request page"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: admin/class-sp-dsgvo-admin.php:138
|
197 |
+
msgid "Imprint page"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: admin/class-sp-dsgvo-admin.php:189
|
201 |
+
msgid "Privacy settings of the user"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: admin/class-sp-dsgvo-admin.php:194
|
205 |
+
msgid "Dienste"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:28
|
209 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:50
|
210 |
+
msgid "error during license activation: "
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-activate-action.php:77
|
214 |
+
msgid "error during license details: "
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
+
#: admin/tabs/common-settings/class-sp-dsgvo-common-settings-tab.php:11
|
218 |
+
msgid "Common Settings"
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#: admin/tabs/common-settings/page.php:4
|
222 |
+
msgid "Activate Premium"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#: admin/tabs/common-settings/page.php:8
|
226 |
+
msgid "License"
|
227 |
+
msgstr ""
|
228 |
+
|
229 |
+
#: admin/tabs/common-settings/page.php:15
|
230 |
+
msgid "Premium version has been activated"
|
231 |
+
msgstr ""
|
232 |
+
|
233 |
+
#: admin/tabs/common-settings/page.php:15
|
234 |
+
msgid "Invalid or expired license."
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
#: admin/tabs/common-settings/page.php:18
|
238 |
+
msgid "Activated on:"
|
239 |
+
msgstr ""
|
240 |
+
|
241 |
+
#: admin/tabs/common-settings/page.php:18
|
242 |
+
msgid "Gültig bis:"
|
243 |
+
msgstr ""
|
244 |
+
|
245 |
+
#: admin/tabs/common-settings/page.php:20
|
246 |
+
msgid "Deactivate license"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
#: admin/tabs/common-settings/page.php:22
|
250 |
+
msgid "Activating the license unlocks premium features."
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: admin/tabs/common-settings/page.php:23
|
254 |
+
msgid "Activate license"
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: admin/tabs/common-settings/page.php:35
|
258 |
+
msgid "Allgemeine Einstellungen"
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: admin/tabs/common-settings/page.php:39
|
262 |
+
msgid "Admin Email"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: admin/tabs/common-settings/page.php:43
|
266 |
+
msgid "Used by sending emails."
|
267 |
+
msgstr ""
|
268 |
+
|
269 |
+
#: admin/tabs/common-settings/page.php:46
|
270 |
+
msgid "Use WPML Strings"
|
271 |
+
msgstr ""
|
272 |
+
|
273 |
+
#: admin/tabs/common-settings/page.php:51
|
274 |
+
msgid "Use WPML String Translation for text inputs."
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: admin/tabs/common-settings/page.php:56
|
278 |
+
#: admin/tabs/common-settings/page.php:58
|
279 |
+
msgid "Comments"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: admin/tabs/common-settings/page.php:58
|
283 |
+
msgid "Customizing possible with Blog/Premium edition."
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: admin/tabs/common-settings/page.php:59
|
287 |
+
msgid "Click here to get a license."
|
288 |
+
msgstr ""
|
289 |
+
|
290 |
+
#: admin/tabs/common-settings/page.php:64
|
291 |
+
msgid "Checkbox for comments:"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: admin/tabs/common-settings/page.php:69
|
295 |
+
msgid ""
|
296 |
+
"Displays at checkbox which requires confirmation when creating a comment."
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: admin/tabs/common-settings/page.php:73
|
300 |
+
msgid "Replace CF7 Acceptance text"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: admin/tabs/common-settings/page.php:78
|
304 |
+
msgid ""
|
305 |
+
"Replaces the text of CF7 Acceptance Checkboxes with following text. (Add to "
|
306 |
+
"your form: [acceptance dsgvo] Text[/acceptance])"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: admin/tabs/common-settings/page.php:82 admin/tabs/cookie-notice/page.php:326
|
310 |
+
msgid "Text"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: admin/tabs/common-settings/page.php:84
|
314 |
+
msgid "Message text:"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: admin/tabs/common-settings/page.php:90
|
318 |
+
msgid "Info text:"
|
319 |
+
msgstr ""
|
320 |
+
|
321 |
+
#: admin/tabs/common-settings/page.php:98
|
322 |
+
msgid "Confirmation text"
|
323 |
+
msgstr ""
|
324 |
+
|
325 |
+
#: admin/tabs/common-settings/page.php:109
|
326 |
+
msgid "Company data"
|
327 |
+
msgstr ""
|
328 |
+
|
329 |
+
#: admin/tabs/common-settings/page.php:110
|
330 |
+
msgid ""
|
331 |
+
"The following input fields represent the basic data necessary for the "
|
332 |
+
"creation of GDPR compliant data protection regulations and an imprint.<br /"
|
333 |
+
">All entries made here are automatically used in the privacy policy and "
|
334 |
+
"imprint generated by the WP DSGVO Tools Plugin."
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
#: admin/tabs/common-settings/page.php:114
|
338 |
+
msgid "Company name:"
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
#: admin/tabs/common-settings/page.php:121
|
342 |
+
msgid "Street:"
|
343 |
+
msgstr ""
|
344 |
+
|
345 |
+
#: admin/tabs/common-settings/page.php:128
|
346 |
+
msgid "ZIP + Location:"
|
347 |
+
msgstr ""
|
348 |
+
|
349 |
+
#: admin/tabs/common-settings/page.php:135
|
350 |
+
msgid "Commercial book no.:"
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
#: admin/tabs/common-settings/page.php:142
|
354 |
+
msgid "§11 Place of Jurisdiction:"
|
355 |
+
msgstr ""
|
356 |
+
|
357 |
+
#: admin/tabs/common-settings/page.php:149
|
358 |
+
msgid "VAT No.:"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
#: admin/tabs/common-settings/page.php:156
|
362 |
+
msgid "Legal representatives:"
|
363 |
+
msgstr ""
|
364 |
+
|
365 |
+
#: admin/tabs/common-settings/page.php:160
|
366 |
+
msgid "The person who legally represents the company."
|
367 |
+
msgstr ""
|
368 |
+
|
369 |
+
#: admin/tabs/common-settings/page.php:163
|
370 |
+
msgid "Shareholder"
|
371 |
+
msgstr ""
|
372 |
+
|
373 |
+
#: admin/tabs/common-settings/page.php:167
|
374 |
+
msgid "In case of companies please contact all shareholders here."
|
375 |
+
msgstr ""
|
376 |
+
|
377 |
+
#: admin/tabs/common-settings/page.php:170
|
378 |
+
msgid "Responsible for content:"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: admin/tabs/common-settings/page.php:174
|
382 |
+
msgid "The person responsible for the content on this website."
|
383 |
+
msgstr ""
|
384 |
+
|
385 |
+
#: admin/tabs/common-settings/page.php:177
|
386 |
+
msgid "Phone:"
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
+
#: admin/tabs/common-settings/page.php:184
|
390 |
+
msgid "Email:"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#: admin/tabs/common-settings/page.php:191
|
394 |
+
msgid "Newsletter service:"
|
395 |
+
msgstr ""
|
396 |
+
|
397 |
+
#: admin/tabs/common-settings/page.php:195
|
398 |
+
msgid ""
|
399 |
+
"Name of the shipping service provider with which the newsletters will be "
|
400 |
+
"sent."
|
401 |
+
msgstr ""
|
402 |
+
|
403 |
+
#: admin/tabs/common-settings/page.php:198
|
404 |
+
msgid "URL Privacy Police of Newsletter Service:"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: admin/tabs/common-settings/page.php:202
|
408 |
+
msgid "The URL to the terms of the newsletter service."
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: admin/tabs/cookie-notice/class-sp-dsgvo-cookie-notice-tab.php:11
|
412 |
+
#: admin/tabs/cookie-notice/page.php:4 admin/tabs/cookie-notice/page.php:76
|
413 |
+
msgid "Cookie Notice"
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: admin/tabs/cookie-notice/page.php:8
|
417 |
+
msgid "Tracker initialization:"
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: admin/tabs/cookie-notice/page.php:13
|
421 |
+
msgid "When loading the page"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
#: admin/tabs/cookie-notice/page.php:14
|
425 |
+
msgid "After approval of the cookie"
|
426 |
+
msgstr ""
|
427 |
+
|
428 |
+
#: admin/tabs/cookie-notice/page.php:16
|
429 |
+
msgid ""
|
430 |
+
"Specifies when the trackers should be active. Whether before the consent of "
|
431 |
+
"the cookie or after clicking on Ok. For After approval Reload after approval "
|
432 |
+
"must be checked."
|
433 |
+
msgstr ""
|
434 |
+
|
435 |
+
#: admin/tabs/cookie-notice/page.php:27
|
436 |
+
msgid "Google Analyics"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: admin/tabs/cookie-notice/page.php:35
|
440 |
+
msgid "GTAG number:"
|
441 |
+
msgstr ""
|
442 |
+
|
443 |
+
#: admin/tabs/cookie-notice/page.php:42
|
444 |
+
msgid ""
|
445 |
+
"The IP address will be anonymously and visitors get the option refuse "
|
446 |
+
"tracking. <br />Tip: Country specific geodata will be further tracked even "
|
447 |
+
"with anonymization."
|
448 |
+
msgstr ""
|
449 |
+
|
450 |
+
#: admin/tabs/cookie-notice/page.php:50
|
451 |
+
msgid "Facebook Pixel"
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
#: admin/tabs/cookie-notice/page.php:57
|
455 |
+
msgid "FB Pixel Id:"
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
#: admin/tabs/cookie-notice/page.php:64
|
459 |
+
msgid "Visitors maintained the opportunity to reject the tracking."
|
460 |
+
msgstr ""
|
461 |
+
|
462 |
+
#: admin/tabs/cookie-notice/page.php:84
|
463 |
+
msgid "Notice text:"
|
464 |
+
msgstr ""
|
465 |
+
|
466 |
+
#: admin/tabs/cookie-notice/page.php:86
|
467 |
+
msgid "Insert the text here"
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: admin/tabs/cookie-notice/page.php:90
|
471 |
+
msgid "Validity:"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: admin/tabs/cookie-notice/page.php:96
|
475 |
+
msgid "Tag"
|
476 |
+
msgstr ""
|
477 |
+
|
478 |
+
#: admin/tabs/cookie-notice/page.php:98
|
479 |
+
msgid "Woche"
|
480 |
+
msgstr ""
|
481 |
+
|
482 |
+
#: admin/tabs/cookie-notice/page.php:100 admin/tabs/cookie-notice/page.php:102
|
483 |
+
#: admin/tabs/cookie-notice/page.php:104
|
484 |
+
msgid "Month"
|
485 |
+
msgstr ""
|
486 |
+
|
487 |
+
#: admin/tabs/cookie-notice/page.php:106
|
488 |
+
msgid "Year"
|
489 |
+
msgstr ""
|
490 |
+
|
491 |
+
#: admin/tabs/cookie-notice/page.php:108
|
492 |
+
msgid "For this period, the cookie is navigation use validly."
|
493 |
+
msgstr ""
|
494 |
+
|
495 |
+
#: admin/tabs/cookie-notice/page.php:117
|
496 |
+
msgid "Confirmation"
|
497 |
+
msgstr ""
|
498 |
+
|
499 |
+
#: admin/tabs/cookie-notice/page.php:122 admin/tabs/cookie-notice/page.php:159
|
500 |
+
#: admin/tabs/cookie-notice/page.php:207
|
501 |
+
msgid "Button text:"
|
502 |
+
msgstr ""
|
503 |
+
|
504 |
+
#: admin/tabs/cookie-notice/page.php:127
|
505 |
+
msgid "zB.: Ok"
|
506 |
+
msgstr ""
|
507 |
+
|
508 |
+
#: admin/tabs/cookie-notice/page.php:128
|
509 |
+
msgid "The text to be displayed is to accept the note and hide the message."
|
510 |
+
msgstr ""
|
511 |
+
|
512 |
+
#: admin/tabs/cookie-notice/page.php:133
|
513 |
+
msgid "Reload after confirm:"
|
514 |
+
msgstr ""
|
515 |
+
|
516 |
+
#: admin/tabs/cookie-notice/page.php:139
|
517 |
+
msgid "Enable this option to reload the page after accepting cookies."
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: admin/tabs/cookie-notice/page.php:144 public/class-sp-dsgvo-public.php:172
|
521 |
+
msgid "Decline"
|
522 |
+
msgstr ""
|
523 |
+
|
524 |
+
#: admin/tabs/cookie-notice/page.php:149 admin/tabs/cookie-notice/page.php:196
|
525 |
+
msgid "Button active:"
|
526 |
+
msgstr ""
|
527 |
+
|
528 |
+
#: admin/tabs/cookie-notice/page.php:165
|
529 |
+
msgid "eg.: Decline"
|
530 |
+
msgstr ""
|
531 |
+
|
532 |
+
#: admin/tabs/cookie-notice/page.php:166
|
533 |
+
msgid "The text of the option to decline cookies."
|
534 |
+
msgstr ""
|
535 |
+
|
536 |
+
#: admin/tabs/cookie-notice/page.php:171
|
537 |
+
msgid "Link target for rejection:"
|
538 |
+
msgstr ""
|
539 |
+
|
540 |
+
#: admin/tabs/cookie-notice/page.php:177
|
541 |
+
msgid "zb.: www.google.at"
|
542 |
+
msgstr ""
|
543 |
+
|
544 |
+
#: admin/tabs/cookie-notice/page.php:178
|
545 |
+
msgid ""
|
546 |
+
"Specifies the destination where visitors who want to reject the message "
|
547 |
+
"should be forwarded."
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: admin/tabs/cookie-notice/page.php:182
|
551 |
+
msgid "Do not set a cookie on forwarding:"
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: admin/tabs/cookie-notice/page.php:187
|
555 |
+
msgid ""
|
556 |
+
"If active, the visitor refuses and returns to the page, the notice will "
|
557 |
+
"reappear."
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: admin/tabs/cookie-notice/page.php:191 public/class-sp-dsgvo-public.php:183
|
561 |
+
msgid "Read more"
|
562 |
+
msgstr ""
|
563 |
+
|
564 |
+
#: admin/tabs/cookie-notice/page.php:213
|
565 |
+
msgid "zB.: Erfahre mehr"
|
566 |
+
msgstr ""
|
567 |
+
|
568 |
+
#: admin/tabs/cookie-notice/page.php:214
|
569 |
+
msgid "The text of the option to obtain more information"
|
570 |
+
msgstr ""
|
571 |
+
|
572 |
+
#: admin/tabs/cookie-notice/page.php:218
|
573 |
+
msgid "Link destination to read on:"
|
574 |
+
msgstr ""
|
575 |
+
|
576 |
+
#: admin/tabs/cookie-notice/page.php:231
|
577 |
+
msgid ""
|
578 |
+
"Specifies the destination to where visitors will find more information about "
|
579 |
+
"cookies."
|
580 |
+
msgstr ""
|
581 |
+
|
582 |
+
#: admin/tabs/cookie-notice/page.php:237
|
583 |
+
msgid "Options for displaying the cookie notice."
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
#: admin/tabs/cookie-notice/page.php:241
|
587 |
+
msgid "Position:"
|
588 |
+
msgstr ""
|
589 |
+
|
590 |
+
#: admin/tabs/cookie-notice/page.php:245
|
591 |
+
msgid "On top"
|
592 |
+
msgstr ""
|
593 |
+
|
594 |
+
#: admin/tabs/cookie-notice/page.php:247
|
595 |
+
msgid "Bottom"
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
#: admin/tabs/cookie-notice/page.php:249
|
599 |
+
msgid "Specifies the location where the cookie notice should be displayed."
|
600 |
+
msgstr ""
|
601 |
+
|
602 |
+
#: admin/tabs/cookie-notice/page.php:253
|
603 |
+
msgid "Animation"
|
604 |
+
msgstr ""
|
605 |
+
|
606 |
+
#: admin/tabs/cookie-notice/page.php:258
|
607 |
+
msgid "None"
|
608 |
+
msgstr ""
|
609 |
+
|
610 |
+
#: admin/tabs/cookie-notice/page.php:260
|
611 |
+
msgid "fade"
|
612 |
+
msgstr ""
|
613 |
+
|
614 |
+
#: admin/tabs/cookie-notice/page.php:262
|
615 |
+
msgid "hide"
|
616 |
+
msgstr ""
|
617 |
+
|
618 |
+
#: admin/tabs/cookie-notice/page.php:264
|
619 |
+
msgid "Animation when accepting the cookie message."
|
620 |
+
msgstr ""
|
621 |
+
|
622 |
+
#: admin/tabs/cookie-notice/page.php:276 admin/tabs/cookie-notice/page.php:278
|
623 |
+
msgid "Color adjustment"
|
624 |
+
msgstr ""
|
625 |
+
|
626 |
+
#: admin/tabs/cookie-notice/page.php:278
|
627 |
+
msgid "In der Blog oder Premium Edition möglich"
|
628 |
+
msgstr ""
|
629 |
+
|
630 |
+
#: admin/tabs/cookie-notice/page.php:279
|
631 |
+
msgid "Click here to get a license"
|
632 |
+
msgstr ""
|
633 |
+
|
634 |
+
#: admin/tabs/cookie-notice/page.php:284
|
635 |
+
msgid "Background:"
|
636 |
+
msgstr ""
|
637 |
+
|
638 |
+
#: admin/tabs/cookie-notice/page.php:293
|
639 |
+
msgid "Text:"
|
640 |
+
msgstr ""
|
641 |
+
|
642 |
+
#: admin/tabs/cookie-notice/page.php:301
|
643 |
+
msgid "Buttons"
|
644 |
+
msgstr ""
|
645 |
+
|
646 |
+
#: admin/tabs/cookie-notice/page.php:302
|
647 |
+
msgid "Background"
|
648 |
+
msgstr ""
|
649 |
+
|
650 |
+
#: admin/tabs/cookie-notice/page.php:307
|
651 |
+
msgid "Font:"
|
652 |
+
msgstr ""
|
653 |
+
|
654 |
+
#: admin/tabs/cookie-notice/page.php:314
|
655 |
+
msgid "CSS Classes"
|
656 |
+
msgstr ""
|
657 |
+
|
658 |
+
#: admin/tabs/cookie-notice/page.php:315
|
659 |
+
msgid ""
|
660 |
+
"The colors listed under \"Color Changes“ must be overwritten with !Important."
|
661 |
+
msgstr ""
|
662 |
+
|
663 |
+
#: admin/tabs/cookie-notice/page.php:318
|
664 |
+
msgid "Cookie notice:"
|
665 |
+
msgstr ""
|
666 |
+
|
667 |
+
#: admin/tabs/cookie-notice/page.php:334
|
668 |
+
msgid "Buttons:"
|
669 |
+
msgstr ""
|
670 |
+
|
671 |
+
#: admin/tabs/cookie-notice/page.php:342
|
672 |
+
msgid "Further display options"
|
673 |
+
msgstr ""
|
674 |
+
|
675 |
+
#: admin/tabs/cookie-notice/page.php:345
|
676 |
+
msgid "Font size"
|
677 |
+
msgstr ""
|
678 |
+
|
679 |
+
#: admin/tabs/cookie-notice/page.php:352 admin/tabs/cookie-notice/page.php:375
|
680 |
+
#: admin/tabs/services/page.php:62 admin/tabs/services/page.php:107
|
681 |
+
#: admin/tabs/services/page.php:146
|
682 |
+
msgid "Default"
|
683 |
+
msgstr ""
|
684 |
+
|
685 |
+
#: admin/tabs/cookie-notice/page.php:368
|
686 |
+
msgid "Height of cookie notice"
|
687 |
+
msgstr ""
|
688 |
+
|
689 |
+
#: admin/tabs/cookie-notice/page.php:390
|
690 |
+
msgid "Show icon:"
|
691 |
+
msgstr ""
|
692 |
+
|
693 |
+
#: admin/tabs/cookie-notice/page.php:399
|
694 |
+
msgid "Use overlay"
|
695 |
+
msgstr ""
|
696 |
+
|
697 |
+
#: admin/tabs/cookie-notice/page.php:405
|
698 |
+
msgid ""
|
699 |
+
"Displays a gray background and prevents the visitor from interacting with "
|
700 |
+
"the site before making a choice."
|
701 |
+
msgstr ""
|
702 |
+
|
703 |
+
#: admin/tabs/gravity-forms/class-sp-dsgvo-gravity-forms-tab.php:10
|
704 |
+
#: admin/tabs/gravity-forms/page.php:4
|
705 |
+
msgid "Gravity Forms"
|
706 |
+
msgstr ""
|
707 |
+
|
708 |
+
#: admin/tabs/gravity-forms/page.php:6
|
709 |
+
msgid ""
|
710 |
+
"With these settings the saving behavior of Gravity Forms can be configured."
|
711 |
+
msgstr ""
|
712 |
+
|
713 |
+
#: admin/tabs/gravity-forms/page.php:13
|
714 |
+
msgid "Do not save form data in the database"
|
715 |
+
msgstr ""
|
716 |
+
|
717 |
+
#: admin/tabs/gravity-forms/page.php:17
|
718 |
+
msgid ""
|
719 |
+
"If activated, no data will be stored, but only sent by e-mail. (Note: This "
|
720 |
+
"option overrides form-specific settings).)."
|
721 |
+
msgstr ""
|
722 |
+
|
723 |
+
#: admin/tabs/gravity-forms/page.php:20
|
724 |
+
msgid "Do not save IP address and user agent in database"
|
725 |
+
msgstr ""
|
726 |
+
|
727 |
+
#: admin/tabs/gravity-forms/page.php:24
|
728 |
+
msgid ""
|
729 |
+
"By default, if this checkbox is checked, this will be prevented from saving "
|
730 |
+
"the IP address and user agent of the sender."
|
731 |
+
msgstr ""
|
732 |
+
|
733 |
+
#: admin/tabs/gravity-forms/page.php:34
|
734 |
+
msgid "Specific form settings"
|
735 |
+
msgstr ""
|
736 |
+
|
737 |
+
#: admin/tabs/gravity-forms/page.php:35
|
738 |
+
msgid ""
|
739 |
+
"For each Gravity Forms form, it can be subsequently defined for each field "
|
740 |
+
"whether the data of the input field is stored in the database or not."
|
741 |
+
msgstr ""
|
742 |
+
|
743 |
+
#: admin/tabs/gravity-forms/page.php:46
|
744 |
+
msgid "Nicht in der Datenbank speichern."
|
745 |
+
msgstr ""
|
746 |
+
|
747 |
+
#: admin/tabs/imprint/page.php:2
|
748 |
+
msgid ""
|
749 |
+
"With the shortcode <code>[imprint]</code> an inprint automatically gets "
|
750 |
+
"generated. The data will be taken from general settings."
|
751 |
+
msgstr ""
|
752 |
+
|
753 |
+
#: admin/tabs/imprint/page.php:10
|
754 |
+
msgid "Imprint Page"
|
755 |
+
msgstr ""
|
756 |
+
|
757 |
+
#: admin/tabs/imprint/page.php:14 admin/tabs/privacy-policy/page.php:15
|
758 |
+
#: admin/tabs/services/page.php:17
|
759 |
+
msgid "Page"
|
760 |
+
msgstr ""
|
761 |
+
|
762 |
+
#: admin/tabs/imprint/page.php:16 admin/tabs/privacy-policy/page.php:17
|
763 |
+
#: admin/tabs/services/page.php:19
|
764 |
+
#: admin/tabs/subject-access-request/page.php:53
|
765 |
+
#: admin/tabs/super-unsubscribe/page.php:124
|
766 |
+
msgid "Select"
|
767 |
+
msgstr ""
|
768 |
+
|
769 |
+
#: admin/tabs/imprint/page.php:26
|
770 |
+
msgid "Create a page that uses the shortcode <code>[imprint]</code>."
|
771 |
+
msgstr ""
|
772 |
+
|
773 |
+
#: admin/tabs/imprint/page.php:26 admin/tabs/services/page.php:37
|
774 |
+
#: admin/tabs/subject-access-request/page.php:68
|
775 |
+
#: admin/tabs/super-unsubscribe/page.php:138
|
776 |
+
msgid "Create page"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: admin/tabs/imprint/page.php:28
|
780 |
+
msgid ""
|
781 |
+
"Attention: The shortcode <code>[imprint]</code> was not found on the page "
|
782 |
+
"you selected."
|
783 |
+
msgstr ""
|
784 |
+
|
785 |
+
#: admin/tabs/imprint/page.php:28 admin/tabs/imprint/page.php:30
|
786 |
+
#: admin/tabs/privacy-policy/page.php:27 admin/tabs/privacy-policy/page.php:29
|
787 |
+
#: admin/tabs/privacy-policy/page.php:31 admin/tabs/services/page.php:41
|
788 |
+
#: admin/tabs/services/page.php:43
|
789 |
+
#: admin/tabs/subject-access-request/page.php:73
|
790 |
+
#: admin/tabs/subject-access-request/page.php:76
|
791 |
+
#: admin/tabs/super-unsubscribe/page.php:143
|
792 |
+
#: admin/tabs/super-unsubscribe/page.php:146
|
793 |
+
msgid "Edit page"
|
794 |
+
msgstr ""
|
795 |
+
|
796 |
+
#: admin/tabs/imprint/page.php:40 admin/tabs/privacy-policy/page.php:47
|
797 |
+
msgid ""
|
798 |
+
"Note: In order to be able to reset or reload the text (eg: after changing "
|
799 |
+
"the language), highlight the text, delete it and click save. Thus, the text "
|
800 |
+
"is reloaded."
|
801 |
+
msgstr ""
|
802 |
+
|
803 |
+
#: admin/tabs/integrations/class-sp-dsgvo-integrations-tab.php:10
|
804 |
+
#: admin/tabs/integrations/page.php:1
|
805 |
+
msgid "Integrations"
|
806 |
+
msgstr ""
|
807 |
+
|
808 |
+
#: admin/tabs/integrations/page.php:14
|
809 |
+
msgid "No integrations installed"
|
810 |
+
msgstr ""
|
811 |
+
|
812 |
+
#: admin/tabs/privacy-policy/class-sp-dsgvo-privacy-policy-tab.php:11
|
813 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:51
|
814 |
+
msgid "Privacy Policy"
|
815 |
+
msgstr ""
|
816 |
+
|
817 |
+
#: admin/tabs/privacy-policy/page.php:3
|
818 |
+
msgid ""
|
819 |
+
"The shortcode <code>[privacy_policy]</code> generates a privacy page from "
|
820 |
+
"the input made under General Settings."
|
821 |
+
msgstr ""
|
822 |
+
|
823 |
+
#: admin/tabs/privacy-policy/page.php:5
|
824 |
+
msgid ""
|
825 |
+
"Initially, this text is filled with a template. The text blocks in the "
|
826 |
+
"square brackets ([]) are filled with the values that you entered in the "
|
827 |
+
"General Settings. You can customize the entire text to your requirements, as "
|
828 |
+
"well as delete passages if they do not apply to them."
|
829 |
+
msgstr ""
|
830 |
+
|
831 |
+
#: admin/tabs/privacy-policy/page.php:27
|
832 |
+
msgid "Create a page that uses the shortcode <code>[privacy_policy]</code>."
|
833 |
+
msgstr ""
|
834 |
+
|
835 |
+
#: admin/tabs/privacy-policy/page.php:29
|
836 |
+
msgid ""
|
837 |
+
"Attention: The shortcode <code>[privacy_policy]</code> was not found on the "
|
838 |
+
"page you selected."
|
839 |
+
msgstr ""
|
840 |
+
|
841 |
+
#: admin/tabs/privacy-policy/page.php:36
|
842 |
+
msgid "Show checkbox at WooCommerce checkout to confirm privacy policy"
|
843 |
+
msgstr ""
|
844 |
+
|
845 |
+
#: admin/tabs/services/class-sp-dsgvo-delete-service-action.php:22
|
846 |
+
msgid "Third-party service deleted by"
|
847 |
+
msgstr ""
|
848 |
+
|
849 |
+
#: admin/tabs/services/class-sp-dsgvo-services-tab.php:10
|
850 |
+
msgid "Privacy policy & Plugins"
|
851 |
+
msgstr ""
|
852 |
+
|
853 |
+
#: admin/tabs/services/page.php:1
|
854 |
+
msgid "Privacy: Settings and 3rd party plugins"
|
855 |
+
msgstr ""
|
856 |
+
|
857 |
+
#: admin/tabs/services/page.php:2
|
858 |
+
msgid ""
|
859 |
+
"All 3rd Party Plugins (Google Analytics, Facebook Pixel, ..) can be listed "
|
860 |
+
"here to give their users a selective opt-in / opt-out."
|
861 |
+
msgstr ""
|
862 |
+
|
863 |
+
#: admin/tabs/services/page.php:3
|
864 |
+
msgid ""
|
865 |
+
"With the shortcode <code>[display_services]</code> these services can then "
|
866 |
+
"be displayed to the user."
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
#: admin/tabs/services/page.php:12
|
870 |
+
msgid "Datenschutz Seite für ihre Benutzer"
|
871 |
+
msgstr ""
|
872 |
+
|
873 |
+
#: admin/tabs/services/page.php:29
|
874 |
+
msgid ""
|
875 |
+
"Specifies the page where users have the option to customize their privacy "
|
876 |
+
"settings (selective opt-in / opt-out)."
|
877 |
+
msgstr ""
|
878 |
+
|
879 |
+
#: admin/tabs/services/page.php:35
|
880 |
+
msgid ""
|
881 |
+
"Create a page that uses the shortcode <code>[user_privacy_settings_form]</"
|
882 |
+
"code>."
|
883 |
+
msgstr ""
|
884 |
+
|
885 |
+
#: admin/tabs/services/page.php:41
|
886 |
+
msgid ""
|
887 |
+
"Attention: The shortcode <code>[user_privacy_settings_form]</code> was not "
|
888 |
+
"found on the selected page. The form will not be displayed."
|
889 |
+
msgstr ""
|
890 |
+
|
891 |
+
#: admin/tabs/services/page.php:44
|
892 |
+
msgid ""
|
893 |
+
"The shortcode <code>[user_privacy_settings_form]</code> allows the user to "
|
894 |
+
"activate or deactivate services on the selected page."
|
895 |
+
msgstr ""
|
896 |
+
|
897 |
+
#: admin/tabs/services/page.php:58 admin/tabs/services/page.php:103
|
898 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:41
|
899 |
+
msgid "Slug"
|
900 |
+
msgstr ""
|
901 |
+
|
902 |
+
#: admin/tabs/services/page.php:59 admin/tabs/services/page.php:104
|
903 |
+
#: admin/tabs/services/page.php:125
|
904 |
+
#: includes/class-sp-dsgvo-data-collecter.php:66
|
905 |
+
#: includes/class-sp-dsgvo-data-collecter.php:71
|
906 |
+
#: includes/class-sp-dsgvo-data-collecter.php:78
|
907 |
+
#: includes/class-sp-dsgvo-data-collecter.php:129
|
908 |
+
#: includes/class-sp-dsgvo-data-collecter.php:143
|
909 |
+
#: includes/class-sp-dsgvo-data-collecter.php:166
|
910 |
+
msgid "Name"
|
911 |
+
msgstr ""
|
912 |
+
|
913 |
+
#: admin/tabs/services/page.php:60 admin/tabs/services/page.php:105
|
914 |
+
#: admin/tabs/services/page.php:132 templates/de_DE/emails/feedback.php:10
|
915 |
+
#: templates/en_EN/emails/feedback.php:10
|
916 |
+
#: templates/en_US/emails/feedback.php:10
|
917 |
+
msgid "Reason"
|
918 |
+
msgstr ""
|
919 |
+
|
920 |
+
#: admin/tabs/services/page.php:61 admin/tabs/services/page.php:106
|
921 |
+
#: admin/tabs/services/page.php:139
|
922 |
+
msgid "Terms Url"
|
923 |
+
msgstr ""
|
924 |
+
|
925 |
+
#: admin/tabs/services/page.php:63 admin/tabs/services/page.php:93
|
926 |
+
#: admin/tabs/services/page.php:108 admin/tabs/super-unsubscribe/page.php:71
|
927 |
+
#: admin/tabs/super-unsubscribe/page.php:84
|
928 |
+
#: admin/tabs/super-unsubscribe/page.php:97
|
929 |
+
#: admin/tabs/super-unsubscribe/page.php:110
|
930 |
+
msgid "Delete"
|
931 |
+
msgstr ""
|
932 |
+
|
933 |
+
#: admin/tabs/services/page.php:84
|
934 |
+
msgid "Terms & Conditions link"
|
935 |
+
msgstr ""
|
936 |
+
|
937 |
+
#: admin/tabs/services/page.php:88 admin/tabs/services/page.php:149
|
938 |
+
#: public/shortcodes/privacy-settings-form.php:19
|
939 |
+
msgid "Enabled"
|
940 |
+
msgstr ""
|
941 |
+
|
942 |
+
#: admin/tabs/services/page.php:89 admin/tabs/services/page.php:150
|
943 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:51
|
944 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:65
|
945 |
+
msgid "Disabled"
|
946 |
+
msgstr ""
|
947 |
+
|
948 |
+
#: admin/tabs/services/page.php:121 admin/tabs/services/page.php:158
|
949 |
+
msgid "Add service"
|
950 |
+
msgstr ""
|
951 |
+
|
952 |
+
#: admin/tabs/services/page.php:128
|
953 |
+
msgid "Service name"
|
954 |
+
msgstr ""
|
955 |
+
|
956 |
+
#: admin/tabs/services/page.php:135
|
957 |
+
#: public/shortcodes/privacy-settings-form.php:17
|
958 |
+
msgid "Reason for use"
|
959 |
+
msgstr ""
|
960 |
+
|
961 |
+
#: admin/tabs/services/page.php:142
|
962 |
+
msgid "The URL pointing to the terms of the service"
|
963 |
+
msgstr ""
|
964 |
+
|
965 |
+
#: admin/tabs/services/page.php:152
|
966 |
+
msgid "Indicates whether the service should be enabled by default or not."
|
967 |
+
msgstr ""
|
968 |
+
|
969 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:18
|
970 |
+
msgid "Plugin installed"
|
971 |
+
msgstr ""
|
972 |
+
|
973 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:36
|
974 |
+
#: admin/tabs/subject-access-request/class-sp-dsgvo-subject-access-request-tab.php:10
|
975 |
+
#: templates/de_DE/emails/subject-access-request.php:21
|
976 |
+
#: templates/en_EN/emails/subject-access-request.php:21
|
977 |
+
#: templates/en_US/emails/subject-access-request.php:21
|
978 |
+
msgid "Subject Access Request"
|
979 |
+
msgstr ""
|
980 |
+
|
981 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:41
|
982 |
+
msgid "User privacy settings"
|
983 |
+
msgstr ""
|
984 |
+
|
985 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:46
|
986 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:67
|
987 |
+
msgid "Terms & Conditions"
|
988 |
+
msgstr ""
|
989 |
+
|
990 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:56
|
991 |
+
#: templates/de_DE/emails/super-unsubscribe.php:20
|
992 |
+
#: templates/en_EN/emails/super-unsubscribe.php:20
|
993 |
+
#: templates/en_US/emails/super-unsubscribe.php:20
|
994 |
+
msgid "Delete Request"
|
995 |
+
msgstr ""
|
996 |
+
|
997 |
+
#: admin/tabs/setup/class-sp-dsgvo-create-page-action.php:72
|
998 |
+
msgid "Opt-out"
|
999 |
+
msgstr ""
|
1000 |
+
|
1001 |
+
#: admin/tabs/setup/class-sp-dsgvo-setup-tab.php:9 admin/tabs/setup/page.php:1
|
1002 |
+
msgid "Setup"
|
1003 |
+
msgstr ""
|
1004 |
+
|
1005 |
+
#: admin/tabs/subject-access-request/page.php:1
|
1006 |
+
msgid "Subject Access Requests"
|
1007 |
+
msgstr ""
|
1008 |
+
|
1009 |
+
#: admin/tabs/subject-access-request/page.php:2
|
1010 |
+
msgid ""
|
1011 |
+
"This feature allows users to request a digest of all data stored by you. "
|
1012 |
+
"<br> All data in your database is checked for confidential data and sent to "
|
1013 |
+
"the User by email."
|
1014 |
+
msgstr ""
|
1015 |
+
|
1016 |
+
#: admin/tabs/subject-access-request/page.php:12
|
1017 |
+
#: admin/tabs/super-unsubscribe/page.php:13
|
1018 |
+
msgid "Automatic processing"
|
1019 |
+
msgstr ""
|
1020 |
+
|
1021 |
+
#: admin/tabs/subject-access-request/page.php:17
|
1022 |
+
#: admin/tabs/super-unsubscribe/page.php:50
|
1023 |
+
msgid "none"
|
1024 |
+
msgstr ""
|
1025 |
+
|
1026 |
+
#: admin/tabs/subject-access-request/page.php:18
|
1027 |
+
msgid "day"
|
1028 |
+
msgstr ""
|
1029 |
+
|
1030 |
+
#: admin/tabs/subject-access-request/page.php:19
|
1031 |
+
#: admin/tabs/subject-access-request/page.php:20
|
1032 |
+
msgid "days"
|
1033 |
+
msgstr ""
|
1034 |
+
|
1035 |
+
#: admin/tabs/subject-access-request/page.php:21
|
1036 |
+
msgid "weeks"
|
1037 |
+
msgstr ""
|
1038 |
+
|
1039 |
+
#: admin/tabs/subject-access-request/page.php:24
|
1040 |
+
msgid ""
|
1041 |
+
"Requests will be automatically processed after the set time and sent to the "
|
1042 |
+
"user."
|
1043 |
+
msgstr ""
|
1044 |
+
|
1045 |
+
#: admin/tabs/subject-access-request/page.php:28
|
1046 |
+
#: admin/tabs/super-unsubscribe/page.php:26
|
1047 |
+
msgid "Email for new application:"
|
1048 |
+
msgstr ""
|
1049 |
+
|
1050 |
+
#: admin/tabs/subject-access-request/page.php:34
|
1051 |
+
#: admin/tabs/super-unsubscribe/page.php:32
|
1052 |
+
msgid "Send a notification for a new application to the admin email address."
|
1053 |
+
msgstr ""
|
1054 |
+
|
1055 |
+
#: admin/tabs/subject-access-request/page.php:38
|
1056 |
+
msgid "GDPR consent text:"
|
1057 |
+
msgstr ""
|
1058 |
+
|
1059 |
+
#: admin/tabs/subject-access-request/page.php:43
|
1060 |
+
msgid "The text to be displayed in the GDPR checkbox for data storage."
|
1061 |
+
msgstr ""
|
1062 |
+
|
1063 |
+
#: admin/tabs/subject-access-request/page.php:48
|
1064 |
+
msgid "Request page:"
|
1065 |
+
msgstr ""
|
1066 |
+
|
1067 |
+
#: admin/tabs/subject-access-request/page.php:62
|
1068 |
+
msgid ""
|
1069 |
+
"Specifies the page on which users have the option to request their data "
|
1070 |
+
"extract."
|
1071 |
+
msgstr ""
|
1072 |
+
|
1073 |
+
#: admin/tabs/subject-access-request/page.php:66
|
1074 |
+
msgid "Create a page using the shortcode <code>[sar_form]</code>."
|
1075 |
+
msgstr ""
|
1076 |
+
|
1077 |
+
#: admin/tabs/subject-access-request/page.php:72
|
1078 |
+
msgid ""
|
1079 |
+
"Attention: The shortcode <code>[sar_form]</code> of the selected page was "
|
1080 |
+
"not found. Thus, the user has no opportunity to request the data."
|
1081 |
+
msgstr ""
|
1082 |
+
|
1083 |
+
#: admin/tabs/subject-access-request/page.php:97
|
1084 |
+
#: admin/tabs/subject-access-request/page.php:146
|
1085 |
+
#: admin/tabs/super-unsubscribe/page.php:197
|
1086 |
+
#: admin/tabs/super-unsubscribe/page.php:264
|
1087 |
+
msgid "ID"
|
1088 |
+
msgstr ""
|
1089 |
+
|
1090 |
+
#: admin/tabs/subject-access-request/page.php:99
|
1091 |
+
#: admin/tabs/subject-access-request/page.php:147
|
1092 |
+
#: admin/tabs/subject-access-request/page.php:175
|
1093 |
+
#: admin/tabs/super-unsubscribe/page.php:199
|
1094 |
+
#: admin/tabs/super-unsubscribe/page.php:265
|
1095 |
+
#: admin/tabs/super-unsubscribe/page.php:295
|
1096 |
+
#: includes/class-sp-dsgvo-data-collecter.php:79
|
1097 |
+
#: includes/class-sp-dsgvo-data-collecter.php:130
|
1098 |
+
#: includes/class-sp-dsgvo-data-collecter.php:167
|
1099 |
+
#: includes/class-sp-dsgvo-data-collecter.php:370
|
1100 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:38
|
1101 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:39
|
1102 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:42
|
1103 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:43
|
1104 |
+
msgid "Email"
|
1105 |
+
msgstr ""
|
1106 |
+
|
1107 |
+
#: admin/tabs/subject-access-request/page.php:101
|
1108 |
+
#: admin/tabs/subject-access-request/page.php:148
|
1109 |
+
#: admin/tabs/subject-access-request/page.php:180
|
1110 |
+
#: admin/tabs/super-unsubscribe/page.php:201
|
1111 |
+
#: admin/tabs/super-unsubscribe/page.php:266
|
1112 |
+
#: admin/tabs/super-unsubscribe/page.php:300
|
1113 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:26
|
1114 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:27
|
1115 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:30
|
1116 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:31
|
1117 |
+
msgid "First name"
|
1118 |
+
msgstr ""
|
1119 |
+
|
1120 |
+
#: admin/tabs/subject-access-request/page.php:103
|
1121 |
+
#: admin/tabs/subject-access-request/page.php:149
|
1122 |
+
#: admin/tabs/subject-access-request/page.php:185
|
1123 |
+
#: admin/tabs/super-unsubscribe/page.php:203
|
1124 |
+
#: admin/tabs/super-unsubscribe/page.php:267
|
1125 |
+
#: admin/tabs/super-unsubscribe/page.php:305
|
1126 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:31
|
1127 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:32
|
1128 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:35
|
1129 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:36
|
1130 |
+
msgid "Last name"
|
1131 |
+
msgstr ""
|
1132 |
+
|
1133 |
+
#: admin/tabs/subject-access-request/page.php:105
|
1134 |
+
#: admin/tabs/subject-access-request/page.php:150
|
1135 |
+
#: admin/tabs/subject-access-request/page.php:190
|
1136 |
+
#: admin/tabs/super-unsubscribe/page.php:205
|
1137 |
+
#: admin/tabs/super-unsubscribe/page.php:268
|
1138 |
+
#: admin/tabs/super-unsubscribe/page.php:310
|
1139 |
+
msgid "GDPR approval"
|
1140 |
+
msgstr ""
|
1141 |
+
|
1142 |
+
#: admin/tabs/subject-access-request/page.php:107
|
1143 |
+
#: admin/tabs/subject-access-request/page.php:131
|
1144 |
+
#: admin/tabs/subject-access-request/page.php:151
|
1145 |
+
msgid "Run"
|
1146 |
+
msgstr ""
|
1147 |
+
|
1148 |
+
#: admin/tabs/subject-access-request/page.php:137
|
1149 |
+
msgid "No open requests"
|
1150 |
+
msgstr ""
|
1151 |
+
|
1152 |
+
#: admin/tabs/subject-access-request/page.php:159
|
1153 |
+
msgid "Run all"
|
1154 |
+
msgstr ""
|
1155 |
+
|
1156 |
+
#: admin/tabs/subject-access-request/page.php:171
|
1157 |
+
#: admin/tabs/super-unsubscribe/page.php:290
|
1158 |
+
msgid "Add entry"
|
1159 |
+
msgstr ""
|
1160 |
+
|
1161 |
+
#: admin/tabs/subject-access-request/page.php:195
|
1162 |
+
msgid "Run now"
|
1163 |
+
msgstr ""
|
1164 |
+
|
1165 |
+
#: admin/tabs/subject-access-request/page.php:200
|
1166 |
+
msgid "Show email"
|
1167 |
+
msgstr ""
|
1168 |
+
|
1169 |
+
#: admin/tabs/subject-access-request/page.php:207
|
1170 |
+
#: admin/tabs/super-unsubscribe/page.php:322
|
1171 |
+
msgid "Add"
|
1172 |
+
msgstr ""
|
1173 |
+
|
1174 |
+
#: admin/tabs/super-unsubscribe/class-sp-dsgvo-super-unsubscribe-tab.php:9
|
1175 |
+
msgid "Delete request"
|
1176 |
+
msgstr ""
|
1177 |
+
|
1178 |
+
#: admin/tabs/super-unsubscribe/page.php:1
|
1179 |
+
msgid "Delete Requests"
|
1180 |
+
msgstr ""
|
1181 |
+
|
1182 |
+
#: admin/tabs/super-unsubscribe/page.php:2
|
1183 |
+
msgid ""
|
1184 |
+
"Here you will find all deletion requests that users have made on their site. "
|
1185 |
+
"With a click on \"delete now \" you delete all stored data of the user on "
|
1186 |
+
"their side including Plugins."
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: admin/tabs/super-unsubscribe/page.php:17
|
1190 |
+
msgid "Immediately on request"
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: admin/tabs/super-unsubscribe/page.php:23
|
1194 |
+
msgid "If enabled, delete requests are performed immediately."
|
1195 |
+
msgstr ""
|
1196 |
+
|
1197 |
+
#: admin/tabs/super-unsubscribe/page.php:36
|
1198 |
+
msgid "GDPR confirmation text:"
|
1199 |
+
msgstr ""
|
1200 |
+
|
1201 |
+
#: admin/tabs/super-unsubscribe/page.php:41
|
1202 |
+
msgid "The text to be displayed in the GDPR checkbox for data deletion."
|
1203 |
+
msgstr ""
|
1204 |
+
|
1205 |
+
#: admin/tabs/super-unsubscribe/page.php:45
|
1206 |
+
msgid "After period"
|
1207 |
+
msgstr ""
|
1208 |
+
|
1209 |
+
#: admin/tabs/super-unsubscribe/page.php:51
|
1210 |
+
msgid "month"
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: admin/tabs/super-unsubscribe/page.php:52
|
1214 |
+
#: admin/tabs/super-unsubscribe/page.php:53
|
1215 |
+
msgid "months"
|
1216 |
+
msgstr ""
|
1217 |
+
|
1218 |
+
#: admin/tabs/super-unsubscribe/page.php:54
|
1219 |
+
msgid "year"
|
1220 |
+
msgstr ""
|
1221 |
+
|
1222 |
+
#: admin/tabs/super-unsubscribe/page.php:55
|
1223 |
+
#: admin/tabs/super-unsubscribe/page.php:56
|
1224 |
+
msgid "years"
|
1225 |
+
msgstr ""
|
1226 |
+
|
1227 |
+
#: admin/tabs/super-unsubscribe/page.php:59
|
1228 |
+
msgid ""
|
1229 |
+
"Data is automatically deleted after the set time. Ensures the maximum "
|
1230 |
+
"retention time."
|
1231 |
+
msgstr ""
|
1232 |
+
|
1233 |
+
#: admin/tabs/super-unsubscribe/page.php:64
|
1234 |
+
msgid "WooCommerce Data"
|
1235 |
+
msgstr ""
|
1236 |
+
|
1237 |
+
#: admin/tabs/super-unsubscribe/page.php:69
|
1238 |
+
#: admin/tabs/super-unsubscribe/page.php:82
|
1239 |
+
#: admin/tabs/super-unsubscribe/page.php:95
|
1240 |
+
#: admin/tabs/super-unsubscribe/page.php:108
|
1241 |
+
msgid "No action"
|
1242 |
+
msgstr ""
|
1243 |
+
|
1244 |
+
#: admin/tabs/super-unsubscribe/page.php:70
|
1245 |
+
#: admin/tabs/super-unsubscribe/page.php:83
|
1246 |
+
#: admin/tabs/super-unsubscribe/page.php:96
|
1247 |
+
#: admin/tabs/super-unsubscribe/page.php:109
|
1248 |
+
msgid "Pseudonymise"
|
1249 |
+
msgstr ""
|
1250 |
+
|
1251 |
+
#: admin/tabs/super-unsubscribe/page.php:74
|
1252 |
+
msgid "Specifies what should happen to personal data of orders."
|
1253 |
+
msgstr ""
|
1254 |
+
|
1255 |
+
#: admin/tabs/super-unsubscribe/page.php:77
|
1256 |
+
msgid "bbPress Data"
|
1257 |
+
msgstr ""
|
1258 |
+
|
1259 |
+
#: admin/tabs/super-unsubscribe/page.php:87
|
1260 |
+
msgid "Specifies what should happen with forum entries."
|
1261 |
+
msgstr ""
|
1262 |
+
|
1263 |
+
#: admin/tabs/super-unsubscribe/page.php:90
|
1264 |
+
msgid "buddyPress Data"
|
1265 |
+
msgstr ""
|
1266 |
+
|
1267 |
+
#: admin/tabs/super-unsubscribe/page.php:100
|
1268 |
+
msgid "Specifies what should happen with PNs and extended profile fields."
|
1269 |
+
msgstr ""
|
1270 |
+
|
1271 |
+
#: admin/tabs/super-unsubscribe/page.php:103
|
1272 |
+
msgid "CF7/Flamingo Data"
|
1273 |
+
msgstr ""
|
1274 |
+
|
1275 |
+
#: admin/tabs/super-unsubscribe/page.php:113
|
1276 |
+
msgid "Specifies what to do with contact entries and messages."
|
1277 |
+
msgstr ""
|
1278 |
+
|
1279 |
+
#: admin/tabs/super-unsubscribe/page.php:118
|
1280 |
+
msgid "Page for deletion request:"
|
1281 |
+
msgstr ""
|
1282 |
+
|
1283 |
+
#: admin/tabs/super-unsubscribe/page.php:136
|
1284 |
+
msgid "Create a page using the shortcode <code>[unsubscribe_form]</code>."
|
1285 |
+
msgstr ""
|
1286 |
+
|
1287 |
+
#: admin/tabs/super-unsubscribe/page.php:142
|
1288 |
+
msgid ""
|
1289 |
+
"Attention: The shortcode <code>[unsubscribe_form]</code> that should be on "
|
1290 |
+
"the selected page was not found. Thus, the user has no opportunity to ask a "
|
1291 |
+
"deletion request."
|
1292 |
+
msgstr ""
|
1293 |
+
|
1294 |
+
#: admin/tabs/super-unsubscribe/page.php:178
|
1295 |
+
msgid "Pending"
|
1296 |
+
msgstr ""
|
1297 |
+
|
1298 |
+
#: admin/tabs/super-unsubscribe/page.php:185
|
1299 |
+
msgid "Done"
|
1300 |
+
msgstr ""
|
1301 |
+
|
1302 |
+
#: admin/tabs/super-unsubscribe/page.php:207
|
1303 |
+
#: admin/tabs/super-unsubscribe/page.php:269
|
1304 |
+
msgid "State"
|
1305 |
+
msgstr ""
|
1306 |
+
|
1307 |
+
#: admin/tabs/super-unsubscribe/page.php:209
|
1308 |
+
#: admin/tabs/super-unsubscribe/page.php:238
|
1309 |
+
#: admin/tabs/super-unsubscribe/page.php:241
|
1310 |
+
#: admin/tabs/super-unsubscribe/page.php:270
|
1311 |
+
msgid "Delete now"
|
1312 |
+
msgstr ""
|
1313 |
+
|
1314 |
+
#: admin/tabs/super-unsubscribe/page.php:251
|
1315 |
+
msgid "No requests done"
|
1316 |
+
msgstr ""
|
1317 |
+
|
1318 |
+
#: admin/tabs/super-unsubscribe/page.php:253
|
1319 |
+
msgid "No pending requests"
|
1320 |
+
msgstr ""
|
1321 |
+
|
1322 |
+
#: admin/tabs/super-unsubscribe/page.php:278
|
1323 |
+
msgid "Delete all"
|
1324 |
+
msgstr ""
|
1325 |
+
|
1326 |
+
#: admin/tabs/super-unsubscribe/page.php:291
|
1327 |
+
msgid ""
|
1328 |
+
"ATTENTION: Executing this action deletes the account (except administrators)."
|
1329 |
+
msgstr ""
|
1330 |
+
|
1331 |
+
#: admin/tabs/super-unsubscribe/page.php:315
|
1332 |
+
msgid "Run without user confirmation"
|
1333 |
+
msgstr ""
|
1334 |
+
|
1335 |
+
#: includes/class-sp-dsgvo-ajax-action.php:93
|
1336 |
+
msgid "Public property $action not provied"
|
1337 |
+
msgstr ""
|
1338 |
+
|
1339 |
+
#: includes/class-sp-dsgvo-cron.php:66
|
1340 |
+
msgid "All"
|
1341 |
+
msgstr ""
|
1342 |
+
|
1343 |
+
#: includes/class-sp-dsgvo-cron.php:66
|
1344 |
+
msgid "Minutes"
|
1345 |
+
msgstr ""
|
1346 |
+
|
1347 |
+
#: includes/class-sp-dsgvo-data-collecter.php:77
|
1348 |
+
msgid "Login"
|
1349 |
+
msgstr ""
|
1350 |
+
|
1351 |
+
#: includes/class-sp-dsgvo-data-collecter.php:80
|
1352 |
+
#: includes/class-sp-dsgvo-data-collecter.php:82
|
1353 |
+
#: includes/class-sp-dsgvo-data-collecter.php:131
|
1354 |
+
#: includes/class-sp-dsgvo-data-collecter.php:144
|
1355 |
+
#: includes/class-sp-dsgvo-data-collecter.php:168
|
1356 |
+
#: includes/class-sp-dsgvo-data-collecter.php:393
|
1357 |
+
msgid "Url"
|
1358 |
+
msgstr ""
|
1359 |
+
|
1360 |
+
#: includes/class-sp-dsgvo-data-collecter.php:81
|
1361 |
+
msgid "Display Name"
|
1362 |
+
msgstr ""
|
1363 |
+
|
1364 |
+
#: includes/class-sp-dsgvo-data-collecter.php:105
|
1365 |
+
msgid "Advanced"
|
1366 |
+
msgstr ""
|
1367 |
+
|
1368 |
+
#: includes/class-sp-dsgvo-data-collecter.php:132
|
1369 |
+
#: includes/class-sp-dsgvo-data-collecter.php:169
|
1370 |
+
msgid "IP Address"
|
1371 |
+
msgstr ""
|
1372 |
+
|
1373 |
+
#: includes/class-sp-dsgvo-data-collecter.php:133
|
1374 |
+
#: includes/class-sp-dsgvo-data-collecter.php:170
|
1375 |
+
msgid "Comment"
|
1376 |
+
msgstr ""
|
1377 |
+
|
1378 |
+
#: includes/class-sp-dsgvo-data-collecter.php:142
|
1379 |
+
msgid "User name"
|
1380 |
+
msgstr ""
|
1381 |
+
|
1382 |
+
#: includes/class-sp-dsgvo-data-collecter.php:145
|
1383 |
+
msgid "Display name"
|
1384 |
+
msgstr ""
|
1385 |
+
|
1386 |
+
#: includes/class-sp-dsgvo-data-collecter.php:376
|
1387 |
+
msgid "ZIP Code"
|
1388 |
+
msgstr ""
|
1389 |
+
|
1390 |
+
#: includes/class-sp-dsgvo-data-collecter.php:383
|
1391 |
+
msgid "Phone number"
|
1392 |
+
msgstr ""
|
1393 |
+
|
1394 |
+
#: includes/class-sp-dsgvo-data-collecter.php:401
|
1395 |
+
msgid "Address"
|
1396 |
+
msgstr ""
|
1397 |
+
|
1398 |
+
#: includes/class-sp-dsgvo-mail.php:198 includes/class-sp-dsgvo-mail.php:205
|
1399 |
+
msgid "Attachment not found at"
|
1400 |
+
msgstr ""
|
1401 |
+
|
1402 |
+
#: includes/class-sp-dsgvo-mail.php:223 includes/class-sp-dsgvo-mail.php:265
|
1403 |
+
msgid "Template file not found"
|
1404 |
+
msgstr ""
|
1405 |
+
|
1406 |
+
#: includes/class-sp-dsgvo-mail.php:377
|
1407 |
+
msgid "You must set at least 1 recipient"
|
1408 |
+
msgstr ""
|
1409 |
+
|
1410 |
+
#: includes/class-sp-dsgvo-mail.php:381
|
1411 |
+
msgid "You must set a template"
|
1412 |
+
msgstr ""
|
1413 |
+
|
1414 |
+
#: includes/class-sp-dsgvo-settings.php:43 public/class-sp-dsgvo-public.php:323
|
1415 |
+
msgid "I confirm"
|
1416 |
+
msgstr ""
|
1417 |
+
|
1418 |
+
#: includes/class-sp-dsgvo-settings.php:44 public/class-sp-dsgvo-public.php:321
|
1419 |
+
msgid "The confirmation to GDPR is mandatory."
|
1420 |
+
msgstr ""
|
1421 |
+
|
1422 |
+
#: includes/class-sp-dsgvo-settings.php:45 public/class-sp-dsgvo-public.php:322
|
1423 |
+
msgid ""
|
1424 |
+
"This form stores your name, email address and content so that we can "
|
1425 |
+
"evaluate the comments on our site. For more information, visit our Privacy "
|
1426 |
+
"Policy page."
|
1427 |
+
msgstr ""
|
1428 |
+
|
1429 |
+
#: includes/class-sp-dsgvo-settings.php:70
|
1430 |
+
#: includes/class-sp-dsgvo-settings.php:112
|
1431 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:46
|
1432 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:50
|
1433 |
+
msgid ""
|
1434 |
+
"I agree to the storage of the data for processing within the meaning of the "
|
1435 |
+
"GDPR."
|
1436 |
+
msgstr ""
|
1437 |
+
|
1438 |
+
#: includes/class-sp-dsgvo-settings.php:81
|
1439 |
+
#: includes/class-sp-dsgvo-settings.php:236
|
1440 |
+
msgid "We use cookies to analyze visitor behavior."
|
1441 |
+
msgstr ""
|
1442 |
+
|
1443 |
+
#: includes/class-sp-dsgvo-settings.php:88
|
1444 |
+
#: includes/class-sp-dsgvo-settings.php:243
|
1445 |
+
msgid "Google Analytics is used to analyze website traffic."
|
1446 |
+
msgstr ""
|
1447 |
+
|
1448 |
+
#: includes/class-sp-dsgvo-settings.php:95
|
1449 |
+
#: includes/class-sp-dsgvo-settings.php:250
|
1450 |
+
msgid "Facebook Pixel is used to analyze visitor behavior."
|
1451 |
+
msgstr ""
|
1452 |
+
|
1453 |
+
#: includes/class-sp-dsgvo-settings.php:119
|
1454 |
+
msgid ""
|
1455 |
+
"This website uses cookies. By clicking 'accept' you are providing consent to "
|
1456 |
+
"us using cookies on this browser."
|
1457 |
+
msgstr ""
|
1458 |
+
|
1459 |
+
#: includes/class-sp-dsgvo-settings.php:127
|
1460 |
+
#: public/class-sp-dsgvo-public.php:159
|
1461 |
+
msgid ""
|
1462 |
+
"We use cookies to give you the best user experience. If you continue to use "
|
1463 |
+
"this site, we assume that you agree."
|
1464 |
+
msgstr ""
|
1465 |
+
|
1466 |
+
#: includes/class-sp-dsgvo-settings.php:129
|
1467 |
+
msgid "OK"
|
1468 |
+
msgstr ""
|
1469 |
+
|
1470 |
+
#: includes/class-sp-dsgvo-settings.php:132
|
1471 |
+
msgid "Deny"
|
1472 |
+
msgstr ""
|
1473 |
+
|
1474 |
+
#: includes/class-sp-dsgvo-settings.php:135
|
1475 |
+
msgid "More information"
|
1476 |
+
msgstr ""
|
1477 |
+
|
1478 |
+
#: includes/cron/do-delete-data-request.php:15
|
1479 |
+
msgid "DoDSGVODeleteDataRequest with days:"
|
1480 |
+
msgstr ""
|
1481 |
+
|
1482 |
+
#: includes/cron/do-delete-data-request.php:15
|
1483 |
+
msgid "and intval:"
|
1484 |
+
msgstr ""
|
1485 |
+
|
1486 |
+
#: includes/cron/do-delete-data-request.php:20
|
1487 |
+
msgid "doing sar"
|
1488 |
+
msgstr ""
|
1489 |
+
|
1490 |
+
#: includes/cron/do-delete-data-request.php:20
|
1491 |
+
msgid "with intval"
|
1492 |
+
msgstr ""
|
1493 |
+
|
1494 |
+
#: includes/cron/do-delete-data-request.php:27
|
1495 |
+
msgid "sar"
|
1496 |
+
msgstr ""
|
1497 |
+
|
1498 |
+
#: includes/cron/do-delete-data-request.php:27
|
1499 |
+
msgid "has not the date to process"
|
1500 |
+
msgstr ""
|
1501 |
+
|
1502 |
+
#: includes/html/index-footer.php:6
|
1503 |
+
msgid "Downloaded from"
|
1504 |
+
msgstr ""
|
1505 |
+
|
1506 |
+
#: includes/html/index-footer.php:6
|
1507 |
+
msgid "on"
|
1508 |
+
msgstr ""
|
1509 |
+
|
1510 |
+
#: includes/html/index-header.php:5 includes/html/index-header.php:412
|
1511 |
+
msgid "All data relating to"
|
1512 |
+
msgstr ""
|
1513 |
+
|
1514 |
+
#: includes/html/index-header.php:413
|
1515 |
+
msgid "Objects"
|
1516 |
+
msgstr ""
|
1517 |
+
|
1518 |
+
#: includes/html/index-header.php:413
|
1519 |
+
msgid "Generated on"
|
1520 |
+
msgstr ""
|
1521 |
+
|
1522 |
+
#: includes/html/index-header.php:426
|
1523 |
+
msgid "Type"
|
1524 |
+
msgstr ""
|
1525 |
+
|
1526 |
+
#: includes/html/index-header.php:427
|
1527 |
+
msgid "Data"
|
1528 |
+
msgstr ""
|
1529 |
+
|
1530 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Extension.php:64
|
1531 |
+
msgid "An update is available:"
|
1532 |
+
msgstr ""
|
1533 |
+
|
1534 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Extension.php:67
|
1535 |
+
msgid "No updates found."
|
1536 |
+
msgstr ""
|
1537 |
+
|
1538 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Extension.php:77
|
1539 |
+
msgid "Access denied"
|
1540 |
+
msgstr ""
|
1541 |
+
|
1542 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:38
|
1543 |
+
msgid "Configuration"
|
1544 |
+
msgstr ""
|
1545 |
+
|
1546 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:42
|
1547 |
+
msgid "DB option"
|
1548 |
+
msgstr ""
|
1549 |
+
|
1550 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:45
|
1551 |
+
msgid "Metadata URL"
|
1552 |
+
msgstr ""
|
1553 |
+
|
1554 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:49
|
1555 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:51
|
1556 |
+
msgid "Automatic checks"
|
1557 |
+
msgstr ""
|
1558 |
+
|
1559 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:49
|
1560 |
+
msgid "Every"
|
1561 |
+
msgstr ""
|
1562 |
+
|
1563 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:49
|
1564 |
+
msgid "hours"
|
1565 |
+
msgstr ""
|
1566 |
+
|
1567 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:57
|
1568 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:65
|
1569 |
+
msgid "Throttling"
|
1570 |
+
msgstr ""
|
1571 |
+
|
1572 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:59
|
1573 |
+
#, php-format
|
1574 |
+
msgid ""
|
1575 |
+
"Enabled. If an update is already available, check for updates every %1$d "
|
1576 |
+
"hours instead of every %2$d hours."
|
1577 |
+
msgstr ""
|
1578 |
+
|
1579 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:83
|
1580 |
+
msgid "Status"
|
1581 |
+
msgstr ""
|
1582 |
+
|
1583 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:89
|
1584 |
+
msgid "Check Now"
|
1585 |
+
msgstr ""
|
1586 |
+
|
1587 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:98
|
1588 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:100
|
1589 |
+
msgid "Last check"
|
1590 |
+
msgstr ""
|
1591 |
+
|
1592 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:104
|
1593 |
+
msgid "Next automatic check"
|
1594 |
+
msgstr ""
|
1595 |
+
|
1596 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:107
|
1597 |
+
msgid "Checked version"
|
1598 |
+
msgstr ""
|
1599 |
+
|
1600 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:108
|
1601 |
+
msgid "Cached update"
|
1602 |
+
msgstr ""
|
1603 |
+
|
1604 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:110
|
1605 |
+
msgid "Update checker class"
|
1606 |
+
msgstr ""
|
1607 |
+
|
1608 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:117
|
1609 |
+
msgid "An Update Is Available"
|
1610 |
+
msgstr ""
|
1611 |
+
|
1612 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:127
|
1613 |
+
msgid "No updates currently available"
|
1614 |
+
msgstr ""
|
1615 |
+
|
1616 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/Panel.php:137
|
1617 |
+
msgid "Never"
|
1618 |
+
msgstr ""
|
1619 |
+
|
1620 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/PluginExtension.php:24
|
1621 |
+
msgid "Successfully retrieved plugin info from the metadata URL:"
|
1622 |
+
msgstr ""
|
1623 |
+
|
1624 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/PluginExtension.php:27
|
1625 |
+
msgid "Failed to retrieve plugin info from the metadata URL."
|
1626 |
+
msgstr ""
|
1627 |
+
|
1628 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/PluginPanel.php:20
|
1629 |
+
msgid "Request Info"
|
1630 |
+
msgstr ""
|
1631 |
+
|
1632 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/DebugBar/ThemePanel.php:12
|
1633 |
+
msgid "Theme directory"
|
1634 |
+
msgstr ""
|
1635 |
+
|
1636 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/Info.php:74
|
1637 |
+
msgid ""
|
1638 |
+
"The plugin metadata file does not contain the required 'name' and/or "
|
1639 |
+
"'version' keys."
|
1640 |
+
msgstr ""
|
1641 |
+
|
1642 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:47
|
1643 |
+
#, php-format
|
1644 |
+
msgid "Plugin slug \"%s\" is already in use by %s. Slugs must be unique."
|
1645 |
+
msgstr ""
|
1646 |
+
|
1647 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:189
|
1648 |
+
#, php-format
|
1649 |
+
msgid ""
|
1650 |
+
"Can't to read the Version header for '%s'. The filename is incorrect or is "
|
1651 |
+
"not a plugin."
|
1652 |
+
msgstr ""
|
1653 |
+
|
1654 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:208
|
1655 |
+
#, php-format
|
1656 |
+
msgid "Can't to read the plugin header for '%s'. The file does not exist."
|
1657 |
+
msgstr ""
|
1658 |
+
|
1659 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:392
|
1660 |
+
msgid "Check for updates"
|
1661 |
+
msgstr ""
|
1662 |
+
|
1663 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:429
|
1664 |
+
msgid "View details"
|
1665 |
+
msgstr ""
|
1666 |
+
|
1667 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:452
|
1668 |
+
#, php-format
|
1669 |
+
msgid "More information about %s"
|
1670 |
+
msgstr ""
|
1671 |
+
|
1672 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Plugin/UpdateChecker.php:518
|
1673 |
+
#, php-format
|
1674 |
+
msgid "Unknown update checker status \"%s\""
|
1675 |
+
msgstr ""
|
1676 |
+
|
1677 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Theme/Update.php:68
|
1678 |
+
#, php-format
|
1679 |
+
msgid "The theme metadata is missing the required \"%s\" key."
|
1680 |
+
msgstr ""
|
1681 |
+
|
1682 |
+
#: includes/lib/plugin-update-checker/Puc/v4p3/Vcs/PluginUpdateChecker.php:86
|
1683 |
+
msgid "There is no changelog available."
|
1684 |
+
msgstr ""
|
1685 |
+
|
1686 |
+
#: includes/models/subject-access-request.php:69
|
1687 |
+
#: includes/models/subject-access-request.php:73
|
1688 |
+
msgid "Subject access request"
|
1689 |
+
msgstr ""
|
1690 |
+
|
1691 |
+
#: includes/models/subject-access-request.php:181
|
1692 |
+
#: includes/models/subject-access-request.php:182
|
1693 |
+
#: includes/models/subject-access-request.php:184
|
1694 |
+
msgid "All data of"
|
1695 |
+
msgstr ""
|
1696 |
+
|
1697 |
+
#: includes/models/subject-access-request.php:184
|
1698 |
+
msgid "Date"
|
1699 |
+
msgstr ""
|
1700 |
+
|
1701 |
+
#: includes/models/subject-access-request.php:184
|
1702 |
+
msgid "Source"
|
1703 |
+
msgstr ""
|
1704 |
+
|
1705 |
+
#: includes/models/unsubscriber.php:100
|
1706 |
+
msgid "Confirmation of delete request"
|
1707 |
+
msgstr ""
|
1708 |
+
|
1709 |
+
#: public/actions/user-permissions.php:24
|
1710 |
+
msgid "updated their user permissions"
|
1711 |
+
msgstr ""
|
1712 |
+
|
1713 |
+
#: public/class-sp-dsgvo-public.php:165
|
1714 |
+
msgid "Ok"
|
1715 |
+
msgstr ""
|
1716 |
+
|
1717 |
+
#: public/class-sp-dsgvo-public.php:387
|
1718 |
+
msgid "Privacy Policy: "
|
1719 |
+
msgstr ""
|
1720 |
+
|
1721 |
+
#: public/class-sp-dsgvo-public.php:391
|
1722 |
+
msgid "I have read and accepted the PrivacyPolicyPlaceholder."
|
1723 |
+
msgstr ""
|
1724 |
+
|
1725 |
+
#: public/class-sp-dsgvo-public.php:405
|
1726 |
+
msgid "I have read and accepted the Privacy Policy."
|
1727 |
+
msgstr ""
|
1728 |
+
|
1729 |
+
#: public/class-sp-dsgvo-public.php:424
|
1730 |
+
msgid "Consent to the privacy policy is mandatory."
|
1731 |
+
msgstr ""
|
1732 |
+
|
1733 |
+
#: public/class-sp-dsgvo-public.php:430
|
1734 |
+
msgid "Privacy Policy accepted"
|
1735 |
+
msgstr ""
|
1736 |
+
|
1737 |
+
#: public/shortcodes/decline-permission.php:5
|
1738 |
+
msgid "Decline Terms & Conditions"
|
1739 |
+
msgstr ""
|
1740 |
+
|
1741 |
+
#: public/shortcodes/display-services.php:13
|
1742 |
+
msgid "Open Terms of service"
|
1743 |
+
msgstr ""
|
1744 |
+
|
1745 |
+
#: public/shortcodes/explicit-permission.php:6
|
1746 |
+
msgid "Accepted"
|
1747 |
+
msgstr ""
|
1748 |
+
|
1749 |
+
#: public/shortcodes/explicit-permission.php:7
|
1750 |
+
msgid "Declined"
|
1751 |
+
msgstr ""
|
1752 |
+
|
1753 |
+
#: public/shortcodes/imprint.php:10
|
1754 |
+
msgid "imprint_text"
|
1755 |
+
msgstr ""
|
1756 |
+
"[company_name]\n"
|
1757 |
+
"Owner: [company_owner]\n"
|
1758 |
+
"[adress_street]\n"
|
1759 |
+
"[adress_zip_location]\n"
|
1760 |
+
"\n"
|
1761 |
+
"Management: [company_law_person]\n"
|
1762 |
+
"Stockholder: [company_management]\n"
|
1763 |
+
"\n"
|
1764 |
+
"Telephone number: [comm_phone]\n"
|
1765 |
+
"E-Mail address: [comm_email]\n"
|
1766 |
+
"\n"
|
1767 |
+
"Register Court & Register Number: [company_register_court], "
|
1768 |
+
"[company_register_nr]\n"
|
1769 |
+
"\n"
|
1770 |
+
"Sales tax identification number: [company_uid]\n"
|
1771 |
+
"\n"
|
1772 |
+
"Responsible for content: [content_responsible]\n"
|
1773 |
+
"\n"
|
1774 |
+
"European Commission Online Dispute Resolution (OS) platform for consumers: "
|
1775 |
+
"<a href\"https://ec.europa.eu/consumers/odr/\" target=\"_blank\">https://ec."
|
1776 |
+
"europa.eu/consumers/odr/</a>. We are not willing and obliged to participate "
|
1777 |
+
"in a dispute settlement procedure before a consumer arbitration board."
|
1778 |
+
|
1779 |
+
#: public/shortcodes/privacy-settings-form.php:16
|
1780 |
+
msgid "Service"
|
1781 |
+
msgstr ""
|
1782 |
+
|
1783 |
+
#: public/shortcodes/privacy-settings-form.php:18
|
1784 |
+
#: public/shortcodes/privacy-settings-form.php:26
|
1785 |
+
msgid "Terms"
|
1786 |
+
msgstr ""
|
1787 |
+
|
1788 |
+
#: public/shortcodes/privacy-settings-form.php:30
|
1789 |
+
msgid "Yes"
|
1790 |
+
msgstr ""
|
1791 |
+
|
1792 |
+
#: public/shortcodes/privacy-settings-form.php:33
|
1793 |
+
msgid "No"
|
1794 |
+
msgstr ""
|
1795 |
+
|
1796 |
+
#: public/shortcodes/privacy-settings-form.php:42
|
1797 |
+
msgid ""
|
1798 |
+
"Since you are not logged in we save these settings in a cookie. These "
|
1799 |
+
"settings are thus only active on this PC."
|
1800 |
+
msgstr ""
|
1801 |
+
|
1802 |
+
#: public/shortcodes/privacy-settings-form.php:46
|
1803 |
+
msgid "Save"
|
1804 |
+
msgstr ""
|
1805 |
+
|
1806 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:11
|
1807 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php:10
|
1808 |
+
msgid "No token provided."
|
1809 |
+
msgstr ""
|
1810 |
+
|
1811 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:19
|
1812 |
+
msgid "Bad token provided."
|
1813 |
+
msgstr ""
|
1814 |
+
|
1815 |
+
#: public/shortcodes/subject-access-request/download-subject-access-request.php:71
|
1816 |
+
msgid "Error"
|
1817 |
+
msgstr ""
|
1818 |
+
|
1819 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:9
|
1820 |
+
msgid "Please enter an email address"
|
1821 |
+
msgstr ""
|
1822 |
+
|
1823 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:13
|
1824 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:13
|
1825 |
+
msgid "The GDPR approval is mandatory."
|
1826 |
+
msgstr ""
|
1827 |
+
|
1828 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:28
|
1829 |
+
msgid "New subject access request"
|
1830 |
+
msgstr ""
|
1831 |
+
|
1832 |
+
#: public/shortcodes/subject-access-request/subject-access-request-action.php:29
|
1833 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:31
|
1834 |
+
msgid "A new subject access request from "
|
1835 |
+
msgstr ""
|
1836 |
+
|
1837 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:18
|
1838 |
+
msgid "Your request has been created"
|
1839 |
+
msgstr ""
|
1840 |
+
|
1841 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:18
|
1842 |
+
msgid ""
|
1843 |
+
"You will receive an email from us with a current extract of your data stored "
|
1844 |
+
"with us."
|
1845 |
+
msgstr ""
|
1846 |
+
|
1847 |
+
#: public/shortcodes/subject-access-request/subject-access-request.php:51
|
1848 |
+
msgid "Create request"
|
1849 |
+
msgstr ""
|
1850 |
+
|
1851 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php:18
|
1852 |
+
msgid "Bad token provided"
|
1853 |
+
msgstr ""
|
1854 |
+
|
1855 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:9
|
1856 |
+
msgid "Please enter an email address."
|
1857 |
+
msgstr ""
|
1858 |
+
|
1859 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form-action.php:30
|
1860 |
+
msgid "New delete request"
|
1861 |
+
msgstr ""
|
1862 |
+
|
1863 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:19
|
1864 |
+
msgid "Request sent successfully. You will receive an email in a few minutes."
|
1865 |
+
msgstr ""
|
1866 |
+
|
1867 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:23
|
1868 |
+
msgid "Request successfully completed. Your data has been completely deleted."
|
1869 |
+
msgstr ""
|
1870 |
+
|
1871 |
+
#: public/shortcodes/super-unsubscribe/unsubscribe-form.php:55
|
1872 |
+
msgid "Create delete request"
|
1873 |
+
msgstr ""
|
1874 |
+
|
1875 |
+
#: templates/de_DE/emails/feedback.php:1 templates/en_EN/emails/feedback.php:1
|
1876 |
+
#: templates/en_US/emails/feedback.php:1
|
1877 |
+
msgid "WP DSGVO Tools Feedback"
|
1878 |
+
msgstr ""
|
1879 |
+
|
1880 |
+
#: templates/de_DE/emails/feedback.php:4 templates/en_EN/emails/feedback.php:4
|
1881 |
+
#: templates/en_US/emails/feedback.php:4
|
1882 |
+
msgid "From"
|
1883 |
+
msgstr ""
|
1884 |
+
|
1885 |
+
#: templates/de_DE/emails/feedback.php:15
|
1886 |
+
#: templates/en_EN/emails/feedback.php:15
|
1887 |
+
#: templates/en_US/emails/feedback.php:15
|
1888 |
+
msgid "Message"
|
1889 |
+
msgstr ""
|
1890 |
+
|
1891 |
+
#: templates/de_DE/emails/subject-access-request.php:46
|
1892 |
+
#: templates/en_EN/emails/subject-access-request.php:46
|
1893 |
+
#: templates/en_US/emails/subject-access-request.php:46
|
1894 |
+
msgid ""
|
1895 |
+
"We have received your subject access request. A PDF document containing all "
|
1896 |
+
"the data we have stored about you is attached.\n"
|
1897 |
+
"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Amount of personal data found"
|
1898 |
+
msgstr ""
|
1899 |
+
|
1900 |
+
#: templates/de_DE/emails/subject-access-request.php:49
|
1901 |
+
#: templates/en_EN/emails/subject-access-request.php:49
|
1902 |
+
#: templates/en_US/emails/subject-access-request.php:49
|
1903 |
+
msgid "Here you see a summary about this data"
|
1904 |
+
msgstr ""
|
1905 |
+
|
1906 |
+
#: templates/de_DE/emails/subject-access-request.php:52
|
1907 |
+
#: templates/en_EN/emails/subject-access-request.php:52
|
1908 |
+
#: templates/en_US/emails/subject-access-request.php:52
|
1909 |
+
msgid "Download your archive"
|
1910 |
+
msgstr ""
|
1911 |
+
|
1912 |
+
#: templates/de_DE/emails/subject-access-request.php:54
|
1913 |
+
#: templates/en_EN/emails/subject-access-request.php:54
|
1914 |
+
#: templates/en_US/emails/subject-access-request.php:54
|
1915 |
+
msgid ""
|
1916 |
+
"Following this link you can download a PDF and a JSON file dump of your data."
|
1917 |
+
msgstr ""
|
1918 |
+
|
1919 |
+
#: templates/de_DE/emails/subject-access-request.php:56
|
1920 |
+
#: templates/en_EN/emails/subject-access-request.php:56
|
1921 |
+
#: templates/en_US/emails/subject-access-request.php:56
|
1922 |
+
msgid "Download archive"
|
1923 |
+
msgstr ""
|
1924 |
+
|
1925 |
+
#: templates/de_DE/emails/subject-access-request.php:94
|
1926 |
+
#: templates/de_DE/emails/super-unsubscribe.php:84
|
1927 |
+
#: templates/en_EN/emails/subject-access-request.php:94
|
1928 |
+
#: templates/en_EN/emails/super-unsubscribe.php:84
|
1929 |
+
#: templates/en_US/emails/subject-access-request.php:94
|
1930 |
+
#: templates/en_US/emails/super-unsubscribe.php:84
|
1931 |
+
msgid "Sent from"
|
1932 |
+
msgstr ""
|
1933 |
+
|
1934 |
+
#: templates/de_DE/emails/subject-access-request.php:98
|
1935 |
+
#: templates/de_DE/emails/super-unsubscribe.php:88
|
1936 |
+
#: templates/en_EN/emails/subject-access-request.php:98
|
1937 |
+
#: templates/en_EN/emails/super-unsubscribe.php:88
|
1938 |
+
#: templates/en_US/emails/subject-access-request.php:98
|
1939 |
+
#: templates/en_US/emails/super-unsubscribe.php:88
|
1940 |
+
msgid "Contact"
|
1941 |
+
msgstr ""
|
1942 |
+
|
1943 |
+
#: templates/de_DE/emails/super-unsubscribe.php:45
|
1944 |
+
#: templates/en_EN/emails/super-unsubscribe.php:45
|
1945 |
+
#: templates/en_US/emails/super-unsubscribe.php:45
|
1946 |
+
msgid "We have received your delete request."
|
1947 |
+
msgstr ""
|
1948 |
+
|
1949 |
+
#: templates/de_DE/emails/super-unsubscribe.php:46
|
1950 |
+
#: templates/en_EN/emails/super-unsubscribe.php:46
|
1951 |
+
#: templates/en_US/emails/super-unsubscribe.php:46
|
1952 |
+
msgid ""
|
1953 |
+
"If you confirm the following link, all your data stored at\n"
|
1954 |
+
"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{website}} gets deleted."
|
1955 |
+
msgstr ""
|
1956 |
+
|
1957 |
+
#: templates/de_DE/emails/super-unsubscribe.php:51
|
1958 |
+
#: templates/en_EN/emails/super-unsubscribe.php:51
|
1959 |
+
#: templates/en_US/emails/super-unsubscribe.php:51
|
1960 |
+
msgid "Confirm Delete"
|
1961 |
+
msgstr ""
|
1962 |
+
|
1963 |
+
#: templates/de_DE/emails/super-unsubscribe.php:53
|
1964 |
+
#: templates/en_EN/emails/super-unsubscribe.php:53
|
1965 |
+
#: templates/en_US/emails/super-unsubscribe.php:53
|
1966 |
+
msgid "If you don't want do delete your data just ignore this email."
|
1967 |
+
msgstr ""
|
public/actions/popup-accept.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* i592995 */
|
3 |
+
Class SPDSGVOUserPopupAccept extends SPDSGVOAjaxAction{
|
4 |
+
|
5 |
+
protected $action = 'popup-accept';
|
6 |
+
|
7 |
+
protected function run(){
|
8 |
+
$user = wp_get_current_user();
|
9 |
+
if($user->ID != 0) {
|
10 |
+
$meta = get_user_meta($user->ID, 'sp_dsgvo_popup', TRUE);
|
11 |
+
update_user_meta( $user->ID, 'sp_dsgvo_popup', '1' );
|
12 |
+
}
|
13 |
+
setcookie('sp_dsgvo_popup', '1', (time()+(365*24*60*60)), '/');
|
14 |
+
die;
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
SPDSGVOUserPopupAccept::listen();
|
19 |
+
/* i592995 */
|
public/actions/user-permissions.php
CHANGED
@@ -6,26 +6,43 @@ Class SPDSGVOUserPermissionsAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
protected function run(){
|
8 |
|
|
|
9 |
$meta = array();
|
10 |
-
$services = $this->get('services', NULL, FALSE);
|
11 |
-
|
12 |
//error_log('SPDSGVOUserPermissionsAction: updating settings');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
if(is_array($services)){
|
|
|
14 |
foreach($services as $slug => $service){
|
15 |
$meta[$slug] = ($service == '1')? '1' : '0';
|
|
|
|
|
16 |
}
|
17 |
}
|
18 |
|
19 |
if($this->user){
|
20 |
update_user_meta($this->user->ID, 'sp_dsgvo_user_permissions', $meta);
|
21 |
-
createLog("{$this->user->user_email} updated their user permissions
|
22 |
}
|
23 |
|
24 |
setcookie('sp_dsgvo_user_permissions', serialize($meta), (time()+(365*24*60*60)), '/');
|
25 |
|
26 |
-
header('Location: '. $_SERVER['HTTP_REFERER']);
|
|
|
27 |
die;
|
28 |
}
|
29 |
}
|
30 |
|
31 |
-
SPDSGVOUserPermissionsAction::listen();
|
6 |
|
7 |
protected function run(){
|
8 |
|
9 |
+
/* i592995 */
|
10 |
$meta = array();
|
|
|
|
|
11 |
//error_log('SPDSGVOUserPermissionsAction: updating settings');
|
12 |
+
$version = $this->get('version', NULL, FALSE);
|
13 |
+
|
14 |
+
if($version == 'alt') {
|
15 |
+
$services_alt = $this->get('services', NULL, FALSE);
|
16 |
+
$services = array();
|
17 |
+
foreach($services_alt as $serv) {
|
18 |
+
$services[$serv['name']] = $serv['value'];
|
19 |
+
}
|
20 |
+
} else {
|
21 |
+
$services = $this->get('services', NULL, FALSE);
|
22 |
+
}
|
23 |
+
|
24 |
+
/* i592995 */
|
25 |
+
|
26 |
if(is_array($services)){
|
27 |
+
error_log('services: '.implode(',', $services));
|
28 |
foreach($services as $slug => $service){
|
29 |
$meta[$slug] = ($service == '1')? '1' : '0';
|
30 |
+
// error_log($slug);
|
31 |
+
// error_log(($service == '1')? '1' : '0');
|
32 |
}
|
33 |
}
|
34 |
|
35 |
if($this->user){
|
36 |
update_user_meta($this->user->ID, 'sp_dsgvo_user_permissions', $meta);
|
37 |
+
createLog("{$this->user->user_email} " . __('updated their user permissions', 'shapepress-dsgvo'));
|
38 |
}
|
39 |
|
40 |
setcookie('sp_dsgvo_user_permissions', serialize($meta), (time()+(365*24*60*60)), '/');
|
41 |
|
42 |
+
//header('Location: '. $_SERVER['HTTP_REFERER'] .'?v='.time());
|
43 |
+
header('Location: '. get_page_link(SPDSGVOSettings::get('user_permissions_page')) .'?v='.time());
|
44 |
die;
|
45 |
}
|
46 |
}
|
47 |
|
48 |
+
SPDSGVOUserPermissionsAction::listen();
|
public/class-sp-dsgvo-public.php
CHANGED
@@ -1,436 +1,617 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The public-facing functionality of the plugin.
|
5 |
-
*
|
6 |
-
* @link https://wp-dsgvo.eu
|
7 |
-
* @since 1.0.0
|
8 |
-
*
|
9 |
-
* @package WP DSGVO Tools
|
10 |
-
* @subpackage WP DSGVO Tools/public
|
11 |
-
*/
|
12 |
-
|
13 |
-
/**
|
14 |
-
* The public-facing functionality of the plugin.
|
15 |
-
*
|
16 |
-
* Defines the plugin name, version, and two examples hooks for how to
|
17 |
-
* enqueue the public-facing stylesheet and JavaScript.
|
18 |
-
*
|
19 |
-
* @package WP DSGVO Tools
|
20 |
-
* @subpackage WP DSGVO Tools/public
|
21 |
-
* @author Shapepress eU
|
22 |
-
*/
|
23 |
-
class SPDSGVOPublic
|
24 |
-
{
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Initialize the class and set its properties.
|
28 |
-
*
|
29 |
-
* @since 1.0.0
|
30 |
-
* @param string $sp_dsgvo
|
31 |
-
* The name of the plugin.
|
32 |
-
* @param string $version
|
33 |
-
* The version of this plugin.
|
34 |
-
*/
|
35 |
-
public function __construct()
|
36 |
-
{
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
'
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
*
|
46 |
-
*
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
'
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
'
|
70 |
-
'
|
71 |
-
'
|
72 |
-
'
|
73 |
-
'
|
74 |
-
'
|
75 |
-
'
|
76 |
-
'
|
77 |
-
'
|
78 |
-
'
|
79 |
-
'
|
80 |
-
'
|
81 |
-
'
|
82 |
-
'
|
83 |
-
'
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
// $
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
}
|
122 |
-
|
123 |
-
/**
|
124 |
-
* Checks if
|
125 |
-
*
|
126 |
-
* @return bool
|
127 |
-
*/
|
128 |
-
public
|
129 |
-
{
|
130 |
-
return apply_filters('
|
131 |
-
}
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
<?php
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
<
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
<
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
}
|
381 |
-
|
382 |
-
public function
|
383 |
-
{
|
384 |
-
|
385 |
-
|
386 |
-
if (
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
436 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The public-facing functionality of the plugin.
|
5 |
+
*
|
6 |
+
* @link https://wp-dsgvo.eu
|
7 |
+
* @since 1.0.0
|
8 |
+
*
|
9 |
+
* @package WP DSGVO Tools
|
10 |
+
* @subpackage WP DSGVO Tools/public
|
11 |
+
*/
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The public-facing functionality of the plugin.
|
15 |
+
*
|
16 |
+
* Defines the plugin name, version, and two examples hooks for how to
|
17 |
+
* enqueue the public-facing stylesheet and JavaScript.
|
18 |
+
*
|
19 |
+
* @package WP DSGVO Tools
|
20 |
+
* @subpackage WP DSGVO Tools/public
|
21 |
+
* @author Shapepress eU
|
22 |
+
*/
|
23 |
+
class SPDSGVOPublic
|
24 |
+
{
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Initialize the class and set its properties.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
* @param string $sp_dsgvo
|
31 |
+
* The name of the plugin.
|
32 |
+
* @param string $version
|
33 |
+
* The version of this plugin.
|
34 |
+
*/
|
35 |
+
public function __construct()
|
36 |
+
{
|
37 |
+
}
|
38 |
+
|
39 |
+
private static $cookie = array(
|
40 |
+
'name' => 'sp_dsgvo_cn_accepted',
|
41 |
+
'value' => 'TRUE'
|
42 |
+
);
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Register the stylesheets for the public-facing side of the site.
|
46 |
+
*
|
47 |
+
* @since 1.0.0
|
48 |
+
*/
|
49 |
+
public function enqueue_styles()
|
50 |
+
{
|
51 |
+
wp_enqueue_style(sp_dsgvo_NAME, plugin_dir_url(__FILE__) . 'css/sp-dsgvo-public.css', array(), sp_dsgvo_VERSION, 'all');
|
52 |
+
/* i592995 */
|
53 |
+
wp_enqueue_style('simplebar', plugin_dir_url(__FILE__) . 'css/simplebar.css');
|
54 |
+
/* i592995 */
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Register the JavaScript for the public-facing side of the site.
|
59 |
+
*
|
60 |
+
* @since 1.0.0
|
61 |
+
*/
|
62 |
+
public function enqueue_scripts()
|
63 |
+
{
|
64 |
+
wp_enqueue_script(sp_dsgvo_NAME, plugin_dir_url(__FILE__) . 'js/sp-dsgvo-public.js', array(
|
65 |
+
'jquery'
|
66 |
+
), sp_dsgvo_VERSION, FALSE);
|
67 |
+
|
68 |
+
wp_localize_script(sp_dsgvo_NAME, 'cnArgs', array(
|
69 |
+
'ajaxurl' => admin_url('admin-ajax.php'),
|
70 |
+
'hideEffect' => SPDSGVOSettings::get('cn_animation'),
|
71 |
+
'onScroll' => false,
|
72 |
+
'onScrollOffset' => 100,
|
73 |
+
'cookieName' => self::$cookie['name'],
|
74 |
+
'cookieValue' => self::$cookie['value'],
|
75 |
+
'cookieTime' => SPDSGVOSettings::get('cn_cookie_validity'),
|
76 |
+
'cookiePath' => (defined('COOKIEPATH') ? COOKIEPATH : ''),
|
77 |
+
'cookieDomain' => (defined('COOKIE_DOMAIN') ? COOKIE_DOMAIN : ''),
|
78 |
+
'redirection' => SPDSGVOSettings::get('cn_reload_on_confirm'),
|
79 |
+
'reloadOnConfirm' => SPDSGVOSettings::get('cn_reload_on_confirm'),
|
80 |
+
'trackerInitMoment' => SPDSGVOSettings::get('cn_tracker_init'),
|
81 |
+
'gaTagNumber' => SPDSGVOSettings::get('ga_tag_number'),
|
82 |
+
'cache' => defined('WP_CACHE') && WP_CACHE,
|
83 |
+
'declineTargetUrl' => SPDSGVOSettings::get('cn_decline_target_url'),
|
84 |
+
'declineNoCookie' => SPDSGVOSettings::get('cn_decline_no_cookie'),
|
85 |
+
'commentsCb'=> SPDSGVOSettings::get('sp_dsgvo_comments_checkbox'),
|
86 |
+
'cf7AccReplace' => SPDSGVOSettings::get('sp_dsgvo_cf7_acceptance_replace'),
|
87 |
+
'cf7AccText' => SPDSGVOSettings::get('spdsgvo_comments_checkbox_text'),
|
88 |
+
));
|
89 |
+
|
90 |
+
/* i592995 */
|
91 |
+
wp_enqueue_script('simplebar', plugin_dir_url(__FILE__) . 'js/simplebar.js', array(
|
92 |
+
'jquery'
|
93 |
+
), null, true);
|
94 |
+
/* i592995 */
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Print scripts for GA, FB Pixel,..
|
99 |
+
* if enabled
|
100 |
+
*
|
101 |
+
* @return mixed
|
102 |
+
*/
|
103 |
+
public function wp_print_footer_scripts()
|
104 |
+
{
|
105 |
+
// $allowed_html = apply_filters( 'cn_refuse_code_allowed_html', array_merge( wp_kses_allowed_html( 'post' ), array(
|
106 |
+
// 'script' => array(
|
107 |
+
// 'type' => array(),
|
108 |
+
// 'src' => array(),
|
109 |
+
// 'charset' => array(),
|
110 |
+
// 'async' => array()
|
111 |
+
// ),
|
112 |
+
// 'noscript' => array()
|
113 |
+
// ) ) );
|
114 |
+
|
115 |
+
// $scripts = apply_filters( 'cn_refuse_code_scripts_html', html_entity_decode( trim( wp_kses( $this->options['general']['refuse_code'], $allowed_html ) ) ) );
|
116 |
+
$scripts = ''; // 'place_for_scripts';
|
117 |
+
|
118 |
+
if ($this->cookies_accepted() && ! empty($scripts)) {
|
119 |
+
echo $scripts;
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Checks if cookie is setted
|
125 |
+
*
|
126 |
+
* @return bool
|
127 |
+
*/
|
128 |
+
public function cookies_set()
|
129 |
+
{
|
130 |
+
return apply_filters('cn_is_cookie_set', isset($_COOKIE[self::$cookie['name']]));
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Checks if third party non functional cookies are accepted
|
135 |
+
*
|
136 |
+
* @return bool
|
137 |
+
*/
|
138 |
+
public static function cookies_accepted()
|
139 |
+
{
|
140 |
+
return apply_filters('cn_is_cookie_accepted', isset($_COOKIE[self::$cookie['name']]) && strtoupper($_COOKIE[self::$cookie['name']]) === self::$cookie['value']);
|
141 |
+
}
|
142 |
+
|
143 |
+
public function cookieNotice()
|
144 |
+
{
|
145 |
+
/* i592995 */
|
146 |
+
if (SPDSGVOSettings::get('cookie_notice_display') == 'cookie_notice') :
|
147 |
+
/* i592995 */
|
148 |
+
if (hasUserGivenPermissionFor('cookies') === FALSE) :
|
149 |
+
?>
|
150 |
+
|
151 |
+
<?php if (SPDSGVOSettings::get('cn_use_overlay') === '1') : ?>
|
152 |
+
<div id="cookie-notice-blocker"></div>
|
153 |
+
<?php endif; ?>
|
154 |
+
|
155 |
+
<div id="cookie-notice" role="banner"
|
156 |
+
class="cn-<?= SPDSGVOSettings::get('cn_position') ?> <?= SPDSGVOSettings::get('cn_custom_css_container') !== '' ? SPDSGVOSettings::get('cn_custom_css_container'):'' ?>"
|
157 |
+
style="background-color: <?= SPDSGVOSettings::get('cn_background_color') ?>;
|
158 |
+
color: <?= SPDSGVOSettings::get('cn_text_color') ?>;
|
159 |
+
height: <?= SPDSGVOSettings::get('cn_height_container') ?>;">
|
160 |
+
<div class="cookie-notice-container">
|
161 |
+
|
162 |
+
<?php if (SPDSGVOSettings::get('cn_show_dsgvo_icon') === '1') : ?>
|
163 |
+
<span id="cn-notice-icon"><a
|
164 |
+
href="https://wp-dsgvo.eu" target="_blank"><img id="cn-notice-icon"
|
165 |
+
src="<?= plugin_dir_url(__FILE__) . 'images/cookie-icon.png' ?>"
|
166 |
+
alt="DSGVO Logo" style="display:block !important;" /></a></span>
|
167 |
+
<?php endif; ?>
|
168 |
+
|
169 |
+
<span id="cn-notice-text" class="<?= SPDSGVOSettings::get('cn_custom_css_text') !== '' ? SPDSGVOSettings::get('cn_custom_css_text'):'' ?>"
|
170 |
+
style="font-size:<?= SPDSGVOSettings::get('cn_size_text') ?>;"
|
171 |
+
><?= spdsgvoUseWpml() ? __('We use cookies to give you the best user experience. If you continue to use this site, we assume that you agree.','shapepress-dsgvo') : convDeChars(SPDSGVOSettings::get('cookie_notice_custom_text')) ?></span>
|
172 |
+
|
173 |
+
<a href="#" id="cn-accept-cookie" data-cookie-set="accept"
|
174 |
+
class="cn-set-cookie button wp-default <?= SPDSGVOSettings::get('cn_custom_css_buttons') !== '' ? SPDSGVOSettings::get('cn_custom_css_buttons'):'' ?>"
|
175 |
+
style="background-color: <?= SPDSGVOSettings::get('cn_background_color_button') ?>;
|
176 |
+
color: <?= SPDSGVOSettings::get('cn_text_color_button') ?>;"
|
177 |
+
><?= spdsgvoUseWpml() ? __('Ok','shapepress-dsgvo') : SPDSGVOSettings::get('cn_button_text_ok') ?></a>
|
178 |
+
|
179 |
+
<?php if(SPDSGVOSettings::get('cn_activate_cancel_btn') != '0'): ?>
|
180 |
+
<a href="#" id="cn-refuse-cookie"
|
181 |
+
data-cookie-set="refuse" class="cn-set-cookie button wp-default <?= SPDSGVOSettings::get('cn_custom_css_buttons') !== '' ? SPDSGVOSettings::get('cn_custom_css_buttons'):'' ?>"
|
182 |
+
style="background-color: <?= SPDSGVOSettings::get('cn_background_color_button') ?>;
|
183 |
+
color: <?= SPDSGVOSettings::get('cn_text_color_button') ?>;"
|
184 |
+
><?= spdsgvoUseWpml() ? __('Decline','shapepress-dsgvo') : SPDSGVOSettings::get('cn_button_text_cancel') ?></a>
|
185 |
+
<?php endif; ?>
|
186 |
+
|
187 |
+
<?php if(SPDSGVOSettings::get('cn_activate_more_btn') != '0'): ?>
|
188 |
+
<a
|
189 |
+
href="<?= get_permalink(SPDSGVOSettings::get('cn_read_more_page')) ?>"
|
190 |
+
id="cn-more-info"
|
191 |
+
target="<?= SPDSGVOSettings::get('cn_decline_target_url') ?>"
|
192 |
+
class="cn-more-info button wp-default <?= SPDSGVOSettings::get('cn_custom_css_buttons') !== '' ? SPDSGVOSettings::get('cn_custom_css_buttons'):'' ?>"
|
193 |
+
style="background-color: <?= SPDSGVOSettings::get('cn_background_color_button') ?> !important;
|
194 |
+
color: <?= SPDSGVOSettings::get('cn_text_color_button') ?> !important;"
|
195 |
+
><?= spdsgvoUseWpml() ? __('Read more','shapepress-dsgvo') : SPDSGVOSettings::get('cn_button_text_more') ?></a>
|
196 |
+
<?php endif; ?>
|
197 |
+
|
198 |
+
</div>
|
199 |
+
</div>
|
200 |
+
|
201 |
+
|
202 |
+
<?php
|
203 |
+
endif;
|
204 |
+
endif;
|
205 |
+
|
206 |
+
|
207 |
+
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* This function renders the privacy policy popup [i592995]
|
211 |
+
*/
|
212 |
+
public function policyPopup()
|
213 |
+
{
|
214 |
+
if (SPDSGVOSettings::get('cookie_notice_display') == 'policy_popup' && !hasUserAcceptedPopup()) :
|
215 |
+
?>
|
216 |
+
<div class="dsgvo-popup-overlay sp-dsgvo-framework">
|
217 |
+
<div class="dsgvo-privacy-popup">
|
218 |
+
|
219 |
+
<div class="popup-top">
|
220 |
+
<div class="logo-wrapper">
|
221 |
+
<?php
|
222 |
+
$src = sp_dsgvo_URL . 'public/images/logo-md.png';
|
223 |
+
$img_id = SPDSGVOSettings::get('logo_image_id', '');
|
224 |
+
if($img_id != '') {
|
225 |
+
$src = wp_get_attachment_url(intval($img_id));
|
226 |
+
}
|
227 |
+
?>
|
228 |
+
<img src="<?php echo $src; ?>" class="popup-logo" />
|
229 |
+
</div><!-- .logo-wrapper -->
|
230 |
+
|
231 |
+
<div class="lang-wrapper">
|
232 |
+
<?php if(function_exists('icl_get_languages')) : ?>
|
233 |
+
<?php $langs = icl_get_languages('skip_missing=1'); ?>
|
234 |
+
<?php if(count($langs) > 0) : ?>
|
235 |
+
<div class="popup-language-switcher">
|
236 |
+
|
237 |
+
<?php foreach($langs as $lang) : ?>
|
238 |
+
<?php if($lang['active'] == 1) : ?>
|
239 |
+
<span class="lang-active">
|
240 |
+
<img src="<?php echo $lang['country_flag_url']; ?>" />
|
241 |
+
<span><?php echo $lang['native_name']; ?></span>
|
242 |
+
<svg width="10" height="6">
|
243 |
+
<line x1="0" y1="0" x2="5" y2="5" />
|
244 |
+
<line x1="5" y1="5" x2="10" y2="0" />
|
245 |
+
</svg>
|
246 |
+
</span>
|
247 |
+
<?php break; ?>
|
248 |
+
<?php endif; ?>
|
249 |
+
<?php endforeach; ?>
|
250 |
+
|
251 |
+
<div class="lang-dropdown">
|
252 |
+
<?php foreach($langs as $lang) : ?>
|
253 |
+
<a href="<?php echo $lang['url']; ?>">
|
254 |
+
<img src="<?php echo $lang['country_flag_url']; ?>" />
|
255 |
+
<span><?php echo $lang['native_name']; ?></span>
|
256 |
+
</a>
|
257 |
+
<?php endforeach; ?>
|
258 |
+
</div><!-- .lang-dropdown -->
|
259 |
+
|
260 |
+
</div><!-- .popup-language-switcher -->
|
261 |
+
<?php endif; ?>
|
262 |
+
<?php endif; ?>
|
263 |
+
</div><!-- .lang-wrapper -->
|
264 |
+
|
265 |
+
<?php
|
266 |
+
$url = SPDSGVOSettings::get('close_button_url', '#');
|
267 |
+
$action = SPDSGVOSettings::get('close_button_action', '0');
|
268 |
+
$additional_class = '';
|
269 |
+
if($url == '' || $action == '' || $action == '0') {
|
270 |
+
$url = '#';
|
271 |
+
$additional_class = 'close';
|
272 |
+
}
|
273 |
+
?>
|
274 |
+
|
275 |
+
<a href="<?php echo $url; ?>" id="dsgvo_popup_close" class="dsgvo-popup-close <?php echo $additional_class; ?>">
|
276 |
+
<svg width="10" height="10">
|
277 |
+
<line x1="0" y1="0" x2="10" y2="10" />
|
278 |
+
<line x1="0" y1="10" x2="10" y2="0" />
|
279 |
+
</svg><!-- #dsgvo_popup_close -->
|
280 |
+
</a>
|
281 |
+
|
282 |
+
</div><!-- .popup-top -->
|
283 |
+
|
284 |
+
<div class="dsgvo-privacy-content">
|
285 |
+
<div class="privacy-inner">
|
286 |
+
<?php echo do_shortcode('[privacy_policy]'); ?>
|
287 |
+
<div class="popup-accordion" id="popup_accordion">
|
288 |
+
|
289 |
+
<div class="accordion-top">
|
290 |
+
<?php
|
291 |
+
$accordion_top = SPDSGVOSettings::get('accordion_top', '');
|
292 |
+
if($accordion_top == '') {
|
293 |
+
$accordion_top = __('More options', 'shapepress-dsgvo');
|
294 |
+
}
|
295 |
+
?>
|
296 |
+
<span><?php echo $accordion_top; ?></span>
|
297 |
+
<div class="toggle">
|
298 |
+
<svg width="14" height="8">
|
299 |
+
<line x1="0" y1="0" x2="7" y2="6" />
|
300 |
+
<line x1="7" y1="6" x2="14" y2="0" />
|
301 |
+
</svg>
|
302 |
+
</div><!-- .toggle -->
|
303 |
+
</div><!-- .accordion-top -->
|
304 |
+
|
305 |
+
<div class="accordion-wrapper">
|
306 |
+
<div class="accordion-inner">
|
307 |
+
<?php echo do_shortcode('[user_privacy_settings_form_alt]'); ?>
|
308 |
+
</div><!-- .accordion-inner -->
|
309 |
+
</div><!-- .accordion-wrapper -->
|
310 |
+
|
311 |
+
</div><!-- .popup-accordion -->
|
312 |
+
</div><!-- .privacy-inner -->
|
313 |
+
</div><!-- .dsgvo-privacy-content -->
|
314 |
+
|
315 |
+
<div class="popup-bottom">
|
316 |
+
<a href="#" id="more_options_button" class="more-options-button"><?php _e('More options', 'shapepress-dsgvo'); ?></a>
|
317 |
+
<a href="#" id="popup_accept_button" class="accept-button">
|
318 |
+
<?php _e('Accept', 'shapepress-dsgvo'); ?>
|
319 |
+
<svg class="accept-loader" width="30" height="30">
|
320 |
+
<circle cx="15" cy="15" r="10" />
|
321 |
+
</svg><!-- .accept-loader -->
|
322 |
+
</a><!-- #popup_accept_button -->
|
323 |
+
</div><!-- .popup-bottom -->
|
324 |
+
|
325 |
+
</div><!-- .dsgvo-privacy-popup -->
|
326 |
+
</div><!-- .dsgvo-popup-overlay -->
|
327 |
+
<?php
|
328 |
+
endif;
|
329 |
+
}
|
330 |
+
|
331 |
+
public function writeHeaderScripts()
|
332 |
+
{
|
333 |
+
//error_log('cn_tracker_init: '. SPDSGVOSettings::get('cn_tracker_init'));
|
334 |
+
if (SPDSGVOSettings::get('cn_tracker_init') === 'on_load') {
|
335 |
+
// error_log('google-analytics: '. hasUserGivenPermissionFor('google-analytics'));
|
336 |
+
// error_log('google-analytics permission: '. hasUserGivenPermissionFor('google-analytics') ? 'true': 'false');
|
337 |
+
if (hasUserGivenPermissionFor('google-analytics')) {
|
338 |
+
$this->writeGoogleAnalyticsOptOut();
|
339 |
+
$this->writeGoogleAnalytics();
|
340 |
+
}
|
341 |
+
|
342 |
+
if (hasUserGivenPermissionFor('facebook-pixel')) {
|
343 |
+
$this->writeFbPixelCode();
|
344 |
+
}
|
345 |
+
|
346 |
+
} else if (SPDSGVOSettings::get('cn_tracker_init') === 'after_confirm'
|
347 |
+
&& ($this->cookies_accepted() || hasUserGivenPermissionFor('cookies'))) {
|
348 |
+
|
349 |
+
// error_log('after_confirm logic');
|
350 |
+
// error_log('google-analytics: '. hasUserGivenPermissionFor('google-analytics'));
|
351 |
+
// error_log('google-analytics permission: '. hasUserGivenPermissionFor('google-analytics') ? 'true': 'false');
|
352 |
+
|
353 |
+
if (hasUserGivenPermissionFor('google-analytics')) {
|
354 |
+
//error_log('after_confirm: user has given go to analytis, write it');
|
355 |
+
$this->writeGoogleAnalyticsOptOut();
|
356 |
+
$this->writeGoogleAnalytics();
|
357 |
+
}
|
358 |
+
|
359 |
+
if (hasUserGivenPermissionFor('facebook-pixel')) {
|
360 |
+
$this->writeFbPixelCode();
|
361 |
+
}
|
362 |
+
}
|
363 |
+
}
|
364 |
+
|
365 |
+
public function writeGoogleAnalytics()
|
366 |
+
{
|
367 |
+
//error_log('writeGoogleAnalytics: '.SPDSGVOSettings::get('ga_enable_analytics'));
|
368 |
+
if (SPDSGVOSettings::get('ga_enable_analytics') === '1') :
|
369 |
+
/* i592995 */
|
370 |
+
|
371 |
+
$ga_code = SPDSGVOSettings::get('ga_code', '');
|
372 |
+
if($ga_code == '' || SPDSGVOSettings::get('own_code') !== '1') {
|
373 |
+
$ga_code = googleAnalyticsScript(true);
|
374 |
+
}
|
375 |
+
echo $ga_code;
|
376 |
+
|
377 |
+
/* i592995 */
|
378 |
+
endif;
|
379 |
+
|
380 |
+
}
|
381 |
+
|
382 |
+
public function writeGoogleAnalyticsOptOut()
|
383 |
+
{
|
384 |
+
// google analytics
|
385 |
+
//if (SPDSGVOSettings::get('ga_enable_analytics') === '1') :
|
386 |
+
if ($this->cookies_accepted() || hasUserGivenPermissionFor('google-analytics')) :
|
387 |
+
?>
|
388 |
+
|
389 |
+
<script>
|
390 |
+
window['ga-disable-<?= SPDSGVOSettings::get('ga_tag_number') ?>'] = false;
|
391 |
+
</script>
|
392 |
+
|
393 |
+
<?php
|
394 |
+
else :
|
395 |
+
?>
|
396 |
+
<script>
|
397 |
+
window['ga-disable-<?= SPDSGVOSettings::get('ga_tag_number') ?>'] = true;
|
398 |
+
</script>
|
399 |
+
<?php
|
400 |
+
endif;
|
401 |
+
//endif;
|
402 |
+
|
403 |
+
}
|
404 |
+
|
405 |
+
public function writeFbPixelCode()
|
406 |
+
{
|
407 |
+
if (SPDSGVOSettings::get('fb_enable_pixel') === '1') :
|
408 |
+
|
409 |
+
/* i592995 */
|
410 |
+
$code = SPDSGVOSettings::get('fb_pixel_code', '');
|
411 |
+
if($code == '' || SPDSGVOSettings::get('own_code') !== '1') {
|
412 |
+
$code = facebookPixelScript(true);
|
413 |
+
}
|
414 |
+
$code = str_replace('[pixel_number]', SPDSGVOSettings::get('fb_pixel_number'), $code);
|
415 |
+
echo $code;
|
416 |
+
/* i592995 */
|
417 |
+
|
418 |
+
endif;
|
419 |
+
|
420 |
+
}
|
421 |
+
|
422 |
+
public function writeFooterScripts()
|
423 |
+
{
|
424 |
+
$this->cookieNotice();
|
425 |
+
/* i592995 */
|
426 |
+
$this->policyPopup();
|
427 |
+
/* i592995 */
|
428 |
+
}
|
429 |
+
|
430 |
+
public function addCommentsCheckBoxForDSGVO()
|
431 |
+
{
|
432 |
+
if (SPDSGVOSettings::get('sp_dsgvo_comments_checkbox') === '0') {} else {
|
433 |
+
|
434 |
+
$validLicence = isValidBlogEdition() || isValidPremiumEdition();
|
435 |
+
$infoText = $validLicence ? SPDSGVOSettings::get('spdsgvo_comments_checkbox_info') : htmlentities(SPDSGVOSettings::getDefault('spdsgvo_comments_checkbox_info'), ENT_IGNORE, 'UTF-8');
|
436 |
+
$checkboxText = $validLicence ? SPDSGVOSettings::get('spdsgvo_comments_checkbox_text') : htmlentities(SPDSGVOSettings::getDefault('spdsgvo_comments_checkbox_text'), ENT_IGNORE, 'UTF-8');
|
437 |
+
$confirmText = $validLicence ? SPDSGVOSettings::get('spdsgvo_comments_checkbox_confirm') : htmlentities(SPDSGVOSettings::getDefault('spdsgvo_comments_checkbox_confirm'), ENT_IGNORE, 'UTF-8');
|
438 |
+
|
439 |
+
if (spdsgvoUseWpml())
|
440 |
+
{
|
441 |
+
$infoText = __('The confirmation to GDPR is mandatory.','shapepress-dsgvo');
|
442 |
+
$checkboxText = __('This form stores your name, email address and content so that we can evaluate the comments on our site. For more information, visit our Privacy Policy page.','shapepress-dsgvo');
|
443 |
+
$confirmText = __('I confirm','shapepress-dsgvo');
|
444 |
+
}
|
445 |
+
|
446 |
+
$privacy_policy_string = '';
|
447 |
+
|
448 |
+
$privacy_policy_string .= "<p class='gdpr-cb-info-text'><small>* ".convDeChars($infoText)."</small></p>";
|
449 |
+
|
450 |
+
$privacy_policy_string .= '<div class="info-text"><label for="gdpr-cb">'.convDeChars($checkboxText).'</label></div>';
|
451 |
+
|
452 |
+
$privacy_policy_string .= '<p class="comment-form-gdpr"><input required="required" id="gdpr-cb" name="gdpr-cb" type="checkbox" />';
|
453 |
+
$privacy_policy_string .= convDeChars($confirmText);
|
454 |
+
$privacy_policy_string .= "</p>";
|
455 |
+
|
456 |
+
echo $privacy_policy_string;
|
457 |
+
|
458 |
+
}
|
459 |
+
}
|
460 |
+
|
461 |
+
public function wpcf7AddDsgvoTag()
|
462 |
+
{
|
463 |
+
error_log('wpcf7AddDsgvoTag');
|
464 |
+
wpcf7_add_form_tag( array('dsgvo','dsgvo*'), 'dsgvoTextTagHandler', true );
|
465 |
+
}
|
466 |
+
|
467 |
+
public function dsgvoTextTagHandler( $tag ) {
|
468 |
+
|
469 |
+
$dsgvoText = $validLicence ? htmlentities(SPDSGVOSettings::get('spdsgvo_comments_checkbox_text'), ENT_IGNORE, 'UTF-8') : htmlentities(SPDSGVOSettings::getDefault('spdsgvo_comments_checkbox_text'), ENT_IGNORE, 'UTF-8');
|
470 |
+
return $dsgvoText;
|
471 |
+
}
|
472 |
+
|
473 |
+
public function newUserRegistered($userID)
|
474 |
+
{
|
475 |
+
update_user_meta($userID, 'SPDSGVO_settings', json_encode('{}'));
|
476 |
+
}
|
477 |
+
|
478 |
+
public function allowJSON($mime_types)
|
479 |
+
{
|
480 |
+
$mime_types['json'] = 'application/json';
|
481 |
+
return $mime_types;
|
482 |
+
}
|
483 |
+
|
484 |
+
public function publicInit()
|
485 |
+
{
|
486 |
+
load_plugin_textdomain( 'shapepress-dsgvo', false, 'shapepress-dsgvo/languages' );
|
487 |
+
|
488 |
+
if (SPDSGVOSettings::get('auto_delete_erasure_requests') === '1') {
|
489 |
+
if (SPDSGVOSettings::get('last_auto_delete_cron') !== date('z')) {
|
490 |
+
foreach (SPDSGVOUnsubscriber::all() as $unsubscriber) {
|
491 |
+
if ($unsubscriber->delete_on < time()) {
|
492 |
+
$unsubscriber->unsubscribe();
|
493 |
+
}
|
494 |
+
}
|
495 |
+
SPDSGVOSettings::set('last_auto_delete_cron', date('z'));
|
496 |
+
}
|
497 |
+
}
|
498 |
+
}
|
499 |
+
|
500 |
+
public function adminInit()
|
501 |
+
{
|
502 |
+
load_plugin_textdomain( 'shapepress-dsgvo', false, 'shapepress-dsgvo/languages' );
|
503 |
+
}
|
504 |
+
|
505 |
+
public function wooAddCustomFields( $checkout)
|
506 |
+
{
|
507 |
+
if (SPDSGVOSettings::get('woo_show_privacy_checkbox') === '1') {
|
508 |
+
echo '<div id="cb-spdsgvo-privacy-policy"><h3>'.__('Privacy Policy: ','shapepress-dsgvo').'</h3>';
|
509 |
+
|
510 |
+
|
511 |
+
$privacyPolicyPage = SPDSGVOSettings::get('privacy_policy_page');
|
512 |
+
/* i592995 */
|
513 |
+
/*
|
514 |
+
$cbLabel = __('I have read and accepted the PrivacyPolicyPlaceholder.','shapepress-dsgvo');
|
515 |
+
if ($privacyPolicyPage > 0)
|
516 |
+
{
|
517 |
+
$ppUrl = get_post_permalink($privacyPolicyPage);
|
518 |
+
|
519 |
+
|
520 |
+
$cbLabel = str_replace('PrivacyPolicyPlaceholder', '<a href="'.$ppUrl.'">'.__('Privacy policy','shapepress-dsgvo').'</a>', $cbLabel);
|
521 |
+
} else
|
522 |
+
{
|
523 |
+
$cbLabel = str_replace('PrivacyPolicyPlaceholder', __('Privacy policy','shapepress-dsgvo'), $cbLabel);
|
524 |
+
}
|
525 |
+
|
526 |
+
if (spdsgvoUseWpml())
|
527 |
+
{
|
528 |
+
$cbLabel = __('I have read and accepted the Privacy Policy.','shapepress-dsgvo');
|
529 |
+
}
|
530 |
+
*/
|
531 |
+
$cbLabel = SPDSGVOSettings::get('woo_privacy_text', '');
|
532 |
+
|
533 |
+
/* i592995 */
|
534 |
+
|
535 |
+
woocommerce_form_field( 'cb-spdsgvo-privacy-policy', array(
|
536 |
+
'type' => 'checkbox',
|
537 |
+
'class' => array('input-checkbox'),
|
538 |
+
'label' => $cbLabel,
|
539 |
+
'required' => true,
|
540 |
+
), $checkout->get_value( 'cb-spdsgvo-privacy-policy' ));
|
541 |
+
|
542 |
+
echo '</div>';
|
543 |
+
}
|
544 |
+
}
|
545 |
+
|
546 |
+
function wooAddCustomCheckout() {
|
547 |
+
|
548 |
+
|
549 |
+
// Check if set, if its not set add an error.
|
550 |
+
if (SPDSGVOSettings::get('woo_show_privacy_checkbox') === '1' && !$_POST['cb-spdsgvo-privacy-policy'])
|
551 |
+
wc_add_notice( __('Consent to the privacy policy is mandatory.','shapepress-dsgvo'),'error' );
|
552 |
+
}
|
553 |
+
|
554 |
+
function wooUpdateOrderMeta($order_id)
|
555 |
+
{
|
556 |
+
if (SPDSGVOSettings::get('woo_show_privacy_checkbox') === '1') {
|
557 |
+
if ($_POST['cb-spdsgvo-privacy-policy']) update_post_meta( $order_id, __('Privacy Policy accepted','shapepress-dsgvo'), esc_attr($_POST['cb-spdsgvo-privacy-policy']));
|
558 |
+
}
|
559 |
+
}
|
560 |
+
|
561 |
+
|
562 |
+
public function forcePermisson()
|
563 |
+
{
|
564 |
+
$page = SPDSGVOSettings::get('explicit_permission_page');
|
565 |
+
|
566 |
+
if (hasUserDeclinedTerms()) {
|
567 |
+
return;
|
568 |
+
}
|
569 |
+
|
570 |
+
if ($page == '0') {
|
571 |
+
return;
|
572 |
+
}
|
573 |
+
|
574 |
+
if (get_post($page) instanceof WP_Post) {
|
575 |
+
return;
|
576 |
+
}
|
577 |
+
|
578 |
+
if (strpos(get_post($page)->post_content, 'explicit_permission_form') === FALSE) {
|
579 |
+
return;
|
580 |
+
}
|
581 |
+
|
582 |
+
if (SPDSGVOSettings::get('force_explicit_permission_authenticated') == '1' && is_user_logged_in()) {
|
583 |
+
|
584 |
+
if (! SPDSGVO::isAjax() && ! hasUserAgreedToTerms()) {
|
585 |
+
if (get_the_ID() != $page) {
|
586 |
+
$url = get_permalink($page);
|
587 |
+
if (! is_admin()) {
|
588 |
+
wp_redirect($url);
|
589 |
+
exit();
|
590 |
+
}
|
591 |
+
}
|
592 |
+
}
|
593 |
+
} elseif (SPDSGVOSettings::get('force_explicit_permission_public') == '1' && ! is_user_logged_in()) {
|
594 |
+
|
595 |
+
if (! SPDSGVO::isAjax() && ! hasUserAgreedToTerms()) {
|
596 |
+
if (get_the_ID() != $page) {
|
597 |
+
$url = get_permalink($page);
|
598 |
+
if (! is_admin()) {
|
599 |
+
wp_redirect($url);
|
600 |
+
exit();
|
601 |
+
}
|
602 |
+
}
|
603 |
+
}
|
604 |
+
}
|
605 |
+
}
|
606 |
+
|
607 |
+
}
|
608 |
+
|
609 |
+
/**
|
610 |
+
* Get the cookie notice status
|
611 |
+
*
|
612 |
+
* @return boolean
|
613 |
+
*/
|
614 |
+
function sp_dsgvo_cn_cookies_accepted()
|
615 |
+
{
|
616 |
+
return (bool) SPDSGVOPublic::cookies_accepted();
|
617 |
}
|
public/css/simplebar.css
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
*
|
3 |
+
* SimpleBar.js - v2.6.1
|
4 |
+
* Scrollbars, simpler.
|
5 |
+
* https://grsmto.github.io/simplebar/
|
6 |
+
*
|
7 |
+
* Made by Adrien Grsmto from a fork by Jonathan Nicol
|
8 |
+
* Under MIT License
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
[data-simplebar] {
|
12 |
+
position: relative;
|
13 |
+
z-index: 0;
|
14 |
+
overflow: hidden!important;
|
15 |
+
max-height: inherit;
|
16 |
+
-webkit-overflow-scrolling: touch; /* Trigger native scrolling for mobile, if not supported, plugin is used. */
|
17 |
+
}
|
18 |
+
|
19 |
+
[data-simplebar="init"] {
|
20 |
+
display: -webkit-box;
|
21 |
+
display: -ms-flexbox;
|
22 |
+
display: flex;
|
23 |
+
}
|
24 |
+
|
25 |
+
.simplebar-scroll-content {
|
26 |
+
overflow-x: hidden!important;
|
27 |
+
overflow-y: scroll;
|
28 |
+
min-width: 100%!important;
|
29 |
+
max-height: inherit!important;
|
30 |
+
-webkit-box-sizing: content-box!important;
|
31 |
+
box-sizing: content-box!important;
|
32 |
+
}
|
33 |
+
|
34 |
+
.simplebar-content {
|
35 |
+
overflow-y: hidden!important;
|
36 |
+
overflow-x: scroll;
|
37 |
+
-webkit-box-sizing: border-box!important;
|
38 |
+
box-sizing: border-box!important;
|
39 |
+
min-height: 100%!important;
|
40 |
+
}
|
41 |
+
|
42 |
+
.simplebar-track {
|
43 |
+
z-index: 1;
|
44 |
+
position: absolute;
|
45 |
+
right: 0;
|
46 |
+
bottom: 0;
|
47 |
+
width: 11px;
|
48 |
+
}
|
49 |
+
|
50 |
+
.simplebar-scrollbar {
|
51 |
+
position: absolute;
|
52 |
+
right: 2px;
|
53 |
+
width: 7px;
|
54 |
+
min-height: 10px;
|
55 |
+
}
|
56 |
+
|
57 |
+
.simplebar-scrollbar:before {
|
58 |
+
position: absolute;
|
59 |
+
content: "";
|
60 |
+
background: black;
|
61 |
+
border-radius: 7px;
|
62 |
+
left: 0;
|
63 |
+
right: 0;
|
64 |
+
opacity: 0;
|
65 |
+
-webkit-transition: opacity 0.2s linear;
|
66 |
+
transition: opacity 0.2s linear;
|
67 |
+
}
|
68 |
+
|
69 |
+
.simplebar-track:hover .simplebar-scrollbar:before,
|
70 |
+
.simplebar-track .simplebar-scrollbar.visible:before {
|
71 |
+
/* When hovered, remove all transitions from drag handle */
|
72 |
+
opacity: 0.5;
|
73 |
+
-webkit-transition: opacity 0 linear;
|
74 |
+
transition: opacity 0 linear;
|
75 |
+
}
|
76 |
+
|
77 |
+
.simplebar-track.vertical {
|
78 |
+
top: 0;
|
79 |
+
}
|
80 |
+
|
81 |
+
.simplebar-track.vertical .simplebar-scrollbar:before {
|
82 |
+
top: 2px;
|
83 |
+
bottom: 2px;
|
84 |
+
}
|
85 |
+
|
86 |
+
.simplebar-track.horizontal {
|
87 |
+
left: 0;
|
88 |
+
width: auto;
|
89 |
+
height: 11px;
|
90 |
+
}
|
91 |
+
|
92 |
+
.simplebar-track.horizontal .simplebar-scrollbar:before {
|
93 |
+
height: 100%;
|
94 |
+
left: 2px;
|
95 |
+
right: 2px;
|
96 |
+
}
|
97 |
+
|
98 |
+
.horizontal.simplebar-track .simplebar-scrollbar {
|
99 |
+
right: auto;
|
100 |
+
top: 2px;
|
101 |
+
height: 7px;
|
102 |
+
min-height: 0;
|
103 |
+
min-width: 10px;
|
104 |
+
width: auto;
|
105 |
+
}
|
public/css/sp-dsgvo-public.css
CHANGED
@@ -408,7 +408,7 @@ to {
|
|
408 |
.sp-dsgvo-framework fieldset, .sp-dsgvo-framework input,
|
409 |
.sp-dsgvo-framework select, .sp-dsgvo-framework textarea {
|
410 |
/* margin-bottom: 1.5rem */
|
411 |
-
|
412 |
}
|
413 |
|
414 |
.sp-dsgvo-framework blockquote, .sp-dsgvo-framework dl,
|
@@ -507,16 +507,17 @@ to {
|
|
507 |
|
508 |
#cookie-notice-blocker
|
509 |
{
|
510 |
-
position: fixed;
|
511 |
-
display: block;
|
512 |
-
width: 100%;
|
513 |
height: 100%;
|
514 |
-
top: 0;
|
515 |
left: 0;
|
516 |
right: 0;
|
517 |
bottom: 0;
|
518 |
-
background-color: rgba(0,0,0,0.5);
|
519 |
-
|
|
|
520 |
}
|
521 |
|
522 |
#cookie-notice {
|
@@ -558,13 +559,13 @@ to {
|
|
558 |
#cookie-notice .button.wp-default {
|
559 |
font-family: sans-serif;
|
560 |
line-height: 18px;
|
561 |
-
padding: 2px 12px
|
562 |
/* background: linear-gradient(to bottom, #FEFEFE, #F4F4F4) repeat scroll 0
|
563 |
0 #F3F3F3 !important; */
|
564 |
background-image: none;
|
565 |
border-color: #BBB;
|
566 |
color: #333;
|
567 |
-
|
568 |
-moz-box-sizing: border-box;
|
569 |
border-radius: 3px 3px 3px 3px;
|
570 |
border-style: solid;
|
@@ -617,4 +618,296 @@ this is class for submit button in new comment form when checkbox is not checked
|
|
617 |
*/
|
618 |
.gdpr-disabled {
|
619 |
background-color: #c1c1c1 !important;
|
620 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
.sp-dsgvo-framework fieldset, .sp-dsgvo-framework input,
|
409 |
.sp-dsgvo-framework select, .sp-dsgvo-framework textarea {
|
410 |
/* margin-bottom: 1.5rem */
|
411 |
+
|
412 |
}
|
413 |
|
414 |
.sp-dsgvo-framework blockquote, .sp-dsgvo-framework dl,
|
507 |
|
508 |
#cookie-notice-blocker
|
509 |
{
|
510 |
+
position: fixed;
|
511 |
+
display: block;
|
512 |
+
width: 100%;
|
513 |
height: 100%;
|
514 |
+
top: 0;
|
515 |
left: 0;
|
516 |
right: 0;
|
517 |
bottom: 0;
|
518 |
+
background-color: rgba(0,0,0,0.5);
|
519 |
+
z-index: 9999;
|
520 |
+
|
521 |
}
|
522 |
|
523 |
#cookie-notice {
|
559 |
#cookie-notice .button.wp-default {
|
560 |
font-family: sans-serif;
|
561 |
line-height: 18px;
|
562 |
+
padding: 2px 12px;
|
563 |
/* background: linear-gradient(to bottom, #FEFEFE, #F4F4F4) repeat scroll 0
|
564 |
0 #F3F3F3 !important; */
|
565 |
background-image: none;
|
566 |
border-color: #BBB;
|
567 |
color: #333;
|
568 |
+
/* text-shadow: 0 1px 0 #FFF; */
|
569 |
-moz-box-sizing: border-box;
|
570 |
border-radius: 3px 3px 3px 3px;
|
571 |
border-style: solid;
|
618 |
*/
|
619 |
.gdpr-disabled {
|
620 |
background-color: #c1c1c1 !important;
|
621 |
+
}
|
622 |
+
|
623 |
+
/* i592995 */
|
624 |
+
|
625 |
+
.dsgvo-popup-overlay {
|
626 |
+
position: fixed;
|
627 |
+
left: 0;
|
628 |
+
top: 0;
|
629 |
+
width: 100%;
|
630 |
+
height: 100%;
|
631 |
+
background-color: rgba(34, 34, 34, .8);
|
632 |
+
z-index: 9999999;
|
633 |
+
}
|
634 |
+
|
635 |
+
.dsgvo-privacy-popup {
|
636 |
+
position: absolute;
|
637 |
+
left: 50%;
|
638 |
+
top: 50%;
|
639 |
+
transform: translate(-50%, -50%);
|
640 |
+
width: 100%;
|
641 |
+
max-width: 600px;
|
642 |
+
height: calc(100% - 100px);
|
643 |
+
}
|
644 |
+
|
645 |
+
.dsgvo-popup-close {
|
646 |
+
margin-left: 25px;
|
647 |
+
height: 10px;
|
648 |
+
}
|
649 |
+
|
650 |
+
.dsgvo-popup-close svg {
|
651 |
+
vertical-align: top;
|
652 |
+
}
|
653 |
+
|
654 |
+
.dsgvo-popup-close svg line {
|
655 |
+
stroke-width: 2px;
|
656 |
+
}
|
657 |
+
|
658 |
+
.dsgvo-privacy-popup .popup-top {
|
659 |
+
padding: 20px;
|
660 |
+
display: flex;
|
661 |
+
height: 85px;
|
662 |
+
box-sizing: border-box;
|
663 |
+
}
|
664 |
+
|
665 |
+
.dsgvo-privacy-popup .logo-wrapper {
|
666 |
+
width: calc(100% - 140px);
|
667 |
+
}
|
668 |
+
|
669 |
+
.dsgvo-privacy-popup .logo-wrapper img {
|
670 |
+
max-height: 45px;
|
671 |
+
max-width: 250px;
|
672 |
+
position: relative;
|
673 |
+
top: 50%;
|
674 |
+
transform: translateY(-50%);
|
675 |
+
}
|
676 |
+
|
677 |
+
@media (max-width: 480px) {
|
678 |
+
|
679 |
+
.dsgvo-privacy-popup .logo-wrapper img {
|
680 |
+
max-width: 100px;
|
681 |
+
}
|
682 |
+
|
683 |
+
}
|
684 |
+
|
685 |
+
.dsgvo-privacy-popup .lang-dropdown {
|
686 |
+
display: none;
|
687 |
+
position: absolute;
|
688 |
+
left: 0;
|
689 |
+
top: calc(100% + 10px);
|
690 |
+
width: 100%;
|
691 |
+
border: 1px solid #f1f1f1;
|
692 |
+
background-color: #ffffff;
|
693 |
+
border-radius: 5px;
|
694 |
+
z-index: 10;
|
695 |
+
}
|
696 |
+
|
697 |
+
.dsgvo-privacy-popup .lang-wrapper {
|
698 |
+
width: 100px;
|
699 |
+
}
|
700 |
+
|
701 |
+
.dsgvo-privacy-popup .lang-active {
|
702 |
+
cursor: pointer;
|
703 |
+
font-size: 12px;
|
704 |
+
font-weight: 600;
|
705 |
+
display: flex;
|
706 |
+
align-items: flex-start;
|
707 |
+
}
|
708 |
+
|
709 |
+
.dsgvo-privacy-popup .lang-active span {
|
710 |
+
width: calc(100% - 38px);
|
711 |
+
line-height: 12px;
|
712 |
+
}
|
713 |
+
|
714 |
+
.dsgvo-privacy-popup .popup-language-switcher {
|
715 |
+
position: relative;
|
716 |
+
}
|
717 |
+
|
718 |
+
.dsgvo-privacy-popup .lang-active img {
|
719 |
+
margin-right: 5px;
|
720 |
+
}
|
721 |
+
|
722 |
+
.dsgvo-privacy-popup .lang-active svg {
|
723 |
+
margin-left: 5px;
|
724 |
+
margin-top: 3px;
|
725 |
+
}
|
726 |
+
|
727 |
+
.dsgvo-privacy-popup .lang-active svg line {
|
728 |
+
stroke-width: 2px;
|
729 |
+
}
|
730 |
+
|
731 |
+
.dsgvo-privacy-popup .lang-dropdown.active {
|
732 |
+
display: block;
|
733 |
+
}
|
734 |
+
|
735 |
+
.dsgvo-privacy-popup .lang-dropdown a {
|
736 |
+
display: block;
|
737 |
+
width: 100%;
|
738 |
+
font-size: 12px;
|
739 |
+
font-weight: 600;
|
740 |
+
display: flex;
|
741 |
+
align-items: center;
|
742 |
+
line-height: 12px;
|
743 |
+
padding: 10px;
|
744 |
+
}
|
745 |
+
|
746 |
+
.dsgvo-privacy-popup .lang-dropdown a img {
|
747 |
+
margin-right: 5px;
|
748 |
+
}
|
749 |
+
|
750 |
+
.dsgvo-privacy-content {
|
751 |
+
height: calc(100% - 145px);
|
752 |
+
}
|
753 |
+
|
754 |
+
.dsgvo-privacy-popup .privacy-inner {
|
755 |
+
padding: 20px;
|
756 |
+
}
|
757 |
+
|
758 |
+
.dsgvo-privacy-popup .privacy-inner p,
|
759 |
+
.dsgvo-privacy-popup .privacy-inner span {
|
760 |
+
font-size: 14px;
|
761 |
+
line-height: 20px;
|
762 |
+
}
|
763 |
+
|
764 |
+
.dsgvo-privacy-popup .privacy-inner h1,
|
765 |
+
.dsgvo-privacy-popup .privacy-inner h2,
|
766 |
+
.dsgvo-privacy-popup .privacy-inner h3,
|
767 |
+
.dsgvo-privacy-popup .privacy-inner h4,
|
768 |
+
.dsgvo-privacy-popup .privacy-inner h5,
|
769 |
+
.dsgvo-privacy-popup .privacy-inner h6 {
|
770 |
+
font-size: 18px;
|
771 |
+
}
|
772 |
+
|
773 |
+
.dsgvo-privacy-popup .popup-bottom {
|
774 |
+
text-align: right;
|
775 |
+
padding: 10px 20px;
|
776 |
+
}
|
777 |
+
|
778 |
+
.dsgvo-privacy-popup .more-options-button {
|
779 |
+
text-transform: uppercase;
|
780 |
+
font-size: 14px;
|
781 |
+
font-weight: 600;
|
782 |
+
}
|
783 |
+
|
784 |
+
.dsgvo-privacy-popup .accept-button {
|
785 |
+
text-transform: uppercase;
|
786 |
+
font-size: 14px;
|
787 |
+
font-weight: 600;
|
788 |
+
position: relative;
|
789 |
+
padding: 10px;
|
790 |
+
display: inline-block;
|
791 |
+
margin-left: 10px;
|
792 |
+
position: relative;
|
793 |
+
}
|
794 |
+
|
795 |
+
.dsgvo-privacy-popup .accept-button.sent {
|
796 |
+
color: transparent !important;
|
797 |
+
}
|
798 |
+
|
799 |
+
.dsgvo-privacy-popup .accept-loader {
|
800 |
+
position: absolute;
|
801 |
+
display: none;
|
802 |
+
animation-name: accept-load;
|
803 |
+
animation-duration: 1s;
|
804 |
+
animation-iteration-count: infinite;
|
805 |
+
top: 50%;
|
806 |
+
left: 50%;
|
807 |
+
transform: translate(-50%, -50%);
|
808 |
+
}
|
809 |
+
|
810 |
+
.dsgvo-privacy-popup .accept-loader circle {
|
811 |
+
fill: transparent;
|
812 |
+
stroke-width: 2px;
|
813 |
+
stroke-dasharray: 50%;
|
814 |
+
}
|
815 |
+
|
816 |
+
@keyframes accept-load {
|
817 |
+
from {
|
818 |
+
transform: translate(-50%, -50%) rotate(0);
|
819 |
+
}
|
820 |
+
to {
|
821 |
+
transform: translate(-50%, -50%) rotate(360deg);
|
822 |
+
}
|
823 |
+
}
|
824 |
+
|
825 |
+
.dsgvo-privacy-popup .sent .accept-loader {
|
826 |
+
display: block;
|
827 |
+
}
|
828 |
+
|
829 |
+
.popup-accordion .accordion-wrapper {
|
830 |
+
display: none;
|
831 |
+
}
|
832 |
+
|
833 |
+
.popup-accordion .accordion-top {
|
834 |
+
position: relative;
|
835 |
+
cursor: pointer;
|
836 |
+
padding-right: 50px;
|
837 |
+
}
|
838 |
+
|
839 |
+
.popup-accordion .accordion-top span {
|
840 |
+
font-size: 18px;
|
841 |
+
font-weight: 600;
|
842 |
+
line-height: 20px;
|
843 |
+
display: block;
|
844 |
+
}
|
845 |
+
|
846 |
+
.popup-accordion .accordion-top .toggle {
|
847 |
+
position: absolute;
|
848 |
+
top: 50%;
|
849 |
+
right: 10px;
|
850 |
+
transform: translateY(-50%);
|
851 |
+
background-color: #f1f1f1;
|
852 |
+
border-radius: 50%;
|
853 |
+
width: 30px;
|
854 |
+
height: 30px;
|
855 |
+
transition: all .4s;
|
856 |
+
}
|
857 |
+
|
858 |
+
.popup-accordion .accordion-top .toggle svg {
|
859 |
+
position: absolute;
|
860 |
+
top: calc(50% + 2px);
|
861 |
+
left: 50%;
|
862 |
+
transform: translate(-50%, -50%);
|
863 |
+
}
|
864 |
+
|
865 |
+
.popup-accordion .accordion-top .toggle svg line {
|
866 |
+
stroke: #444444;
|
867 |
+
stroke-width: 2px;
|
868 |
+
}
|
869 |
+
|
870 |
+
.popup-accordion.open .accordion-top .toggle {
|
871 |
+
transform: translateY(-50%) rotate(180deg);
|
872 |
+
}
|
873 |
+
|
874 |
+
.popup-accordion.open .accordion-wrapper {
|
875 |
+
display: block;
|
876 |
+
}
|
877 |
+
|
878 |
+
.popup-accordion.open .accordion-wrapper .row {
|
879 |
+
flex-wrap: wrap;
|
880 |
+
}
|
881 |
+
|
882 |
+
.popup-accordion.open .accordion-wrapper .row {
|
883 |
+
padding-top: 10px;
|
884 |
+
padding-bottom: 10px;
|
885 |
+
}
|
886 |
+
|
887 |
+
.popup-accordion.open .accordion-wrapper h5 {
|
888 |
+
font-size: 18px;
|
889 |
+
font-weight: 600;
|
890 |
+
margin-bottom: 10px;
|
891 |
+
}
|
892 |
+
|
893 |
+
.popup-accordion.open .accordion-wrapper p {
|
894 |
+
margin-bottom: 15px;
|
895 |
+
}
|
896 |
+
|
897 |
+
.popup-accordion.open .accordion-wrapper select {
|
898 |
+
font-size: 14px;
|
899 |
+
}
|
900 |
+
|
901 |
+
.popup-accordion.open .accordion-wrapper hr {
|
902 |
+
margin: 15px 0;
|
903 |
+
}
|
904 |
+
|
905 |
+
.dsgvo-terms-content {
|
906 |
+
font-size: 14px;
|
907 |
+
line-height: 16px;
|
908 |
+
display: none;
|
909 |
+
}
|
910 |
+
|
911 |
+
.dsgvo-terms-content.active {
|
912 |
+
display: block;
|
913 |
+
}
|
public/images/logo-md.png
ADDED
Binary file
|
public/js/simplebar.js
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
*
|
3 |
+
* SimpleBar.js - v2.6.1
|
4 |
+
* Scrollbars, simpler.
|
5 |
+
* https://grsmto.github.io/simplebar/
|
6 |
+
*
|
7 |
+
* Made by Adrien Grsmto from a fork by Jonathan Nicol
|
8 |
+
* Under MIT License
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.SimpleBar=e():t.SimpleBar=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=27)}([function(t,e,n){var r=n(23)("wks"),i=n(12),o=n(1).Symbol,s="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=s&&o[t]||(s?o:i)("Symbol."+t))}).store=r},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(5),i=n(11);t.exports=n(7)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(6),i=n(33),o=n(34),s=Object.defineProperty;e.f=n(7)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(10);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(16)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports={}},function(t,e,n){var r=n(23)("keys"),i=n(12);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(1),i=n(3),o=n(4),s=n(18),c=n(19),a=function(t,e,n){var u,l,f,h,d=t&a.F,p=t&a.G,v=t&a.S,b=t&a.P,y=t&a.B,m=p?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,g=p?i:i[e]||(i[e]={}),E=g.prototype||(g.prototype={});p&&(n=e);for(u in n)l=!d&&m&&void 0!==m[u],f=(l?m:n)[u],h=y&&l?c(f,r):b&&"function"==typeof f?c(Function.call,f):f,m&&s(m,u,f,t&a.U),g[u]!=f&&o(g,u,h),b&&E[u]!=f&&(E[u]=f)};r.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(10),i=n(1).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(1),i=n(4),o=n(2),s=n(12)("src"),c=Function.toString,a=(""+c).split("toString");n(3).inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var u="function"==typeof n;u&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(u&&(o(n,s)||i(n,s,t[e]?""+t[e]:a.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[s]||c.call(this)})},function(t,e,n){var r=n(35);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(41),i=n(9);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(8),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(1),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(5).f,i=n(2),o=n(0)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(9);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function s(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,n(28);var c=r(n(53)),a=r(n(54)),u=r(n(56));n(57),Object.assign=n(58);var l=function(){function t(e,n){i(this,t),this.el=e,this.flashTimeout,this.contentEl,this.scrollContentEl,this.dragOffset={x:0,y:0},this.isVisible={x:!0,y:!0},this.scrollOffsetAttr={x:"scrollLeft",y:"scrollTop"},this.sizeAttr={x:"offsetWidth",y:"offsetHeight"},this.scrollSizeAttr={x:"scrollWidth",y:"scrollHeight"},this.offsetAttr={x:"left",y:"top"},this.globalObserver,this.mutationObserver,this.resizeObserver,this.currentAxis,this.isRtl,this.options=Object.assign({},t.defaultOptions,n),this.classNames=this.options.classNames,this.scrollbarWidth=(0,c.default)(),this.offsetSize=20,this.flashScrollbar=this.flashScrollbar.bind(this),this.onDragY=this.onDragY.bind(this),this.onDragX=this.onDragX.bind(this),this.onScrollY=this.onScrollY.bind(this),this.onScrollX=this.onScrollX.bind(this),this.drag=this.drag.bind(this),this.onEndDrag=this.onEndDrag.bind(this),this.onMouseEnter=this.onMouseEnter.bind(this),this.recalculate=(0,a.default)(this.recalculate,100,{leading:!0}),this.init()}return s(t,[{key:"init",value:function(){this.el.SimpleBar=this,this.initDOM(),this.scrollbarX=this.trackX.querySelector(".".concat(this.classNames.scrollbar)),this.scrollbarY=this.trackY.querySelector(".".concat(this.classNames.scrollbar)),this.isRtl="rtl"===getComputedStyle(this.contentEl).direction,this.scrollContentEl.style[this.isRtl?"paddingLeft":"paddingRight"]="".concat(this.scrollbarWidth||this.offsetSize,"px"),this.scrollContentEl.style.marginBottom="-".concat(2*this.scrollbarWidth||this.offsetSize,"px"),this.contentEl.style.paddingBottom="".concat(this.scrollbarWidth||this.offsetSize,"px"),0!==this.scrollbarWidth&&(this.contentEl.style[this.isRtl?"marginLeft":"marginRight"]="-".concat(this.scrollbarWidth,"px")),this.recalculate(),this.initListeners()}},{key:"initDOM",value:function(){var t=this;if(Array.from(this.el.children).filter(function(e){return e.classList.contains(t.classNames.scrollContent)}).length)this.trackX=this.el.querySelector(".".concat(this.classNames.track,".horizontal")),this.trackY=this.el.querySelector(".".concat(this.classNames.track,".vertical")),this.scrollContentEl=this.el.querySelector(".".concat(this.classNames.scrollContent)),this.contentEl=this.el.querySelector(".".concat(this.classNames.content));else{for(this.scrollContentEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.scrollContentEl.classList.add(this.classNames.scrollContent),this.contentEl.classList.add(this.classNames.content);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.scrollContentEl.appendChild(this.contentEl),this.el.appendChild(this.scrollContentEl)}if(!this.trackX||!this.trackY){var e=document.createElement("div"),n=document.createElement("div");e.classList.add(this.classNames.track),n.classList.add(this.classNames.scrollbar),e.appendChild(n),this.trackX=e.cloneNode(!0),this.trackX.classList.add("horizontal"),this.trackY=e.cloneNode(!0),this.trackY.classList.add("vertical"),this.el.insertBefore(this.trackX,this.el.firstChild),this.el.insertBefore(this.trackY,this.el.firstChild)}this.el.setAttribute("data-simplebar","init")}},{key:"initListeners",value:function(){var t=this;this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),this.scrollbarY.addEventListener("mousedown",this.onDragY),this.scrollbarX.addEventListener("mousedown",this.onDragX),this.scrollContentEl.addEventListener("scroll",this.onScrollY),this.contentEl.addEventListener("scroll",this.onScrollX),"undefined"!=typeof MutationObserver&&(this.mutationObserver=new MutationObserver(function(e){e.forEach(function(e){(t.isChildNode(e.target)||e.addedNodes.length)&&t.recalculate()})}),this.mutationObserver.observe(this.el,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this.resizeObserver=new u.default(this.recalculate.bind(this)),this.resizeObserver.observe(this.el)}},{key:"removeListeners",value:function(){this.options.autoHide&&this.el.removeEventListener("mouseenter",this.onMouseEnter),this.scrollbarX.removeEventListener("mousedown",this.onDragX),this.scrollbarY.removeEventListener("mousedown",this.onDragY),this.scrollContentEl.removeEventListener("scroll",this.onScrollY),this.contentEl.removeEventListener("scroll",this.onScrollX),this.mutationObserver.disconnect(),this.resizeObserver.disconnect()}},{key:"onDragX",value:function(t){this.onDrag(t,"x")}},{key:"onDragY",value:function(t){this.onDrag(t,"y")}},{key:"onDrag",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"y";t.preventDefault();var n="y"===e?this.scrollbarY:this.scrollbarX,r="y"===e?t.pageY:t.pageX;this.dragOffset[e]=r-n.getBoundingClientRect()[this.offsetAttr[e]],this.currentAxis=e,document.addEventListener("mousemove",this.drag),document.addEventListener("mouseup",this.onEndDrag)}},{key:"drag",value:function(t){var e,n,r;t.preventDefault(),"y"===this.currentAxis?(e=t.pageY,n=this.trackY,r=this.scrollContentEl):(e=t.pageX,n=this.trackX,r=this.contentEl);var i=e-n.getBoundingClientRect()[this.offsetAttr[this.currentAxis]]-this.dragOffset[this.currentAxis],o=i/n[this.sizeAttr[this.currentAxis]],s=o*this.contentEl[this.scrollSizeAttr[this.currentAxis]];r[this.scrollOffsetAttr[this.currentAxis]]=s}},{key:"onEndDrag",value:function(){document.removeEventListener("mousemove",this.drag),document.removeEventListener("mouseup",this.onEndDrag)}},{key:"resizeScrollbar",value:function(){var t,e,n,r,i,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"y";"x"===o?(t=this.trackX,e=this.scrollbarX,n=this.contentEl[this.scrollOffsetAttr[o]],r=this.contentSizeX,i=this.scrollbarXSize):(t=this.trackY,e=this.scrollbarY,n=this.scrollContentEl[this.scrollOffsetAttr[o]],r=this.contentSizeY,i=this.scrollbarYSize);var s=i/r,c=n/(r-i),a=Math.max(~~(s*i),this.options.scrollbarMinSize),u=~~((i-a)*c);this.isVisible[o]=i<r,this.isVisible[o]||this.options.forceVisible?(t.style.visibility="visible",this.options.forceVisible?e.style.visibility="hidden":e.style.visibility="visible","x"===o?(e.style.left="".concat(u,"px"),e.style.width="".concat(a,"px")):(e.style.top="".concat(u,"px"),e.style.height="".concat(a,"px"))):t.style.visibility="hidden"}},{key:"onScrollX",value:function(){this.flashScrollbar("x")}},{key:"onScrollY",value:function(){this.flashScrollbar("y")}},{key:"onMouseEnter",value:function(){this.flashScrollbar("x"),this.flashScrollbar("y")}},{key:"flashScrollbar",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"y";this.resizeScrollbar(t),this.showScrollbar(t)}},{key:"showScrollbar",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"y";this.isVisible[t]&&("x"===t?this.scrollbarX.classList.add("visible"):this.scrollbarY.classList.add("visible"),this.options.autoHide&&("number"==typeof this.flashTimeout&&window.clearTimeout(this.flashTimeout),this.flashTimeout=window.setTimeout(this.hideScrollbar.bind(this),1e3)))}},{key:"hideScrollbar",value:function(){this.scrollbarX.classList.remove("visible"),this.scrollbarY.classList.remove("visible"),"number"==typeof this.flashTimeout&&window.clearTimeout(this.flashTimeout)}},{key:"recalculate",value:function(){this.contentSizeX=this.contentEl[this.scrollSizeAttr.x],this.contentSizeY=this.contentEl[this.scrollSizeAttr.y]-(this.scrollbarWidth||this.offsetSize),this.scrollbarXSize=this.trackX[this.sizeAttr.x],this.scrollbarYSize=this.trackY[this.sizeAttr.y],this.resizeScrollbar("x"),this.resizeScrollbar("y"),this.options.autoHide||(this.showScrollbar("x"),this.showScrollbar("y"))}},{key:"getScrollElement",value:function(){return"y"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"y")?this.scrollContentEl:this.contentEl}},{key:"getContentElement",value:function(){return this.contentEl}},{key:"unMount",value:function(){this.removeListeners(),this.el.SimpleBar=null}},{key:"isChildNode",value:function(t){return null!==t&&(t===this.el||this.isChildNode(t.parentNode))}}],[{key:"initHtmlApi",value:function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),"undefined"!=typeof MutationObserver&&(this.globalObserver=new MutationObserver(function(e){e.forEach(function(e){Array.from(e.addedNodes).forEach(function(e){1===e.nodeType&&(e.hasAttribute("data-simplebar")?!e.SimpleBar&&new t(e,t.getElOptions(e)):Array.from(e.querySelectorAll("[data-simplebar]")).forEach(function(e){!e.SimpleBar&&new t(e,t.getElOptions(e))}))}),Array.from(e.removedNodes).forEach(function(t){1===t.nodeType&&(t.hasAttribute("data-simplebar")?t.SimpleBar&&t.SimpleBar.unMount():Array.from(t.querySelectorAll("[data-simplebar]")).forEach(function(t){t.SimpleBar&&t.SimpleBar.unMount()}))})})}),this.globalObserver.observe(document,{childList:!0,subtree:!0})),"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements.bind(this)):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))}},{key:"getElOptions",value:function(e){return Object.keys(t.htmlAttributes).reduce(function(n,r){var i=t.htmlAttributes[r];return e.hasAttribute(i)&&(n[r]=JSON.parse(e.getAttribute(i)||!0)),n},{})}},{key:"removeObserver",value:function(){this.globalObserver.disconnect()}},{key:"initDOMLoadedElements",value:function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.from(document.querySelectorAll("[data-simplebar]")).forEach(function(e){e.SimpleBar||new t(e,t.getElOptions(e))})}},{key:"defaultOptions",get:function(){return{autoHide:!0,forceVisible:!1,classNames:{content:"simplebar-content",scrollContent:"simplebar-scroll-content",scrollbar:"simplebar-scrollbar",track:"simplebar-track"},scrollbarMinSize:25}}},{key:"htmlAttributes",get:function(){return{autoHide:"data-simplebar-auto-hide",forceVisible:"data-simplebar-force-visible",scrollbarMinSize:"data-simplebar-scrollbar-min-size"}}}]),t}();e.default=l,l.initHtmlApi()},function(t,e,n){n(29),n(46),t.exports=n(3).Array.from},function(t,e,n){"use strict";var r=n(30)(!0);n(31)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(8),i=n(9);t.exports=function(t){return function(e,n){var o,s,c=String(i(e)),a=r(n),u=c.length;return a<0||a>=u?t?"":void 0:(o=c.charCodeAt(a),o<55296||o>56319||a+1===u||(s=c.charCodeAt(a+1))<56320||s>57343?t?c.charAt(a):o:t?c.slice(a,a+2):s-56320+(o-55296<<10)+65536)}}},function(t,e,n){"use strict";var r=n(32),i=n(15),o=n(18),s=n(4),c=n(2),a=n(13),u=n(36),l=n(25),f=n(45),h=n(0)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,v,b,y,m){u(n,e,v);var g,E,O,_=function(t){if(!d&&t in A)return A[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",w="values"==b,S=!1,A=t.prototype,k=A[h]||A["@@iterator"]||b&&A[b],j=k||_(b),M=b?w?_("entries"):j:void 0,L="Array"==e?A.entries||k:k;if(L&&(O=f(L.call(new t)))!==Object.prototype&&O.next&&(l(O,x,!0),r||c(O,h)||s(O,h,p)),w&&k&&"values"!==k.name&&(S=!0,j=function(){return k.call(this)}),r&&!m||!d&&!S&&A[h]||s(A,h,j),a[e]=j,a[x]=p,b)if(g={values:w?j:_("values"),keys:y?j:_("keys"),entries:M},m)for(E in g)E in A||o(A,E,g[E]);else i(i.P+i.F*(d||S),e,g);return g}},function(t,e){t.exports=!1},function(t,e,n){t.exports=!n(7)&&!n(16)(function(){return 7!=Object.defineProperty(n(17)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(10);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(37),i=n(11),o=n(25),s={};n(4)(s,n(0)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(s,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(6),i=n(38),o=n(24),s=n(14)("IE_PROTO"),c=function(){},a=function(){var t,e=n(17)("iframe"),r=o.length;for(e.style.display="none",n(44).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),a=t.F;r--;)delete a.prototype[o[r]];return a()};t.exports=Object.create||function(t,e){var n;return null!==t?(c.prototype=r(t),n=new c,c.prototype=null,n[s]=t):n=a(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(5),i=n(6),o=n(39);t.exports=n(7)?Object.defineProperties:function(t,e){i(t);for(var n,s=o(e),c=s.length,a=0;c>a;)r.f(t,n=s[a++],e[n]);return t}},function(t,e,n){var r=n(40),i=n(24);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(2),i=n(20),o=n(42)(!1),s=n(14)("IE_PROTO");t.exports=function(t,e){var n,c=i(t),a=0,u=[];for(n in c)n!=s&&r(c,n)&&u.push(n);for(;e.length>a;)r(c,n=e[a++])&&(~o(u,n)||u.push(n));return u}},function(t,e,n){var r=n(21);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e,n){var r=n(20),i=n(22),o=n(43);t.exports=function(t){return function(e,n,s){var c,a=r(e),u=i(a.length),l=o(s,u);if(t&&n!=n){for(;u>l;)if((c=a[l++])!=c)return!0}else for(;u>l;l++)if((t||l in a)&&a[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(8),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(1).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(2),i=n(26),o=n(14)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},function(t,e,n){"use strict";var r=n(19),i=n(15),o=n(26),s=n(47),c=n(48),a=n(22),u=n(49),l=n(50);i(i.S+i.F*!n(52)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,i,f,h=o(t),d="function"==typeof this?this:Array,p=arguments.length,v=p>1?arguments[1]:void 0,b=void 0!==v,y=0,m=l(h);if(b&&(v=r(v,p>2?arguments[2]:void 0,2)),void 0==m||d==Array&&c(m))for(e=a(h.length),n=new d(e);e>y;y++)u(n,y,b?v(h[y],y):h[y]);else for(f=m.call(h),n=new d;!(i=f.next()).done;y++)u(n,y,b?s(f,v,[i.value,y],!0):i.value);return n.length=y,n}})},function(t,e,n){var r=n(6);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){var r=n(13),i=n(0)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){"use strict";var r=n(5),i=n(11);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(51),i=n(0)("iterator"),o=n(13);t.exports=n(3).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){var r=n(21),i=n(0)("toStringTag"),o="Arguments"==r(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),i))?n:o?r(e):"Object"==(c=r(e))&&"function"==typeof e.callee?"Arguments":c}},function(t,e,n){var r=n(0)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],s=o[r]();s.next=function(){return{done:n=!0}},o[r]=function(){return s},t(o)}catch(t){}return n}},function(t,e,n){var r,i,o;/*! scrollbarWidth.js v0.1.3 | felixexter | MIT | https://github.com/felixexter/scrollbarWidth */
|
12 |
+
!function(n,s){i=[],r=s,void 0!==(o="function"==typeof r?r.apply(e,i):r)&&(t.exports=o)}(0,function(){"use strict";function t(){if("undefined"==typeof document)return 0;var t,e=document.body,n=document.createElement("div"),r=n.style;return r.position="absolute",r.top=r.left="-9999px",r.width=r.height="100px",r.overflow="scroll",e.appendChild(n),t=n.offsetWidth-n.clientWidth,e.removeChild(n),t}return t})},function(t,e,n){(function(e){function n(t,e,n){function i(e){var n=v,r=b;return v=b=void 0,w=e,m=t.apply(r,n)}function o(t){return w=t,g=setTimeout(l,e),S?i(t):m}function a(t){var n=t-x,r=t-w,i=e-n;return A?O(i,y-r):i}function u(t){var n=t-x,r=t-w;return void 0===x||n>=e||n<0||A&&r>=y}function l(){var t=_();if(u(t))return f(t);g=setTimeout(l,a(t))}function f(t){return g=void 0,k&&v?i(t):(v=b=void 0,m)}function h(){void 0!==g&&clearTimeout(g),w=0,v=x=b=g=void 0}function d(){return void 0===g?m:f(_())}function p(){var t=_(),n=u(t);if(v=arguments,b=this,x=t,n){if(void 0===g)return o(x);if(A)return g=setTimeout(l,e),i(x)}return void 0===g&&(g=setTimeout(l,e)),m}var v,b,y,m,g,x,w=0,S=!1,A=!1,k=!0;if("function"!=typeof t)throw new TypeError(c);return e=s(e)||0,r(n)&&(S=!!n.leading,A="maxWait"in n,y=A?E(s(n.maxWait)||0,e):y,k="trailing"in n?!!n.trailing:k),p.cancel=h,p.flush=d,p}function r(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function i(t){return!!t&&"object"==typeof t}function o(t){return"symbol"==typeof t||i(t)&&g.call(t)==u}function s(t){if("number"==typeof t)return t;if(o(t))return a;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(l,"");var n=h.test(t);return n||d.test(t)?p(t.slice(2),n?2:8):f.test(t)?a:+t}var c="Expected a function",a=NaN,u="[object Symbol]",l=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,h=/^0b[01]+$/i,d=/^0o[0-7]+$/i,p=parseInt,v="object"==typeof e&&e&&e.Object===Object&&e,b="object"==typeof self&&self&&self.Object===Object&&self,y=v||b||Function("return this")(),m=Object.prototype,g=m.toString,E=Math.max,O=Math.min,_=function(){return y.Date.now()};t.exports=n}).call(e,n(55))},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";function r(t){return parseFloat(t)||0}function i(t){return Array.prototype.slice.call(arguments,1).reduce(function(e,n){return e+r(t["border-"+n+"-width"])},0)}function o(t){for(var e=["top","right","bottom","left"],n={},i=0,o=e;i<o.length;i+=1){var s=o[i],c=t["padding-"+s];n[s]=r(c)}return n}function s(t){var e=t.getBBox();return f(0,0,e.width,e.height)}function c(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return _;var s=getComputedStyle(t),c=o(s),u=c.left+c.right,l=c.top+c.bottom,h=r(s.width),d=r(s.height);if("border-box"===s.boxSizing&&(Math.round(h+u)!==e&&(h-=i(s,"left","right")+u),Math.round(d+l)!==n&&(d-=i(s,"top","bottom")+l)),!a(t)){var p=Math.round(h+u)-e,v=Math.round(d+l)-n;1!==Math.abs(p)&&(h-=p),1!==Math.abs(v)&&(d-=v)}return f(c.left,c.top,h,d)}function a(t){return t===document.documentElement}function u(t){return d?x(t)?s(t):c(t):_}function l(t){var e=t.x,n=t.y,r=t.width,i=t.height,o="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,s=Object.create(o.prototype);return O(s,{x:e,y:n,width:r,height:i,top:n,right:e+r,bottom:i+n,left:e}),s}function f(t,e,n,r){return{x:t,y:e,width:n,height:r}}Object.defineProperty(e,"__esModule",{value:!0});var h=function(){function t(t,e){var n=-1;return t.some(function(t,r){return t[0]===e&&(n=r,!0)}),n}return"undefined"!=typeof Map?Map:function(){function e(){this.__entries__=[]}var n={size:{}};return n.size.get=function(){return this.__entries__.length},e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n<r.length;n+=1){var i=r[n];t.call(e,i[1],i[0])}},Object.defineProperties(e.prototype,n),e}()}(),d="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,p=function(){return"function"==typeof requestAnimationFrame?requestAnimationFrame:function(t){return setTimeout(function(){return t(Date.now())},1e3/60)}}(),v=2,b=function(t,e){function n(){o&&(o=!1,t()),s&&i()}function r(){p(n)}function i(){var t=Date.now();if(o){if(t-c<v)return;s=!0}else o=!0,s=!1,setTimeout(r,e);c=t}var o=!1,s=!1,c=0;return i},y=["top","right","bottom","left","width","height","size","weight"],m="undefined"!=typeof navigator&&/Trident\/.*rv:11/.test(navigator.userAgent),g="undefined"!=typeof MutationObserver&&!m,E=function(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=b(this.refresh.bind(this),20)};E.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},E.prototype.removeObserver=function(t){var e=this.observers_,n=e.indexOf(t);~n&&e.splice(n,1),!e.length&&this.connected_&&this.disconnect_()},E.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},E.prototype.updateObservers_=function(){var t=this.observers_.filter(function(t){return t.gatherActive(),t.hasActive()});return t.forEach(function(t){return t.broadcastActive()}),t.length>0},E.prototype.connect_=function(){d&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),g?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},E.prototype.disconnect_=function(){d&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},E.prototype.onTransitionEnd_=function(t){var e=t.propertyName;y.some(function(t){return!!~e.indexOf(t)})&&this.refresh()},E.getInstance=function(){return this.instance_||(this.instance_=new E),this.instance_},E.instance_=null;var O=function(t,e){for(var n=0,r=Object.keys(e);n<r.length;n+=1){var i=r[n];Object.defineProperty(t,i,{value:e[i],enumerable:!1,writable:!1,configurable:!0})}return t},_=f(0,0,0,0),x=function(){return"undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof SVGGraphicsElement}:function(t){return t instanceof SVGElement&&"function"==typeof t.getBBox}}(),w=function(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=f(0,0,0,0),this.target=t};w.prototype.isActive=function(){var t=u(this.target);return this.contentRect_=t,t.width!==this.broadcastWidth||t.height!==this.broadcastHeight},w.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t};var S=function(t,e){var n=l(e);O(this,{target:t,contentRect:n})},A=function(t,e,n){if("function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.activeObservations_=[],this.observations_=new h,this.callback_=t,this.controller_=e,this.callbackCtx_=n};A.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new w(t)),this.controller_.addObserver(this),this.controller_.refresh())}},A.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},A.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},A.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(e){e.isActive()&&t.activeObservations_.push(e)})},A.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map(function(t){return new S(t.target,t.broadcastRect())});this.callback_.call(t,e,t),this.clearActive()}},A.prototype.clearActive=function(){this.activeObservations_.splice(0)},A.prototype.hasActive=function(){return this.activeObservations_.length>0};var k="undefined"!=typeof WeakMap?new WeakMap:new h,j=function(t){if(!(this instanceof j))throw new TypeError("Cannot call a class as a function");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var e=E.getInstance(),n=new A(t,e,this);k.set(this,n)};["observe","unobserve","disconnect"].forEach(function(t){j.prototype[t]=function(){return(e=k.get(this))[t].apply(e,arguments);var e}});var M=function(){return"undefined"!=typeof ResizeObserver?ResizeObserver:j}();e.default=M},function(t,e){},function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}/*
|
13 |
+
object-assign
|
14 |
+
(c) Sindre Sorhus
|
15 |
+
@license MIT
|
16 |
+
*/
|
17 |
+
var i=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(t){r[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,c,a=r(t),u=1;u<arguments.length;u++){n=Object(arguments[u]);for(var l in n)o.call(n,l)&&(a[l]=n[l]);if(i){c=i(n);for(var f=0;f<c.length;f++)s.call(n,c[f])&&(a[c[f]]=n[c[f]])}}return a}}]).default});
|
public/js/sp-dsgvo-public.js
CHANGED
@@ -1,184 +1,349 @@
|
|
1 |
-
function getCookieValue(a) {
|
2 |
-
var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
|
3 |
-
return b ? b.pop() : '';
|
4 |
-
}
|
5 |
-
|
6 |
-
( function ( $ ) {
|
7 |
-
|
8 |
-
// set Cookie Notice
|
9 |
-
$.fn.setCookieNotice = function ( cookie_value ) {
|
10 |
-
if ( cnArgs.onScroll === 'yes' ) {
|
11 |
-
$( window ).off( 'scroll', cnHandleScroll );
|
12 |
-
}
|
13 |
-
|
14 |
-
var cnTime = new Date(),
|
15 |
-
cnLater = new Date(),
|
16 |
-
cnDomNode = $( '#cookie-notice' ),
|
17 |
-
cnSelf = this;
|
18 |
-
|
19 |
-
// set expiry time in seconds
|
20 |
-
cnLater.setTime( parseInt( cnTime.getTime() ) + parseInt( cnArgs.cookieTime ) * 1000 );
|
21 |
-
|
22 |
-
// set cookie
|
23 |
-
cookie_value = cookie_value === 'accept' ? true : false;
|
24 |
-
|
25 |
-
if (cookie_value == false && cnArgs.declineNoCookie === '1') {
|
26 |
-
// nothing to do here, user should see notice again
|
27 |
-
}
|
28 |
-
else {
|
29 |
-
document.cookie = cnArgs.cookieName + '=' + cookie_value + ';expires=' + cnLater.toGMTString() + ';' + ( cnArgs.cookieDomain !== undefined && cnArgs.cookieDomain !== '' ? 'domain=' + cnArgs.cookieDomain + ';' : '' ) + ( cnArgs.cookiePath !== undefined && cnArgs.cookiePath !== '' ? 'path=' + cnArgs.cookiePath + ';' : '' );
|
30 |
-
}
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
$( '#cookie-notice
|
85 |
-
$( '
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
//
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
var
|
149 |
-
|
150 |
-
|
151 |
-
comments_submit_button
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
//
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
function getCookieValue(a) {
|
2 |
+
var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
|
3 |
+
return b ? b.pop() : '';
|
4 |
+
}
|
5 |
+
|
6 |
+
( function ( $ ) {
|
7 |
+
|
8 |
+
// set Cookie Notice
|
9 |
+
$.fn.setCookieNotice = function ( cookie_value ) {
|
10 |
+
if ( cnArgs.onScroll === 'yes' ) {
|
11 |
+
$( window ).off( 'scroll', cnHandleScroll );
|
12 |
+
}
|
13 |
+
|
14 |
+
var cnTime = new Date(),
|
15 |
+
cnLater = new Date(),
|
16 |
+
cnDomNode = $( '#cookie-notice' ),
|
17 |
+
cnSelf = this;
|
18 |
+
|
19 |
+
// set expiry time in seconds
|
20 |
+
cnLater.setTime( parseInt( cnTime.getTime() ) + parseInt( cnArgs.cookieTime ) * 1000 );
|
21 |
+
|
22 |
+
// set cookie
|
23 |
+
cookie_value = cookie_value === 'accept' ? true : false;
|
24 |
+
|
25 |
+
if (cookie_value == false && cnArgs.declineNoCookie === '1') {
|
26 |
+
// nothing to do here, user should see notice again
|
27 |
+
}
|
28 |
+
else {
|
29 |
+
document.cookie = cnArgs.cookieName + '=' + cookie_value + ';expires=' + cnLater.toGMTString() + ';' + ( cnArgs.cookieDomain !== undefined && cnArgs.cookieDomain !== '' ? 'domain=' + cnArgs.cookieDomain + ';' : '' ) + ( cnArgs.cookiePath !== undefined && cnArgs.cookiePath !== '' ? 'path=' + cnArgs.cookiePath + ';' : '' );
|
30 |
+
}
|
31 |
+
|
32 |
+
|
33 |
+
// trigger custom event
|
34 |
+
$.event.trigger( {
|
35 |
+
type: 'setCookieNotice',
|
36 |
+
value: cookie_value,
|
37 |
+
time: cnTime,
|
38 |
+
expires: cnLater
|
39 |
+
} );
|
40 |
+
|
41 |
+
// hide message container
|
42 |
+
if ( cnArgs.hideEffect === 'fade' ) {
|
43 |
+
cnDomNode.fadeOut( 300, function () {
|
44 |
+
cnSelf.removeCookieNotice();
|
45 |
+
} );
|
46 |
+
} else if ( cnArgs.hideEffect === 'slide' ) {
|
47 |
+
cnDomNode.slideUp( 300, function () {
|
48 |
+
cnSelf.removeCookieNotice();
|
49 |
+
} );
|
50 |
+
} else {
|
51 |
+
cnSelf.removeCookieNotice();
|
52 |
+
}
|
53 |
+
|
54 |
+
if (cookie_value)
|
55 |
+
{
|
56 |
+
window['ga-disable-'+cnArgs.gaTagNumber] = false;
|
57 |
+
} else
|
58 |
+
{
|
59 |
+
window['ga-disable-'+cnArgs.gaTagNumber] = true;
|
60 |
+
}
|
61 |
+
|
62 |
+
if ( cookie_value && cnArgs.redirection === '1' ) {
|
63 |
+
var url = window.location.protocol + '//',
|
64 |
+
hostname = window.location.host + '/' + window.location.pathname;
|
65 |
+
|
66 |
+
if ( cnArgs.cache === '1' ) {
|
67 |
+
url = url + hostname.replace( '//', '/' ) + ( window.location.search === '' ? '?' : window.location.search + '&' ) + 'cn-reloaded=1' + window.location.hash;
|
68 |
+
|
69 |
+
window.location.href = url;
|
70 |
+
} else {
|
71 |
+
url = url + hostname.replace( '//', '/' ) + window.location.search + window.location.hash;
|
72 |
+
|
73 |
+
window.location.reload( true );
|
74 |
+
}
|
75 |
+
|
76 |
+
return;
|
77 |
+
} else if(cookie_value == false && cnArgs.declineTargetUrl !== '') {
|
78 |
+
window.location = cnArgs.declineTargetUrl;
|
79 |
+
}
|
80 |
+
};
|
81 |
+
|
82 |
+
// remove Cookie Notice
|
83 |
+
$.fn.removeCookieNotice = function ( cookie_value ) {
|
84 |
+
$( '#cookie-notice' ).remove();
|
85 |
+
$( '#cookie-notice-blocker' ).remove();
|
86 |
+
$( 'body' ).removeClass( 'cookies-not-accepted' );
|
87 |
+
};
|
88 |
+
|
89 |
+
$( document ).ready( function () {
|
90 |
+
var cnDomNode = $( '#cookie-notice' );
|
91 |
+
|
92 |
+
// handle on scroll
|
93 |
+
if ( cnArgs.onScroll === 'yes' ) {
|
94 |
+
cnHandleScroll = function () {
|
95 |
+
var win = $( this );
|
96 |
+
|
97 |
+
if ( win.scrollTop() > parseInt( cnArgs.onScrollOffset ) ) {
|
98 |
+
// accept cookie
|
99 |
+
win.setCookieNotice( 'accept' );
|
100 |
+
|
101 |
+
// remove itself after cookie accept
|
102 |
+
win.off( 'scroll', cnHandleScroll );
|
103 |
+
}
|
104 |
+
};
|
105 |
+
}
|
106 |
+
|
107 |
+
// handle set-cookie button click
|
108 |
+
$( document ).on( 'click', '.cn-set-cookie', function ( e ) {
|
109 |
+
e.preventDefault();
|
110 |
+
|
111 |
+
$( this ).setCookieNotice( $( this ).data( 'cookie-set' ) );
|
112 |
+
} );
|
113 |
+
|
114 |
+
// display cookie notice
|
115 |
+
if ( document.cookie.indexOf( cnArgs.cookieName ) === -1 ) {
|
116 |
+
// handle on scroll
|
117 |
+
if ( cnArgs.onScroll === 'yes' ) {
|
118 |
+
$( window ).on( 'scroll', cnHandleScroll );
|
119 |
+
}
|
120 |
+
|
121 |
+
if ( cnArgs.hideEffect === 'fade' ) {
|
122 |
+
cnDomNode.fadeIn( 300 );
|
123 |
+
} else if ( cnArgs.hideEffect === 'slide' ) {
|
124 |
+
cnDomNode.slideDown( 300 );
|
125 |
+
} else {
|
126 |
+
cnDomNode.show();
|
127 |
+
}
|
128 |
+
|
129 |
+
$( 'body' ).addClass( 'cookies-not-accepted' );
|
130 |
+
} else {
|
131 |
+
cnDomNode.removeCookieNotice();
|
132 |
+
}
|
133 |
+
|
134 |
+
// set the correct state of the ga opt-out tracker
|
135 |
+
if (cnArgs.trackerInitMoment == 'on_load') {
|
136 |
+
// it tracks until user denies cn
|
137 |
+
window['ga-disable-'+cnArgs.gaTagNumber] = getCookieValue(cnArgs.cookieName) == 'false';
|
138 |
+
} else if (cnArgs.trackerInitMoment == 'after_confirm') {
|
139 |
+
// it only tracks if user confirms
|
140 |
+
window['ga-disable-'+cnArgs.gaTagNumber] = getCookieValue(cnArgs.cookieName) != 'true';
|
141 |
+
}
|
142 |
+
|
143 |
+
|
144 |
+
// find checkbox
|
145 |
+
// on document change dissable submit button when checkbox is not
|
146 |
+
// checked
|
147 |
+
if ( cnArgs.commentsCb === '1' ) {
|
148 |
+
var gdpr_checkbox = $('input#gdpr-cb');
|
149 |
+
var errorText = $('.gdpr-cb-info-text');
|
150 |
+
var comments_submit_button = $('#commentform').find(':submit');
|
151 |
+
//var comments_submit_button = $('#send_comment');
|
152 |
+
// on document load disable button to add comments
|
153 |
+
comments_submit_button.prop('disabled', true);
|
154 |
+
comments_submit_button.addClass('gdpr-disabled');
|
155 |
+
|
156 |
+
$(document).on('change', function (e) {
|
157 |
+
if (gdpr_checkbox.prop('checked') === true) {
|
158 |
+
comments_submit_button.prop('disabled', false);
|
159 |
+
comments_submit_button.removeClass('gdpr-disabled');
|
160 |
+
errorText.css('display', 'none');
|
161 |
+
|
162 |
+
}else{
|
163 |
+
comments_submit_button.prop('disabled', true);
|
164 |
+
comments_submit_button.addClass('gdpr-disabled');
|
165 |
+
errorText.css('display', 'inline-block');
|
166 |
+
}
|
167 |
+
// TODO add event listenter for disabled button
|
168 |
+
// when is clicked and has class disabled
|
169 |
+
// show info that user has to check checkbox to submit comment
|
170 |
+
});
|
171 |
+
}
|
172 |
+
|
173 |
+
if ( cnArgs.cf7AccReplace === '1' ) {
|
174 |
+
var acceptanceLabel = $('.wpcf7-acceptance .wpcf7-list-item-label');
|
175 |
+
if (acceptanceLabel != null) {
|
176 |
+
acceptanceLabel.html(cnArgs.cf7AccText);
|
177 |
+
}
|
178 |
+
}
|
179 |
+
} );
|
180 |
+
|
181 |
+
|
182 |
+
|
183 |
+
|
184 |
+
|
185 |
+
} )( jQuery );
|
186 |
+
|
187 |
+
/* i592995 */
|
188 |
+
|
189 |
+
(function( $ ) {
|
190 |
+
'use strict';
|
191 |
+
|
192 |
+
var scrollBar = null;
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Popup close button (if no url provided)
|
196 |
+
*/
|
197 |
+
function preparePopupClose() {
|
198 |
+
var $popupClose = $('#dsgvo_popup_close'),
|
199 |
+
$overlay = $('.dsgvo-popup-overlay');
|
200 |
+
|
201 |
+
if($popupClose.hasClass('close')) {
|
202 |
+
$popupClose.on('click tap', function(event) {
|
203 |
+
event.preventDefault();
|
204 |
+
event.stopPropagation();
|
205 |
+
|
206 |
+
$overlay.remove();
|
207 |
+
});
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Language switcher click (expand/collapse)
|
213 |
+
*/
|
214 |
+
function preparePopupLangSwitcher() {
|
215 |
+
var $active = $('.lang-active'),
|
216 |
+
$dropdown = $('.lang-dropdown'),
|
217 |
+
$switcher = $('.popup-language-switcher');
|
218 |
+
|
219 |
+
$active.on('click tap', function() {
|
220 |
+
$dropdown.toggleClass('active');
|
221 |
+
});
|
222 |
+
|
223 |
+
$(document).on('click tap', function(e) {
|
224 |
+
if (!$switcher.is(e.target) && $switcher.has(e.target).length === 0) {
|
225 |
+
$dropdown.removeClass('active');
|
226 |
+
}
|
227 |
+
});
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* Popup accordion expand/collapse
|
232 |
+
*/
|
233 |
+
function preparePopupAccordion() {
|
234 |
+
var $accordion = $('.popup-accordion'),
|
235 |
+
$top = $accordion.find('.accordion-top'),
|
236 |
+
$wrapper = $accordion.find('.accordion-wrapper');
|
237 |
+
|
238 |
+
$top.on('click tap', function() {
|
239 |
+
var $inner = $wrapper.children('.accordion-inner');
|
240 |
+
$accordion.toggleClass('open');
|
241 |
+
if($accordion.hasClass('open')) {
|
242 |
+
$wrapper.css('height', $inner.outerHeight() + 'px');
|
243 |
+
} else {
|
244 |
+
$wrapper.css('height', '0');
|
245 |
+
}
|
246 |
+
});
|
247 |
+
|
248 |
+
$(window).resize(function() {
|
249 |
+
if($accordion.hasClass('open')) {
|
250 |
+
$wrapper.css('height', $wrapper.children('.accordion-inner').outerHeight() + 'px');
|
251 |
+
}
|
252 |
+
});
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* Adds Simplebar js scrollbar
|
257 |
+
*/
|
258 |
+
function prepareScrolling() {
|
259 |
+
var $moreButton = $('#more_options_button'),
|
260 |
+
$accordion = $('#popup_accordion'),
|
261 |
+
$content = $('.dsgvo-privacy-content');
|
262 |
+
|
263 |
+
if($content.length > 0) {
|
264 |
+
scrollBar = new SimpleBar($('.dsgvo-privacy-content')[0], {
|
265 |
+
autoHide: false
|
266 |
+
});
|
267 |
+
}
|
268 |
+
|
269 |
+
$moreButton.on('click tap', function(event) {
|
270 |
+
event.preventDefault();
|
271 |
+
event.stopPropagation();
|
272 |
+
|
273 |
+
if(!$accordion.hasClass('open')) {
|
274 |
+
$accordion.addClass('open');
|
275 |
+
$accordion.find('.accordion-wrapper').css('height', $accordion.find('.accordion-inner').outerHeight() + 'px');
|
276 |
+
}
|
277 |
+
scrollBar.getScrollElement().scrollTop += $accordion.position().top;
|
278 |
+
});
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Adds ajax action for popup Accept button
|
283 |
+
*/
|
284 |
+
function prepareAcceptButton() {
|
285 |
+
$('#popup_accept_button').on('click tap', function(event) {
|
286 |
+
event.preventDefault();
|
287 |
+
event.stopPropagation();
|
288 |
+
|
289 |
+
var $this = $(this),
|
290 |
+
$form = $('.privacy-settings-form'),
|
291 |
+
$selects = $form.find('select'),
|
292 |
+
values = new Array();
|
293 |
+
|
294 |
+
$this.addClass('sent');
|
295 |
+
|
296 |
+
$selects.each(function() {
|
297 |
+
var $this = $(this);
|
298 |
+
var service = new Object();
|
299 |
+
service.name = $this.attr('name');
|
300 |
+
service.value = $this.val();
|
301 |
+
values.push(service);
|
302 |
+
});
|
303 |
+
|
304 |
+
$.post( cnArgs.ajaxurl, {
|
305 |
+
action: 'user-permissions',
|
306 |
+
version: 'alt',
|
307 |
+
services: JSON.parse(JSON.stringify(values)),
|
308 |
+
},
|
309 |
+
function( data ) {
|
310 |
+
$.post( cnArgs.ajaxurl, {
|
311 |
+
action: 'popup-accept',
|
312 |
+
},
|
313 |
+
function( data ) {
|
314 |
+
$('.dsgvo-popup-overlay').remove();
|
315 |
+
} );
|
316 |
+
} );
|
317 |
+
});
|
318 |
+
|
319 |
+
}
|
320 |
+
|
321 |
+
/**
|
322 |
+
* Adds click event to terms links
|
323 |
+
*/
|
324 |
+
function prepareTermsLinks() {
|
325 |
+
var $links = $('.dsgvo-terms-toggle');
|
326 |
+
|
327 |
+
$links.on('click tap', function(event) {
|
328 |
+
event.preventDefault();
|
329 |
+
event.stopPropagation();
|
330 |
+
|
331 |
+
var $this = $(this),
|
332 |
+
$content = $('#terms_content_' + $this.attr('data-id'));
|
333 |
+
|
334 |
+
$content.addClass('active');
|
335 |
+
scrollBar.recalculate();
|
336 |
+
$(window).resize();
|
337 |
+
});
|
338 |
+
}
|
339 |
+
|
340 |
+
$(document).ready(function() {
|
341 |
+
preparePopupClose();
|
342 |
+
preparePopupLangSwitcher();
|
343 |
+
preparePopupAccordion();
|
344 |
+
prepareScrolling();
|
345 |
+
prepareAcceptButton();
|
346 |
+
prepareTermsLinks();
|
347 |
+
});
|
348 |
+
|
349 |
+
})( jQuery );
|
public/shortcodes/decline-permission.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
function SPDSGVODeclinePermissionShortcode($atts){
|
4 |
$atts = shortcode_atts(array(
|
5 |
-
'button_text' => 'Decline Terms & Conditions',
|
6 |
), $atts);
|
7 |
|
8 |
return '<span class="sp-dsgvo-framework"><a class="button" href="'. SPDSGVOExplicitPermissionAction::url(array('permission' => 'declined')) .'">'. $atts['button_text'] .'</a></span>';
|
2 |
|
3 |
function SPDSGVODeclinePermissionShortcode($atts){
|
4 |
$atts = shortcode_atts(array(
|
5 |
+
'button_text' => __('Decline Terms & Conditions', 'shapepress-dsgvo'),
|
6 |
), $atts);
|
7 |
|
8 |
return '<span class="sp-dsgvo-framework"><a class="button" href="'. SPDSGVOExplicitPermissionAction::url(array('permission' => 'declined')) .'">'. $atts['button_text'] .'</a></span>';
|
public/shortcodes/display-services.php
CHANGED
@@ -10,7 +10,7 @@ function SPDSGVODisplayServicesShortcode(){
|
|
10 |
<?= $service['reason'] ?>
|
11 |
|
12 |
<?php if($service['link']): ?>
|
13 |
-
<a href="<?= $service['link'] ?>"
|
14 |
<?php endif; ?>
|
15 |
</li>
|
16 |
<?php endforeach; ?>
|
10 |
<?= $service['reason'] ?>
|
11 |
|
12 |
<?php if($service['link']): ?>
|
13 |
+
<a href="<?= $service['link'] ?>"><?php _e('Open Terms of service','shapepress-dsgvo')?></a>
|
14 |
<?php endif; ?>
|
15 |
</li>
|
16 |
<?php endforeach; ?>
|
public/shortcodes/explicit-permission.php
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
function SPDSGVOExplicitPermissionShortcode($atts){
|
4 |
|
5 |
$content = '<div style="display:block; width:100%;">';
|
6 |
-
$content .= '<a class="sp-dsgvo-btn" href="'. SPDSGVOExplicitPermissionAction::url(['permission' => 'granted']) .'">
|
7 |
-
$content .= '<a class="sp-dsgvo-btn sp-dsgvo-btn-red" href="'. SPDSGVOExplicitPermissionAction::url(['permission' => 'declined']) .'">
|
8 |
$content .= '<div/>';
|
9 |
|
10 |
$content .= '<br/>';
|
3 |
function SPDSGVOExplicitPermissionShortcode($atts){
|
4 |
|
5 |
$content = '<div style="display:block; width:100%;">';
|
6 |
+
$content .= '<a class="sp-dsgvo-btn" href="'. SPDSGVOExplicitPermissionAction::url(['permission' => 'granted']) .'">'.__('Accepted','shapepress-dsgvo').'</a>';
|
7 |
+
$content .= '<a class="sp-dsgvo-btn sp-dsgvo-btn-red" href="'. SPDSGVOExplicitPermissionAction::url(['permission' => 'declined']) .'">'.__('Declined','shapepress-dsgvo').'</a>';
|
8 |
$content .= '<div/>';
|
9 |
|
10 |
$content .= '<br/>';
|
public/shortcodes/imprint.php
CHANGED
@@ -2,8 +2,14 @@
|
|
2 |
|
3 |
function SPDSGVOImprintShortcode(){
|
4 |
|
|
|
5 |
$imprint = SPDSGVOSettings::get('imprint');
|
6 |
|
|
|
|
|
|
|
|
|
|
|
7 |
$imprint = str_replace('[company_name]', SPDSGVOSettings::get('spdsgvo_company_info_name'), $imprint);
|
8 |
$imprint = str_replace('[company_owner]', SPDSGVOSettings::get('spdsgvo_company_law_person'), $imprint);
|
9 |
$imprint = str_replace('[adress_street]', SPDSGVOSettings::get('spdsgvo_company_info_street'), $imprint);
|
2 |
|
3 |
function SPDSGVOImprintShortcode(){
|
4 |
|
5 |
+
|
6 |
$imprint = SPDSGVOSettings::get('imprint');
|
7 |
|
8 |
+
if (spdsgvoUseWpml())
|
9 |
+
{
|
10 |
+
$imprint = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/imprint.txt'));
|
11 |
+
}
|
12 |
+
|
13 |
$imprint = str_replace('[company_name]', SPDSGVOSettings::get('spdsgvo_company_info_name'), $imprint);
|
14 |
$imprint = str_replace('[company_owner]', SPDSGVOSettings::get('spdsgvo_company_law_person'), $imprint);
|
15 |
$imprint = str_replace('[adress_street]', SPDSGVOSettings::get('spdsgvo_company_info_street'), $imprint);
|
public/shortcodes/privacy-policy.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/*
|
4 |
* params to replace
|
5 |
*
|
6 |
-
* [Einsetzen: DemoShop e.K., Inhaber: Max Muster
|
7 |
* [BITTE DATUM DER LETZTEN AKTUALISIERUNG EINTRAGEN]
|
8 |
*
|
9 |
*/
|
@@ -12,6 +12,11 @@ function SPDSGVOPrivacyPolicyShortcode(){
|
|
12 |
|
13 |
$privacyPolicy = SPDSGVOSettings::get('privacy_policy');
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
$privacyPolicy = str_replace('[company_name]', SPDSGVOSettings::get('spdsgvo_company_info_name'), $privacyPolicy);
|
16 |
$privacyPolicy = str_replace('[company_owner]', SPDSGVOSettings::get('spdsgvo_company_law_person'), $privacyPolicy);
|
17 |
$privacyPolicy = str_replace('[adress_street]', SPDSGVOSettings::get('spdsgvo_company_info_street'), $privacyPolicy);
|
3 |
/*
|
4 |
* params to replace
|
5 |
*
|
6 |
+
* [Einsetzen: DemoShop e.K., Inhaber: Max Muster Demostraße 1, 12345 Demostadt]
|
7 |
* [BITTE DATUM DER LETZTEN AKTUALISIERUNG EINTRAGEN]
|
8 |
*
|
9 |
*/
|
12 |
|
13 |
$privacyPolicy = SPDSGVOSettings::get('privacy_policy');
|
14 |
|
15 |
+
if (spdsgvoUseWpml())
|
16 |
+
{
|
17 |
+
$privacyPolicy = file_get_contents(SPDSGVO::pluginDir('/templates/'.get_locale().'/privacy-policy.txt'));
|
18 |
+
}
|
19 |
+
|
20 |
$privacyPolicy = str_replace('[company_name]', SPDSGVOSettings::get('spdsgvo_company_info_name'), $privacyPolicy);
|
21 |
$privacyPolicy = str_replace('[company_owner]', SPDSGVOSettings::get('spdsgvo_company_law_person'), $privacyPolicy);
|
22 |
$privacyPolicy = str_replace('[adress_street]', SPDSGVOSettings::get('spdsgvo_company_info_street'), $privacyPolicy);
|
public/shortcodes/privacy-settings-form-alt.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* i592995 */
|
3 |
+
/**
|
4 |
+
* Adds alternative version of privacy settings shortcode (visual changes)
|
5 |
+
*/
|
6 |
+
function SPDSGVOUserPrivacySettingsFormShortcodeAlt($atts)
|
7 |
+
{
|
8 |
+
$atts = shortcode_atts(array(
|
9 |
+
), $atts);
|
10 |
+
|
11 |
+
ob_start();
|
12 |
+
global $post;
|
13 |
+
?>
|
14 |
+
|
15 |
+
<form method="post" class="privacy-settings-form" action="<?= admin_url('/admin-ajax.php'); ?>"
|
16 |
+
class="sp-dsgvo-framework">
|
17 |
+
<input type="hidden" name="action" value="user-permissions">
|
18 |
+
<div class="container container-no-padding">
|
19 |
+
|
20 |
+
<?php foreach(SPDSGVOSettings::get('services') as $slug => $service): ?>
|
21 |
+
<div class="row">
|
22 |
+
<div class="column column-25"></div>
|
23 |
+
<div class="column column-75">
|
24 |
+
<h5><?= $service['name'] ?></h5>
|
25 |
+
</div>
|
26 |
+
<div class="column column-25">
|
27 |
+
<?php if(isset($service['image'])) : ?>
|
28 |
+
<img src="<?php echo wp_get_attachment_url(intval($service['image'])); ?>" />
|
29 |
+
<?php endif; ?>
|
30 |
+
</div>
|
31 |
+
<div class="column column-75">
|
32 |
+
<?php
|
33 |
+
if($service['link'] == get_home_url()) {
|
34 |
+
$page_id = (int) get_option( 'page_on_front' );
|
35 |
+
} else {
|
36 |
+
$page_id = url_to_postid($service['link']);
|
37 |
+
}
|
38 |
+
?>
|
39 |
+
<p>
|
40 |
+
<?= $service['reason'] ?>
|
41 |
+
<?php if ($service['name'] !== 'Cookies'):?>
|
42 |
+
<?php if($page_id == 0) : ?>
|
43 |
+
(<a href="<?= @$service['link'] ?>" target="_blank"><?php _e('Terms','shapepress-dsgvo')?></a>)
|
44 |
+
<?php else: ?>
|
45 |
+
(<a href="#" class="dsgvo-terms-toggle" data-id="<?php echo $page_id; ?>"><?php _e('Terms','shapepress-dsgvo')?></a>)
|
46 |
+
<?php
|
47 |
+
$page = get_post($page_id);
|
48 |
+
$temp = $post;
|
49 |
+
$post = $page;
|
50 |
+
setup_postdata($post);
|
51 |
+
?>
|
52 |
+
<div class="dsgvo-terms-content" id="terms_content_<?php echo $page_id; ?>">
|
53 |
+
<?php the_content(); ?>
|
54 |
+
</div><!-- .dsgvo-terms-content -->
|
55 |
+
<?php
|
56 |
+
$post = $temp;
|
57 |
+
setup_postdata($post);
|
58 |
+
?>
|
59 |
+
<?php endif; ?>
|
60 |
+
<?php endif; ?>
|
61 |
+
</p>
|
62 |
+
<select name="<?= $slug ?>">
|
63 |
+
<option
|
64 |
+
<?= (hasUserGivenPermissionFor($service['slug']))? ' selected ' : '' ?>
|
65 |
+
value="1"><?php _e('Yes','shapepress-dsgvo')?></option>
|
66 |
+
<option
|
67 |
+
<?= (hasUserGivenPermissionFor($service['slug']))? '' : ' selected ' ?>
|
68 |
+
value="0"><?php _e('No','shapepress-dsgvo')?></option>
|
69 |
+
</select>
|
70 |
+
</div>
|
71 |
+
</div>
|
72 |
+
<hr />
|
73 |
+
<?php endforeach; ?>
|
74 |
+
</div>
|
75 |
+
|
76 |
+
<?php if(!is_user_logged_in()): ?>
|
77 |
+
<p>
|
78 |
+
<small><?php _e('Since you are not logged in we save these settings in a cookie. These settings are thus only active on this PC.','shapepress-dsgvo')?></small>
|
79 |
+
</p>
|
80 |
+
<?php endif; ?>
|
81 |
+
|
82 |
+
</form>
|
83 |
+
|
84 |
+
<?php
|
85 |
+
return ob_get_clean();
|
86 |
+
}
|
87 |
+
|
88 |
+
add_shortcode('user_privacy_settings_form_alt', 'SPDSGVOUserPrivacySettingsFormShortcodeAlt');
|
89 |
+
/* i592995 */
|
public/shortcodes/privacy-settings-form.php
CHANGED
@@ -1,55 +1,57 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
function SPDSGVOUserPrivacySettingsFormShortcode($atts)
|
4 |
-
{
|
5 |
-
$atts = shortcode_atts(array(
|
6 |
-
), $atts);
|
7 |
-
|
8 |
-
ob_start();
|
9 |
?>
|
10 |
|
11 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>"
|
12 |
class="sp-dsgvo-framework">
|
13 |
<input type="hidden" name="action" value="user-permissions">
|
14 |
-
<div class="container container-no-padding">
|
15 |
-
<div class="row">
|
16 |
-
<div class="column strong"
|
17 |
-
<div class="column column-50 strong"
|
18 |
-
<div class="column strong"
|
19 |
-
<div class="column strong"
|
20 |
-
</div>
|
21 |
-
<hr />
|
22 |
-
<?php foreach(SPDSGVOSettings::get('services') as $slug => $service): ?>
|
23 |
-
<div class="row">
|
24 |
-
<div class="column"><?= $service['name'] ?></div>
|
25 |
-
<div class="column column-50"><?= $service['reason'] ?></div>
|
26 |
-
<div class="column"
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
38 |
</div>
|
39 |
|
40 |
<?php if(!is_user_logged_in()): ?>
|
41 |
<p>
|
42 |
-
<small
|
43 |
-
in einem Cookie. Diese Einstellungen sind somit nur auf diesem PC
|
44 |
-
aktiv.</small>
|
45 |
</p>
|
46 |
<?php endif; ?>
|
47 |
|
48 |
-
<input type="submit" value="
|
49 |
</form>
|
50 |
|
51 |
-
<?php
|
52 |
-
return ob_get_clean();
|
53 |
-
}
|
54 |
-
|
55 |
add_shortcode('user_privacy_settings_form', 'SPDSGVOUserPrivacySettingsFormShortcode');
|
1 |
+
<?php
|
2 |
+
|
3 |
+
function SPDSGVOUserPrivacySettingsFormShortcode($atts)
|
4 |
+
{
|
5 |
+
$atts = shortcode_atts(array(
|
6 |
+
), $atts);
|
7 |
+
|
8 |
+
ob_start();
|
9 |
?>
|
10 |
|
11 |
<form method="post" action="<?= admin_url('/admin-ajax.php'); ?>"
|
12 |
class="sp-dsgvo-framework">
|
13 |
<input type="hidden" name="action" value="user-permissions">
|
14 |
+
<div class="container container-no-padding">
|
15 |
+
<div class="row">
|
16 |
+
<div class="column strong"><?php _e('Service','shapepress-dsgvo')?></div>
|
17 |
+
<div class="column column-50 strong"><?php _e('Reason for use','shapepress-dsgvo')?></div>
|
18 |
+
<div class="column strong"><?php _e('Terms','shapepress-dsgvo')?></div>
|
19 |
+
<div class="column strong"><?php _e('Enabled','shapepress-dsgvo')?></div>
|
20 |
+
</div>
|
21 |
+
<hr />
|
22 |
+
<?php foreach(SPDSGVOSettings::get('services') as $slug => $service): ?>
|
23 |
+
<div class="row">
|
24 |
+
<div class="column"><?= $service['name'] ?></div>
|
25 |
+
<div class="column column-50"><?= $service['reason'] ?></div>
|
26 |
+
<div class="column">
|
27 |
+
<?php if ($service['name'] !== 'Cookies'):?>
|
28 |
+
<a href="<?= @$service['link'] ?>" target="_blank"><?php _e('Terms','shapepress-dsgvo')?></a>
|
29 |
+
<?php endif;?>
|
30 |
+
</div>
|
31 |
+
<div class="column"><select name="services[<?= $slug ?>]">
|
32 |
+
<option
|
33 |
+
<?= (hasUserGivenPermissionFor($service['slug']))? ' selected ' : '' ?>
|
34 |
+
value="1"><?php _e('Yes','shapepress-dsgvo')?></option>
|
35 |
+
<option
|
36 |
+
<?= (hasUserGivenPermissionFor($service['slug']))? '' : ' selected ' ?>
|
37 |
+
value="0"><?php _e('No','shapepress-dsgvo')?></option>
|
38 |
+
</select></div>
|
39 |
+
</div>
|
40 |
+
<hr />
|
41 |
+
<?php endforeach; ?>
|
42 |
</div>
|
43 |
|
44 |
<?php if(!is_user_logged_in()): ?>
|
45 |
<p>
|
46 |
+
<small><?php _e('Since you are not logged in we save these settings in a cookie. These settings are thus only active on this PC.','shapepress-dsgvo')?></small>
|
|
|
|
|
47 |
</p>
|
48 |
<?php endif; ?>
|
49 |
|
50 |
+
<input type="submit" value="<?php _e('Save','shapepress-dsgvo')?>">
|
51 |
</form>
|
52 |
|
53 |
+
<?php
|
54 |
+
return ob_get_clean();
|
55 |
+
}
|
56 |
+
|
57 |
add_shortcode('user_privacy_settings_form', 'SPDSGVOUserPrivacySettingsFormShortcode');
|
public/shortcodes/subject-access-request/download-subject-access-request.php
CHANGED
@@ -8,7 +8,7 @@ Class SPDSGVODownloadSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
8 |
|
9 |
public function run(){
|
10 |
if(!$this->has('token')){
|
11 |
-
$this->error('No token provided.');
|
12 |
}
|
13 |
|
14 |
$this->sar = SPDSGVOSubjectAccessRequest::finder('token', array(
|
@@ -16,7 +16,7 @@ Class SPDSGVODownloadSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
16 |
));
|
17 |
|
18 |
if(is_null($this->sar)){
|
19 |
-
$this->error('Bad token provided.');
|
20 |
}
|
21 |
|
22 |
switch($this->get('file', 'zip')){
|
@@ -68,10 +68,10 @@ Class SPDSGVODownloadSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
68 |
|
69 |
public function download($path){
|
70 |
if(!file_exists($path)){
|
71 |
-
echo 'Error';
|
72 |
die();
|
73 |
}
|
74 |
-
|
75 |
header('Content-Description: File Transfer');
|
76 |
header('Content-Type: application/octet-stream');
|
77 |
header('Content-Disposition: attachment; filename='. basename($path));
|
8 |
|
9 |
public function run(){
|
10 |
if(!$this->has('token')){
|
11 |
+
$this->error(__('No token provided.', 'shapepress-dsgvo'));
|
12 |
}
|
13 |
|
14 |
$this->sar = SPDSGVOSubjectAccessRequest::finder('token', array(
|
16 |
));
|
17 |
|
18 |
if(is_null($this->sar)){
|
19 |
+
$this->error(__('Bad token provided.', 'shapepress-dsgvo'));
|
20 |
}
|
21 |
|
22 |
switch($this->get('file', 'zip')){
|
68 |
|
69 |
public function download($path){
|
70 |
if(!file_exists($path)){
|
71 |
+
echo __('Error', 'shapepress-dsgvo');
|
72 |
die();
|
73 |
}
|
74 |
+
|
75 |
header('Content-Description: File Transfer');
|
76 |
header('Content-Type: application/octet-stream');
|
77 |
header('Content-Disposition: attachment; filename='. basename($path));
|
public/shortcodes/subject-access-request/subject-access-request-action.php
CHANGED
@@ -6,11 +6,11 @@ Class SPDSGVOSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
public function run(){
|
8 |
if(!$this->has('email') || empty($this->get('email'))){
|
9 |
-
$this->error('
|
10 |
}
|
11 |
|
12 |
if(!$this->has('dsgvo_checkbox') || $this->get('dsgvo_checkbox') !== '1'){
|
13 |
-
$this->error('
|
14 |
}
|
15 |
|
16 |
$sar = SPDSGVOSubjectAccessRequest::insert(array(
|
@@ -20,6 +20,14 @@ Class SPDSGVOSubjectAccessRequestAction extends SPDSGVOAjaxAction{
|
|
20 |
'dsgvo_accepted' => $this->get('dsgvo_checkbox')
|
21 |
));
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
|
24 |
if($this->has('process_now')){
|
25 |
$displayEmail = ($this->get('display_email', '0') == '1');
|
6 |
|
7 |
public function run(){
|
8 |
if(!$this->has('email') || empty($this->get('email'))){
|
9 |
+
$this->error(__('Please enter an email address','shapepress-dsgvo'));
|
10 |
}
|
11 |
|
12 |
if(!$this->has('dsgvo_checkbox') || $this->get('dsgvo_checkbox') !== '1'){
|
13 |
+
$this->error(__('The GDPR approval is mandatory.','shapepress-dsgvo'));
|
14 |
}
|
15 |
|
16 |
$sar = SPDSGVOSubjectAccessRequest::insert(array(
|
20 |
'dsgvo_accepted' => $this->get('dsgvo_checkbox')
|
21 |
));
|
22 |
|
23 |
+
if (SPDSGVOSettings::get('sar_email_notification') === '1'
|
24 |
+
&& SPDSGVOSettings::get('admin_email') !== ''
|
25 |
+
&& $this->has('process_now') == false) {
|
26 |
+
// Send Email
|
27 |
+
wp_mail(SPDSGVOSettings::get('admin_email'),
|
28 |
+
__('New subject access request','shapepress-dsgvo').': '. parse_url(home_url(), PHP_URL_HOST),
|
29 |
+
__('A new subject access request from ','shapepress-dsgvo') .' '.$this->get('email')."' was made.");
|
30 |
+
}
|
31 |
|
32 |
if($this->has('process_now')){
|
33 |
$displayEmail = ($this->get('display_email', '0') == '1');
|
public/shortcodes/subject-access-request/subject-access-request.php
CHANGED
@@ -15,7 +15,7 @@ function SPDSGVODownloadMyDataShortcode($atts){
|
|
15 |
?>
|
16 |
<?php if(isset($_REQUEST['result']) && $_REQUEST['result'] === 'success'): ?>
|
17 |
|
18 |
-
<p
|
19 |
|
20 |
<?php else: ?>
|
21 |
<form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework">
|
@@ -23,32 +23,32 @@ function SPDSGVODownloadMyDataShortcode($atts){
|
|
23 |
|
24 |
<div class="row">
|
25 |
<div class="column">
|
26 |
-
<label for="email-field"
|
27 |
-
<input required type="text" id="first-name-field" name="first_name" value="<?= $firstName ?>" placeholder="
|
28 |
</div>
|
29 |
|
30 |
<div class="column">
|
31 |
-
<label for="email-field"
|
32 |
-
<input required type="text" id="last-name-field" name="last_name" value="<?= $lastName ?>" placeholder="
|
33 |
</div>
|
34 |
</div>
|
35 |
|
36 |
-
|
37 |
<div class="column">
|
38 |
-
<label for="email-field"
|
39 |
-
<input required type="email" id="email-field" name="email" value="<?= $email ?>" placeholder="Email" spellcheck="false" />
|
40 |
</div>
|
41 |
</div>
|
42 |
<div class="row">
|
43 |
<div class="column">
|
44 |
<label for="dsgvo-checkbox">
|
45 |
<input required type="checkbox" id="dsgvo-checkbox" name="dsgvo_checkbox" value="1" />
|
46 |
-
<span style="font-weight:normal"><?= convDeChars(SPDSGVOSettings::get('sar_dsgvo_accepted_text')); ?></span>
|
47 |
</label>
|
48 |
</div>
|
49 |
</div>
|
50 |
<br>
|
51 |
-
<input type="submit" value="
|
52 |
</fieldset>
|
53 |
</form>
|
54 |
<?php endif; ?>
|
15 |
?>
|
16 |
<?php if(isset($_REQUEST['result']) && $_REQUEST['result'] === 'success'): ?>
|
17 |
|
18 |
+
<p><?php _e('Your request has been created','shapepress-dsgvo')?> <br> <?php _e('You will receive an email from us with a current extract of your data stored with us.','shapepress-dsgvo')?></p>
|
19 |
|
20 |
<?php else: ?>
|
21 |
<form method="post" action="<?= SPDSGVOSubjectAccessRequestAction::url() ?>" class="sp-dsgvo-framework">
|
23 |
|
24 |
<div class="row">
|
25 |
<div class="column">
|
26 |
+
<label for="email-field"><?php _e('First name','shapepress-dsgvo')?></label>
|
27 |
+
<input required type="text" id="first-name-field" name="first_name" value="<?= $firstName ?>" placeholder="<?php _e('First name','shapepress-dsgvo')?>" spellcheck="false" />
|
28 |
</div>
|
29 |
|
30 |
<div class="column">
|
31 |
+
<label for="email-field"><?php _e('Last name','shapepress-dsgvo')?></label>
|
32 |
+
<input required type="text" id="last-name-field" name="last_name" value="<?= $lastName ?>" placeholder="<?php _e('Last name','shapepress-dsgvo')?>" spellcheck="false" />
|
33 |
</div>
|
34 |
</div>
|
35 |
|
36 |
+
<div class="row">
|
37 |
<div class="column">
|
38 |
+
<label for="email-field"><?php _e('Email','shapepress-dsgvo')?></label>
|
39 |
+
<input required type="email" id="email-field" name="email" value="<?= $email ?>" placeholder="<?php _e('Email','shapepress-dsgvo')?>" spellcheck="false" />
|
40 |
</div>
|
41 |
</div>
|
42 |
<div class="row">
|
43 |
<div class="column">
|
44 |
<label for="dsgvo-checkbox">
|
45 |
<input required type="checkbox" id="dsgvo-checkbox" name="dsgvo_checkbox" value="1" />
|
46 |
+
<span style="font-weight:normal"><?= spdsgvoUseWpml() ? __('I agree to the storage of the data for processing within the meaning of the GDPR.','shapepress-dsgvo') : convDeChars(SPDSGVOSettings::get('sar_dsgvo_accepted_text')); ?></span>
|
47 |
</label>
|
48 |
</div>
|
49 |
</div>
|
50 |
<br>
|
51 |
+
<input type="submit" value="<?php _e('Create request','shapepress-dsgvo')?>" />
|
52 |
</fieldset>
|
53 |
</form>
|
54 |
<?php endif; ?>
|
public/shortcodes/super-unsubscribe/unsubscribe-confirm-action.php
CHANGED
@@ -7,7 +7,7 @@ Class SPDSGVOSuperUnsubscribeConfirmAction extends SPDSGVOAjaxAction{
|
|
7 |
public function run(){
|
8 |
|
9 |
if(!$this->has('token')){
|
10 |
-
$this->error('No token provided.');
|
11 |
}
|
12 |
|
13 |
$unsubscriber = SPDSGVOUnsubscriber::finder('token', array(
|
@@ -15,7 +15,7 @@ Class SPDSGVOSuperUnsubscribeConfirmAction extends SPDSGVOAjaxAction{
|
|
15 |
));
|
16 |
|
17 |
if(is_null($unsubscriber)){
|
18 |
-
$this->error('Bad token provided
|
19 |
}
|
20 |
|
21 |
if(SPDSGVOSettings::get('unsubscribe_auto_delete') == '1'){
|
7 |
public function run(){
|
8 |
|
9 |
if(!$this->has('token')){
|
10 |
+
$this->error(__('No token provided.','shapepress-dsgvo'));
|
11 |
}
|
12 |
|
13 |
$unsubscriber = SPDSGVOUnsubscriber::finder('token', array(
|
15 |
));
|
16 |
|
17 |
if(is_null($unsubscriber)){
|
18 |
+
$this->error(__('Bad token provided','shapepress-dsgvo'));
|
19 |
}
|
20 |
|
21 |
if(SPDSGVOSettings::get('unsubscribe_auto_delete') == '1'){
|
public/shortcodes/super-unsubscribe/unsubscribe-form-action.php
CHANGED
@@ -6,21 +6,31 @@ Class SPDSGVOSuperUnsubscribeFormAction extends SPDSGVOAjaxAction{
|
|
6 |
|
7 |
public function run(){
|
8 |
if(!$this->has('email') || empty($this->get('email'))){
|
9 |
-
$this->error('
|
10 |
}
|
11 |
|
12 |
if(!$this->has('dsgvo_checkbox') || $this->get('dsgvo_checkbox') !== '1'){
|
13 |
-
$this->error('
|
14 |
}
|
15 |
|
16 |
$unsubscriber = SPDSGVOUnsubscriber::insert(array(
|
17 |
'first_name' => $this->get('first_name'),
|
18 |
'last_name' => $this->get('last_name'),
|
19 |
'email' => $this->get('email'),
|
20 |
-
'
|
21 |
-
'
|
22 |
));
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
if($this->has('process_now')){
|
25 |
$unsubscriber->doSuperUnsubscribe();
|
26 |
}
|
6 |
|
7 |
public function run(){
|
8 |
if(!$this->has('email') || empty($this->get('email'))){
|
9 |
+
$this->error(__('Please enter an email address.','shapepress-dsgvo'));
|
10 |
}
|
11 |
|
12 |
if(!$this->has('dsgvo_checkbox') || $this->get('dsgvo_checkbox') !== '1'){
|
13 |
+
$this->error(__('The GDPR approval is mandatory.','shapepress-dsgvo'));
|
14 |
}
|
15 |
|
16 |
$unsubscriber = SPDSGVOUnsubscriber::insert(array(
|
17 |
'first_name' => $this->get('first_name'),
|
18 |
'last_name' => $this->get('last_name'),
|
19 |
'email' => $this->get('email'),
|
20 |
+
'process_now'=> $this->get('process_now'),
|
21 |
+
'dsgvo_accepted' => $this->get('dsgvo_checkbox')
|
22 |
));
|
23 |
|
24 |
+
if (SPDSGVOSettings::get('su_email_notification') === '1'
|
25 |
+
&& SPDSGVOSettings::get('admin_email') !== ''
|
26 |
+
&& $this->has('process_now') == false)
|
27 |
+
{
|
28 |
+
// Send Email
|
29 |
+
wp_mail(SPDSGVOSettings::get('admin_email'),
|
30 |
+
__('New delete request','shapepress-dsgvo').': '. parse_url(home_url(), PHP_URL_HOST),
|
31 |
+
__('A new subject access request from ','shapepress-dsgvo') .' '.$this->get('email')."' was made.");
|
32 |
+
}
|
33 |
+
|
34 |
if($this->has('process_now')){
|
35 |
$unsubscriber->doSuperUnsubscribe();
|
36 |
}
|
public/shortcodes/super-unsubscribe/unsubscribe-form.php
CHANGED
@@ -16,43 +16,43 @@ function SPDSGVOUnsubscribeShortcode($atts){
|
|
16 |
?>
|
17 |
<?php if(isset($_REQUEST['result']) && $_REQUEST['result'] === 'success'): ?>
|
18 |
|
19 |
-
<p
|
20 |
|
21 |
<?php elseif(isset($_REQUEST['result']) && $_REQUEST['result'] === 'confirmed'): ?>
|
22 |
|
23 |
-
<p
|
24 |
|
25 |
<?php else: ?>
|
26 |
<form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" class="sp-dsgvo-framework">
|
27 |
<fieldset>
|
28 |
<div class="row">
|
29 |
<div class="column">
|
30 |
-
<label for="email-field"
|
31 |
-
<input required type="text" id="first-name-field" name="first_name" value="<?= $firstName ?>" placeholder="
|
32 |
</div>
|
33 |
|
34 |
<div class="column">
|
35 |
-
<label for="email-field"
|
36 |
-
<input required type="text" id="last-name-field" name="last_name" value="<?= $lastName ?>" placeholder="
|
37 |
</div>
|
38 |
</div>
|
39 |
|
40 |
-
|
41 |
<div class="column">
|
42 |
-
<label for="email-field"
|
43 |
-
<input required type="email" id="email-field" name="email" value="<?= $email ?>" placeholder="Email" spellcheck="false" />
|
44 |
</div>
|
45 |
</div>
|
46 |
<div class="row">
|
47 |
<div class="column">
|
48 |
<label for="dsgvo-checkbox">
|
49 |
<input required type="checkbox" id="dsgvo-checkbox" name="dsgvo_checkbox" value="1" />
|
50 |
-
<span style="font-weight:normal"><?= convDeChars(SPDSGVOSettings::get('su_dsgvo_accepted_text')); ?></span>
|
51 |
</label>
|
52 |
</div>
|
53 |
</div>
|
54 |
<br>
|
55 |
-
<input type="submit" value="
|
56 |
</fieldset>
|
57 |
</form>
|
58 |
<?php endif; ?>
|
16 |
?>
|
17 |
<?php if(isset($_REQUEST['result']) && $_REQUEST['result'] === 'success'): ?>
|
18 |
|
19 |
+
<p><?php _e('Request sent successfully. You will receive an email in a few minutes.','shapepress-dsgvo')?></p>
|
20 |
|
21 |
<?php elseif(isset($_REQUEST['result']) && $_REQUEST['result'] === 'confirmed'): ?>
|
22 |
|
23 |
+
<p><?php _e('Request successfully completed. Your data has been completely deleted.','shapepress-dsgvo')?></p>
|
24 |
|
25 |
<?php else: ?>
|
26 |
<form method="post" action="<?= SPDSGVOSuperUnsubscribeFormAction::url() ?>" class="sp-dsgvo-framework">
|
27 |
<fieldset>
|
28 |
<div class="row">
|
29 |
<div class="column">
|
30 |
+
<label for="email-field"><?php _e('First name','shapepress-dsgvo')?></label>
|
31 |
+
<input required type="text" id="first-name-field" name="first_name" value="<?= $firstName ?>" placeholder="<?php _e('First name','shapepress-dsgvo')?>" spellcheck="false" />
|
32 |
</div>
|
33 |
|
34 |
<div class="column">
|
35 |
+
<label for="email-field"><?php _e('Last name','shapepress-dsgvo')?></label>
|
36 |
+
<input required type="text" id="last-name-field" name="last_name" value="<?= $lastName ?>" placeholder="<?php _e('Last name','shapepress-dsgvo')?>" spellcheck="false" />
|
37 |
</div>
|
38 |
</div>
|
39 |
|
40 |
+
<div class="row">
|
41 |
<div class="column">
|
42 |
+
<label for="email-field"><?php _e('Email','shapepress-dsgvo')?></label>
|
43 |
+
<input required type="email" id="email-field" name="email" value="<?= $email ?>" placeholder="<?php _e('Email','shapepress-dsgvo')?>" spellcheck="false" />
|
44 |
</div>
|
45 |
</div>
|
46 |
<div class="row">
|
47 |
<div class="column">
|
48 |
<label for="dsgvo-checkbox">
|
49 |
<input required type="checkbox" id="dsgvo-checkbox" name="dsgvo_checkbox" value="1" />
|
50 |
+
<span style="font-weight:normal"><?= spdsgvoUseWpml() ? __('I agree to the storage of the data for processing within the meaning of the GDPR.','shapepress-dsgvo') : convDeChars(SPDSGVOSettings::get('su_dsgvo_accepted_text')); ?></span>
|
51 |
</label>
|
52 |
</div>
|
53 |
</div>
|
54 |
<br>
|
55 |
+
<input type="submit" value="<?php _e('Create delete request','shapepress-dsgvo')?>" />
|
56 |
</fieldset>
|
57 |
</form>
|
58 |
<?php endif; ?>
|
sp-dsgvo.php
CHANGED
@@ -1,78 +1,81 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* The plugin bootstrap file
|
5 |
-
*
|
6 |
-
* This file is read by WordPress to generate the plugin information in the plugin
|
7 |
-
* admin area. This file also includes all of the dependencies used by the plugin,
|
8 |
-
* registers the activation and deactivation functions, and defines a function
|
9 |
-
* that starts the plugin.
|
10 |
-
*
|
11 |
-
* @link https://wp-dsgvo.eu
|
12 |
-
* @since 1.0.0
|
13 |
-
* @package WP DSGVO Tools
|
14 |
-
*
|
15 |
-
* @wordpress-plugin
|
16 |
-
* Plugin Name: WP DSGVO Tools
|
17 |
-
* Plugin URI: https://wp-dsgvo.eu
|
18 |
-
* Description: WP DSGVO Tools helfen beim Erfüllen der Richtlinien der Datenschutzgrundverordnung (<a target="_blank" href="https://ico.org.uk/for-organisations/data-protection-reform/overview-of-the-gdpr/">DSGVO</a>), spezialisiert auf Österreich und Deutschland.
|
19 |
-
* Version:
|
20 |
-
* Author: Shapepress eU
|
21 |
-
* Author URI: https://www.shapepress.com
|
22 |
-
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
23 |
-
* Text Domain: shapepress-dsgvo
|
24 |
-
*/
|
25 |
-
|
26 |
-
// If this file is called directly, abort.
|
27 |
-
if (! defined('WPINC')) {
|
28 |
-
die();
|
29 |
-
}
|
30 |
-
|
31 |
-
define('sp_dsgvo_VERSION', '
|
32 |
-
define('sp_dsgvo_NAME', 'sp-dsgvo');
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
*
|
68 |
-
*
|
69 |
-
*
|
70 |
-
*
|
71 |
-
*
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
78 |
add_action('init', 'run_sp_dsgvo');
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* The plugin bootstrap file
|
5 |
+
*
|
6 |
+
* This file is read by WordPress to generate the plugin information in the plugin
|
7 |
+
* admin area. This file also includes all of the dependencies used by the plugin,
|
8 |
+
* registers the activation and deactivation functions, and defines a function
|
9 |
+
* that starts the plugin.
|
10 |
+
*
|
11 |
+
* @link https://wp-dsgvo.eu
|
12 |
+
* @since 1.0.0
|
13 |
+
* @package WP DSGVO Tools
|
14 |
+
*
|
15 |
+
* @wordpress-plugin
|
16 |
+
* Plugin Name: WP DSGVO Tools
|
17 |
+
* Plugin URI: https://wp-dsgvo.eu
|
18 |
+
* Description: WP DSGVO Tools helfen beim Erfüllen der Richtlinien der Datenschutzgrundverordnung (<a target="_blank" href="https://ico.org.uk/for-organisations/data-protection-reform/overview-of-the-gdpr/">DSGVO</a>), spezialisiert auf Österreich und Deutschland.
|
19 |
+
* Version: 2.0.0
|
20 |
+
* Author: Shapepress eU
|
21 |
+
* Author URI: https://www.shapepress.com
|
22 |
+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
23 |
+
* Text Domain: shapepress-dsgvo
|
24 |
+
*/
|
25 |
+
|
26 |
+
// If this file is called directly, abort.
|
27 |
+
if (! defined('WPINC')) {
|
28 |
+
die();
|
29 |
+
}
|
30 |
+
|
31 |
+
define('sp_dsgvo_VERSION', '2.0.0');
|
32 |
+
define('sp_dsgvo_NAME', 'sp-dsgvo');
|
33 |
+
/* i592995 */
|
34 |
+
define('sp_dsgvo_URL', plugin_dir_url( __FILE__ ));
|
35 |
+
/* i592995 */
|
36 |
+
|
37 |
+
/**
|
38 |
+
* The code that runs during plugin activation.
|
39 |
+
* This action is documented in includes/class-sp-dsgvo-activator.php
|
40 |
+
*/
|
41 |
+
function activate_sp_dsgvo()
|
42 |
+
{
|
43 |
+
require_once plugin_dir_path(__FILE__) . 'includes/class-sp-dsgvo-activator.php';
|
44 |
+
SPDSGVOActivator::activate();
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* The code that runs during plugin deactivation.
|
49 |
+
* This action is documented in includes/class-sp-dsgvo-deactivator.php
|
50 |
+
*/
|
51 |
+
function deactivate_sp_dsgvo()
|
52 |
+
{
|
53 |
+
require_once plugin_dir_path(__FILE__) . 'includes/class-sp-dsgvo-deactivator.php';
|
54 |
+
SPDSGVODeactivator::deactivate();
|
55 |
+
}
|
56 |
+
|
57 |
+
register_activation_hook(__FILE__, 'activate_sp_dsgvo');
|
58 |
+
register_deactivation_hook(__FILE__, 'deactivate_sp_dsgvo');
|
59 |
+
|
60 |
+
/**
|
61 |
+
* The core plugin class that is used to define internationalization,
|
62 |
+
* admin-specific hooks, and public-facing site hooks.
|
63 |
+
*/
|
64 |
+
require plugin_dir_path(__FILE__) . 'includes/class-sp-dsgvo.php';
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Begins execution of the plugin.
|
68 |
+
*
|
69 |
+
* Since everything within the plugin is registered via hooks,
|
70 |
+
* then kicking off the plugin from this point in the file does
|
71 |
+
* not affect the page life cycle.
|
72 |
+
*
|
73 |
+
* @since 1.0.0
|
74 |
+
*/
|
75 |
+
function run_sp_dsgvo()
|
76 |
+
{
|
77 |
+
load_plugin_textdomain('shapepress-dsgvo', false, 'shapepress-dsgvo/languages');
|
78 |
+
$plugin = SPDSGVO::instance();
|
79 |
+
$plugin->run();
|
80 |
+
}
|
81 |
add_action('init', 'run_sp_dsgvo');
|
templates/de_DE/emails/feedback.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1><?php _e('WP DSGVO Tools Feedback', 'shapepress-dsgvo'); ?></h1>
|
2 |
+
|
3 |
+
<p>
|
4 |
+
<strong><?php _e('From', 'shapepress-dsgvo'); ?>:</strong><br>
|
5 |
+
{{home_url}} <br>
|
6 |
+
{{user}}
|
7 |
+
</p>
|
8 |
+
|
9 |
+
<p>
|
10 |
+
<strong><?php _e('Reason', 'shapepress-dsgvo'); ?>:</strong><br>
|
11 |
+
{{reason}}
|
12 |
+
</p>
|
13 |
+
|
14 |
+
<p>
|
15 |
+
<strong><?php _e('Message', 'shapepress-dsgvo'); ?>:</strong><br>
|
16 |
+
{{message}}
|
17 |
+
</p>
|
templates/de_DE/emails/footer.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
</table>
|
2 |
+
</td>
|
3 |
+
</tr>
|
4 |
+
</tbody>
|
5 |
+
</table>
|
6 |
+
</td>
|
7 |
+
</tr>
|
8 |
+
</tbody>
|
9 |
+
</table>
|
10 |
+
</body>
|
11 |
+
</html>
|
templates/de_DE/emails/header.php
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5 |
+
<title>WP DSGVO Tools</title>
|
6 |
+
<style type="text/css">
|
7 |
+
body {
|
8 |
+
padding-top: 0 !important;
|
9 |
+
padding-bottom: 0 !important;
|
10 |
+
padding-top: 0 !important;
|
11 |
+
padding-bottom: 0 !important;
|
12 |
+
margin:0 !important;
|
13 |
+
width: 100% !important;
|
14 |
+
-webkit-text-size-adjust: 100% !important;
|
15 |
+
-ms-text-size-adjust: 100% !important;
|
16 |
+
-webkit-font-smoothing: antialiased !important;
|
17 |
+
}
|
18 |
+
.tableContent img {
|
19 |
+
border: 0 !important;
|
20 |
+
display: block !important;
|
21 |
+
outline: none !important;
|
22 |
+
}
|
23 |
+
a{
|
24 |
+
color:#382F2E;
|
25 |
+
}
|
26 |
+
p, h1,h2,ul,ol,li,div{
|
27 |
+
margin:0;
|
28 |
+
padding:0;
|
29 |
+
}
|
30 |
+
h1,h2{
|
31 |
+
font-weight: normal;
|
32 |
+
background:transparent !important;
|
33 |
+
border:none !important;
|
34 |
+
}
|
35 |
+
@media only screen and (max-width:480px)
|
36 |
+
{
|
37 |
+
table[class="MainContainer"], td[class="cell"]
|
38 |
+
{
|
39 |
+
width: 100% !important;
|
40 |
+
height:auto !important;
|
41 |
+
}
|
42 |
+
td[class="specbundle"]
|
43 |
+
{
|
44 |
+
width: 100% !important;
|
45 |
+
float:left !important;
|
46 |
+
font-size:13px !important;
|
47 |
+
line-height:17px !important;
|
48 |
+
display:block !important;
|
49 |
+
padding-bottom:15px !important;
|
50 |
+
}
|
51 |
+
td[class="specbundle2"]
|
52 |
+
{
|
53 |
+
width:80% !important;
|
54 |
+
float:left !important;
|
55 |
+
font-size:13px !important;
|
56 |
+
line-height:17px !important;
|
57 |
+
display:block !important;
|
58 |
+
padding-bottom:10px !important;
|
59 |
+
padding-left:10% !important;
|
60 |
+
padding-right:10% !important;
|
61 |
+
}
|
62 |
+
td[class="spechide"]
|
63 |
+
{
|
64 |
+
display:none !important;
|
65 |
+
}
|
66 |
+
img[class="banner"]
|
67 |
+
{
|
68 |
+
width: 100% !important;
|
69 |
+
height: auto !important;
|
70 |
+
}
|
71 |
+
td[class="left_pad"]
|
72 |
+
{
|
73 |
+
padding-left:15px !important;
|
74 |
+
padding-right:15px !important;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
@media only screen and (max-width:540px)
|
78 |
+
{
|
79 |
+
table[class="MainContainer"], td[class="cell"]
|
80 |
+
{
|
81 |
+
width: 100% !important;
|
82 |
+
height:auto !important;
|
83 |
+
}
|
84 |
+
td[class="specbundle"]
|
85 |
+
{
|
86 |
+
width: 100% !important;
|
87 |
+
float:left !important;
|
88 |
+
font-size:13px !important;
|
89 |
+
line-height:17px !important;
|
90 |
+
display:block !important;
|
91 |
+
padding-bottom:15px !important;
|
92 |
+
}
|
93 |
+
td[class="specbundle2"]
|
94 |
+
{
|
95 |
+
width:80% !important;
|
96 |
+
float:left !important;
|
97 |
+
font-size:13px !important;
|
98 |
+
line-height:17px !important;
|
99 |
+
display:block !important;
|
100 |
+
padding-bottom:10px !important;
|
101 |
+
padding-left:10% !important;
|
102 |
+
padding-right:10% !important;
|
103 |
+
}
|
104 |
+
td[class="spechide"]
|
105 |
+
{
|
106 |
+
display:none !important;
|
107 |
+
}
|
108 |
+
img[class="banner"]
|
109 |
+
{
|
110 |
+
width: 100% !important;
|
111 |
+
height: auto !important;
|
112 |
+
}
|
113 |
+
td[class="left_pad"]
|
114 |
+
{
|
115 |
+
padding-left:15px !important;
|
116 |
+
padding-right:15px !important;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
.contentEditable h2.big,.contentEditable h1.big{
|
120 |
+
font-size: 26px !important;
|
121 |
+
}
|
122 |
+
.contentEditable h2.bigger,.contentEditable h1.bigger{
|
123 |
+
font-size: 37px !important;
|
124 |
+
}
|
125 |
+
td,table{
|
126 |
+
vertical-align: top;
|
127 |
+
}
|
128 |
+
td.middle{
|
129 |
+
vertical-align: middle;
|
130 |
+
}
|
131 |
+
a.link1{
|
132 |
+
font-size:13px;
|
133 |
+
color:#27A1E5;
|
134 |
+
line-height: 24px;
|
135 |
+
text-decoration:none;
|
136 |
+
}
|
137 |
+
a{
|
138 |
+
text-decoration: none;
|
139 |
+
}
|
140 |
+
.link2{
|
141 |
+
color:#ffffff;
|
142 |
+
border-top:10px solid #27A1E5;
|
143 |
+
border-bottom:10px solid #27A1E5;
|
144 |
+
border-left:18px solid #27A1E5;
|
145 |
+
border-right:18px solid #27A1E5;
|
146 |
+
border-radius:3px;
|
147 |
+
-moz-border-radius:3px;
|
148 |
+
-webkit-border-radius:3px;
|
149 |
+
background:#27A1E5;
|
150 |
+
}
|
151 |
+
.link3{
|
152 |
+
color:#555555;
|
153 |
+
border:1px solid #cccccc;
|
154 |
+
padding:10px 18px;
|
155 |
+
border-radius:3px;
|
156 |
+
-moz-border-radius:3px;
|
157 |
+
-webkit-border-radius:3px;
|
158 |
+
background:#ffffff;
|
159 |
+
}
|
160 |
+
.link4{
|
161 |
+
color:#27A1E5;
|
162 |
+
line-height: 24px;
|
163 |
+
}
|
164 |
+
h2,h1{
|
165 |
+
line-height: 20px;
|
166 |
+
}
|
167 |
+
p{
|
168 |
+
font-size: 14px;
|
169 |
+
line-height: 21px;
|
170 |
+
color:#AAAAAA;
|
171 |
+
}
|
172 |
+
.contentEditable li{
|
173 |
+
}
|
174 |
+
.appart p{
|
175 |
+
}
|
176 |
+
.bgItem{
|
177 |
+
background: #ffffff;
|
178 |
+
}
|
179 |
+
.bgBody{
|
180 |
+
background: #ffffff;
|
181 |
+
}
|
182 |
+
img {
|
183 |
+
outline:none;
|
184 |
+
text-decoration:none;
|
185 |
+
-ms-interpolation-mode: bicubic;
|
186 |
+
width: auto;
|
187 |
+
max-width: 100%;
|
188 |
+
clear: both;
|
189 |
+
display: block;
|
190 |
+
float: none;
|
191 |
+
}
|
192 |
+
|
193 |
+
ul ul{
|
194 |
+
margin-left: 15px;
|
195 |
+
}
|
196 |
+
ul li{
|
197 |
+
color:#444444;
|
198 |
+
}
|
199 |
+
</style>
|
200 |
+
<script type="colorScheme" class="swatch active">
|
201 |
+
{
|
202 |
+
"name":"Default",
|
203 |
+
"bgBody":"ffffff",
|
204 |
+
"link":"27A1E5",
|
205 |
+
"color":"AAAAAA",
|
206 |
+
"bgItem":"ffffff",
|
207 |
+
"title":"444444"
|
208 |
+
}
|
209 |
+
</script>
|
210 |
+
</head>
|
211 |
+
<body paddingwidth="0" paddingheight="0" bgcolor="#d1d3d4" style="padding-top: 0; padding-bottom: 0; padding-top: 0; padding-bottom: 0; background-repeat: repeat; width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-font-smoothing: antialiased;" offset="0" toppadding="0" leftpadding="0">
|
212 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
213 |
+
<tbody>
|
214 |
+
<tr>
|
215 |
+
<td>
|
216 |
+
<table width="600" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#ffffff" style="font-family:helvetica, sans-serif;" class="MainContainer">
|
217 |
+
<tbody>
|
218 |
+
<tr>
|
219 |
+
<td>
|
220 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
templates/de_DE/emails/subject-access-request.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br>
|
21 |
+
<?php _e('Subject Access Request', 'shapepress-dsgvo'); ?>
|
22 |
+
</h1>
|
23 |
+
</td>
|
24 |
+
</tr>
|
25 |
+
</tbody>
|
26 |
+
</table> <!-- End Header -->
|
27 |
+
</td>
|
28 |
+
</tr>
|
29 |
+
<tr>
|
30 |
+
<td align="center" valign="top">
|
31 |
+
<!-- Body -->
|
32 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
33 |
+
id="template_body">
|
34 |
+
<tbody>
|
35 |
+
<tr>
|
36 |
+
<td valign="top" id="body_content"
|
37 |
+
style="background-color: #fdfdfd;">
|
38 |
+
<!-- Content -->
|
39 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
40 |
+
width="100%">
|
41 |
+
<tbody>
|
42 |
+
<tr>
|
43 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
44 |
+
<div id="body_content_inner"
|
45 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your subject access request. A PDF document containing all the data we have stored about you is attached.
|
47 |
+
Amount of personal data found', 'shapepress-dsgvo'); ?> {{count}}</p>
|
48 |
+
<p style="margin: 0 0 16px;">
|
49 |
+
<?php _e('Here you see a summary about this data', 'shapepress-dsgvo'); ?>:<br>
|
50 |
+
{{breakdown}}
|
51 |
+
</p>
|
52 |
+
<h2 style="font-size: 20px;"><?php _e('Download your archive', 'shapepress-dsgvo'); ?></h2>
|
53 |
+
<br>
|
54 |
+
<p><?php _e('Following this link you can download a PDF and a JSON file dump of your data.', 'shapepress-dsgvo'); ?><br>
|
55 |
+
<br> <a target='_blank' href="{{zip_link}}"
|
56 |
+
class='link2' style='color: #202020'><?php _e('Download archive', 'shapepress-dsgvo'); ?></a>
|
57 |
+
</p>
|
58 |
+
<h2
|
59 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
60 |
+
<a color: #202020 target='_blank'
|
61 |
+
href="{{confirm_link}}"></a>
|
62 |
+
</h2>
|
63 |
+
<p style="margin: 0 0 16px;"> </p>
|
64 |
+
</div>
|
65 |
+
</td>
|
66 |
+
</tr>
|
67 |
+
</tbody>
|
68 |
+
</table> <!-- End Content -->
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
</tbody>
|
72 |
+
</table> <!-- End Body -->
|
73 |
+
</td>
|
74 |
+
</tr>
|
75 |
+
<tr>
|
76 |
+
<td align="center" valign="top">
|
77 |
+
<!-- Footer -->
|
78 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
79 |
+
id="template_footer">
|
80 |
+
<tbody>
|
81 |
+
<tr>
|
82 |
+
<td valign="top"
|
83 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
84 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
85 |
+
width="100%">
|
86 |
+
<tbody>
|
87 |
+
<tr>
|
88 |
+
<td colspan="2" valign="middle" id="credit"
|
89 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
90 |
+
<div class="wgm-wrap-email-appendixes"
|
91 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
92 |
+
<div style="float: left; width: 100%;">
|
93 |
+
<h3
|
94 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
95 |
+
</div>
|
96 |
+
<div style="float: left; width: 100%;">
|
97 |
+
<h3
|
98 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
99 |
+
{{admin_email}}</h3>
|
100 |
+
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
</td>
|
104 |
+
</tr>
|
105 |
+
</tbody>
|
106 |
+
</table>
|
107 |
+
</td>
|
108 |
+
</tr>
|
109 |
+
</tbody>
|
110 |
+
</table> <!-- End Footer -->
|
111 |
+
</td>
|
112 |
+
</tr>
|
113 |
+
</tbody>
|
114 |
+
</table></td>
|
115 |
+
</tr>
|
116 |
+
</tbody>
|
templates/de_DE/emails/super-unsubscribe.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br><?php _e('Delete Request', 'shapepress-dsgvo'); ?>
|
21 |
+
</h1>
|
22 |
+
</td>
|
23 |
+
</tr>
|
24 |
+
</tbody>
|
25 |
+
</table> <!-- End Header -->
|
26 |
+
</td>
|
27 |
+
</tr>
|
28 |
+
<tr>
|
29 |
+
<td align="center" valign="top">
|
30 |
+
<!-- Body -->
|
31 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
32 |
+
id="template_body">
|
33 |
+
<tbody>
|
34 |
+
<tr>
|
35 |
+
<td valign="top" id="body_content"
|
36 |
+
style="background-color: #fdfdfd;">
|
37 |
+
<!-- Content -->
|
38 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
39 |
+
width="100%">
|
40 |
+
<tbody>
|
41 |
+
<tr>
|
42 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
43 |
+
<div id="body_content_inner"
|
44 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
45 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your delete request.', 'shapepress-dsgvo'); ?></p>
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('If you confirm the following link, all your data stored at
|
47 |
+
{{website}} gets deleted.', 'shapepress-dsgvo'); ?></p>
|
48 |
+
<h2
|
49 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
50 |
+
<a color: #ffc600 target='_blank'
|
51 |
+
href="{{confirm_link}}"><?php _e('Confirm Delete', 'shapepress-dsgvo'); ?></a>
|
52 |
+
</h2>
|
53 |
+
<p style="margin: 0 0 16px;"><?php _e("If you don't want do delete your data just ignore this email.", 'shapepress-dsgvo'); ?></p>
|
54 |
+
</div>
|
55 |
+
</td>
|
56 |
+
</tr>
|
57 |
+
</tbody>
|
58 |
+
</table> <!-- End Content -->
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
</tbody>
|
62 |
+
</table> <!-- End Body -->
|
63 |
+
</td>
|
64 |
+
</tr>
|
65 |
+
<tr>
|
66 |
+
<td align="center" valign="top">
|
67 |
+
<!-- Footer -->
|
68 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
69 |
+
id="template_footer">
|
70 |
+
<tbody>
|
71 |
+
<tr>
|
72 |
+
<td valign="top"
|
73 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
74 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
75 |
+
width="100%">
|
76 |
+
<tbody>
|
77 |
+
<tr>
|
78 |
+
<td colspan="2" valign="middle" id="credit"
|
79 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
80 |
+
<div class="wgm-wrap-email-appendixes"
|
81 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
82 |
+
<div style="float: left; width: 100%;">
|
83 |
+
<h3
|
84 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
85 |
+
</div>
|
86 |
+
<div style="float: left; width: 100%;">
|
87 |
+
<h3
|
88 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
89 |
+
{{admin_email}}</h3>
|
90 |
+
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
</td>
|
94 |
+
</tr>
|
95 |
+
</tbody>
|
96 |
+
</table>
|
97 |
+
</td>
|
98 |
+
</tr>
|
99 |
+
</tbody>
|
100 |
+
</table> <!-- End Footer -->
|
101 |
+
</td>
|
102 |
+
</tr>
|
103 |
+
</tbody>
|
104 |
+
</table></td>
|
105 |
+
</tr>
|
106 |
+
</tbody>
|
templates/de_DE/imprint.txt
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[company_name]
|
2 |
+
Inhaber: [company_owner]
|
3 |
+
[adress_street]
|
4 |
+
[adress_zip_location]
|
5 |
+
|
6 |
+
Geschäftsführung: [company_law_person]
|
7 |
+
Gesellschafter: [company_management]
|
8 |
+
|
9 |
+
Telefonnummer: [comm_phone]
|
10 |
+
E-Mailadresse: [comm_email]
|
11 |
+
|
12 |
+
Registergericht & Registernummer: [company_register_court], [company_register_nr]
|
13 |
+
|
14 |
+
Umsatzsteuer-Identifikationsnummer: [company_uid]
|
15 |
+
|
16 |
+
Inhaltlich verantwortlich: [content_responsible]
|
17 |
+
|
18 |
+
Plattform der Europäischen Kommission zur Online-Streitbeilegung (OS) für Verbraucher: <a href"https://ec.europa.eu/consumers/odr/" target="_blank">https://ec.europa.eu/consumers/odr/</a>. Wir sind nicht bereit und nicht verpflichtet an einem Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.
|
templates/de_DE/privacy-policy.txt
ADDED
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>Datenschutzerklärung und Einwilligungen</h1>
|
2 |
+
|
3 |
+
Inhaltsverzeichnis
|
4 |
+
1. Zielsetzung und verantwortliche Stelle
|
5 |
+
2. Grundsätzliche Angaben zur Datenverarbeitung
|
6 |
+
3. Verarbeitung personenbezogener Daten
|
7 |
+
4. Erhebung von Zugriffsdaten
|
8 |
+
5. Cookies & Reichweitenmessung
|
9 |
+
6. Google Analytics
|
10 |
+
7. Google-Re/Marketing-Services
|
11 |
+
8. Facebook Social Plugins
|
12 |
+
9. Facebook Remarketing
|
13 |
+
10. Newsletter
|
14 |
+
11. Einbindung von Diensten und Inhalten Dritter
|
15 |
+
12. Rechte der Nutzer und Löschung
|
16 |
+
13. Änderungen der Datenschutzerklärung
|
17 |
+
|
18 |
+
<h2>1. Zielsetzung und verantwortliche Stelle</h2>
|
19 |
+
|
20 |
+
Diese Datenschutzerklärung klärt über die Art, den Umfang und Zweck der Verarbeitung (u.a. Erhebung, Verarbeitung und Nutzung sowie Einholung von Einwilligungen) von personenbezogenen Daten innerhalb unseres Onlineangebotes und der mit ihm verbundenen Webseiten, Funktionen und Inhalte (nachfolgend gemeinsam bezeichnet als "Onlineangebot" oder "Website") auf. Die Datenschutzerklärung gilt unabhängig von den verwendeten Domains, Systemen, Plattformen und Geräten (z.B. Desktop oder Mobile) auf denen das Onlineangebot ausgeführt wird.
|
21 |
+
|
22 |
+
Anbieter des Onlineangebotes und die datenschutzrechtlich verantwortliche Stelle ist [company_name], Inhaber: [company_owner], [adress_street], [adress_zip_location] (nachfolgend bezeichnet als "AnbieterIn", "wir" oder "uns"). Für die Kontaktmöglichkeiten verweisen wir auf unser Impressum
|
23 |
+
|
24 |
+
Der Begriff "Nutzer" umfasst alle Kunden und Besucher unseres Onlineangebotes. Die verwendeten Begrifflichkeiten, wie z.B. "Nutzer" sind geschlechtsneutral zu verstehen.
|
25 |
+
|
26 |
+
<h2>2. Grundsätzliche Angaben zur Datenverarbeitung</h2>
|
27 |
+
|
28 |
+
Wir verarbeiten personenbezogene Daten der Nutzer nur unter Einhaltung der einschlägigen Datenschutzbestimmungen entsprechend den Geboten der Datensparsamkeit- und Datenvermeidung. Das bedeutet die Daten der Nutzer werden nur beim Vorliegen einer gesetzlichen Erlaubnis, insbesondere wenn die Daten zur Erbringung unserer vertraglichen Leistungen sowie Online-Services erforderlich, bzw. gesetzlich vorgeschrieben sind oder beim Vorliegen einer Einwilligung verarbeitet.
|
29 |
+
|
30 |
+
Wir treffen organisatorische, vertragliche und technische Sicherheitsmaßnahmen entsprechend dem Stand der Technik, um sicher zu stellen, dass die Vorschriften der Datenschutzgesetze eingehalten werden und um damit die durch uns verarbeiteten Daten gegen zufällige oder vorsätzliche Manipulationen, Verlust, Zerstörung oder gegen den Zugriff unberechtigter Personen zu schützen.
|
31 |
+
|
32 |
+
Sofern im Rahmen dieser Datenschutzerklärung Inhalte, Werkzeuge oder sonstige Mittel von anderen Anbietern (nachfolgend gemeinsam bezeichnet als "Dritt-Anbieter") eingesetzt werden und deren genannter Sitz im Ausland ist, ist davon auszugehen, dass ein Datentransfer in die Sitzstaaten der Dritt-Anbieter stattfindet. Die Übermittlung von Daten in Drittstaaten erfolgt entweder auf Grundlage einer gesetzlichen Erlaubnis, einer Einwilligung der Nutzer oder spezieller Vertragsklauseln, die eine gesetzlich vorausgesetzte Sicherheit der Daten gewährleisten.
|
33 |
+
|
34 |
+
<h2>3. Verarbeitung personenbezogener Daten</h2>
|
35 |
+
|
36 |
+
Die personenbezogenen Daten werden, neben den ausdrücklich in dieser Datenschutzerklärung genannten Verwendung, für die folgenden Zwecke auf Grundlage gesetzlicher Erlaubnisse oder Einwilligungen der Nutzer verarbeitet:
|
37 |
+
- Die Zurverfügungstellung, Ausführung, Pflege, Optimierung und Sicherung unserer Dienste-, Service- und Nutzerleistungen;
|
38 |
+
- Die Gewährleistung eines effektiven Kundendienstes und technischen Supports.
|
39 |
+
|
40 |
+
Wir übermitteln die Daten der Nutzer an Dritte nur, wenn dies für Abrechnungszwecke notwendig ist (z.B. an einen Zahlungsdienstleister) oder für andere Zwecke, wenn diese notwendig sind, um unsere vertraglichen Verpflichtungen gegenüber den Nutzern zu erfüllen (z.B. Adressmitteilung an Lieferanten).
|
41 |
+
|
42 |
+
Bei der Kontaktaufnahme mit uns (per Kontaktformular oder Email) werden die Angaben des Nutzers zwecks Bearbeitung der Anfrage sowie für den Fall, dass Anschlussfragen entstehen, gespeichert.
|
43 |
+
Personenbezogene Daten werden gelöscht, sofern sie ihren Verwendungszweck erfüllt haben und der Löschung keine Aufbewahrungspflichten entgegenstehen.
|
44 |
+
|
45 |
+
<h2>4. Erhebung von Zugriffsdaten</h2>
|
46 |
+
|
47 |
+
Wir erheben Daten über jeden Zugriff auf den Server, auf dem sich dieser Dienst befindet (so genannte Serverlogfiles). Zu den Zugriffsdaten gehören Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.
|
48 |
+
|
49 |
+
Wir verwenden die Protokolldaten ohne Zuordnung zur Person des Nutzers oder sonstiger Profilerstellung entsprechend den gesetzlichen Bestimmungen nur für statistische Auswertungen zum Zweck des Betriebs, der Sicherheit und der Optimierung unseres Onlineangebotes. Wir behalten uns jedoch vor, die Protokolldaten nachträglich zu überprüfen, wenn aufgrund konkreter Anhaltspunkte der berechtigte Verdacht einer rechtswidrigen Nutzung besteht.
|
50 |
+
|
51 |
+
<h2>5. Cookies & Reichweitenmessung</h2>
|
52 |
+
|
53 |
+
Cookies sind Informationen, die von unserem Webserver oder Webservern Dritter an die Web-Browser der Nutzer übertragen und dort für einen späteren Abruf gespeichert werden. Über den Einsatz von Cookies im Rahmen pseudonymer Reichweitenmessung werden die Nutzer im Rahmen dieser Datenschutzerklärung informiert.
|
54 |
+
|
55 |
+
Die Betrachtung dieses Onlineangebotes ist auch unter Ausschluss von Cookies möglich. Falls die Nutzer nicht möchten, dass Cookies auf ihrem Rechner gespeichert werden, werden sie gebeten die entsprechende Option in den Systemeinstellungen ihres Browsers zu deaktivieren. Gespeicherte Cookies können in den Systemeinstellungen des Browsers gelöscht werden. Der Ausschluss von Cookies kann zu Funktionseinschränkungen dieses Onlineangebotes führen.
|
56 |
+
|
57 |
+
Es besteht die Möglichkeit, viele Online-Anzeigen-Cookies von Unternehmen über die US-amerikanische Seite <a href="http://www.aboutads.info/choices" target="_blank">http://www.aboutads.info/choices</a> oder die EU-Seite <a href="http://www.youronlinechoices.com/uk/your-ad-choices/" target="_blank">http://www.youronlinechoices.com/uk/your-ad-choices/</a> zu verwalten.
|
58 |
+
|
59 |
+
<h2>6. Google Analytics</h2>
|
60 |
+
|
61 |
+
Wir setzen Google Analytics, einen Webanalysedienst der Google Inc. ("Google") ein. Google verwendet Cookies. Die durch das Cookie erzeugten Informationen über Benutzung des Onlineangebotes durch die Nutzer werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert.
|
62 |
+
|
63 |
+
Google wird diese Informationen in unserem Auftrag benutzen, um die Nutzung unseres Onlineangebotes durch die Nutzer auszuwerten, um Reports über die Aktivitäten innerhalb dieses Onlineangebotes zusammenzustellen und um weitere mit der Nutzung dieses Onlineangebotes und der Internetnutzung verbundene Dienstleistungen uns gegenüber zu erbringen. Dabei können aus den verarbeiteten Daten pseudonyme Nutzungsprofile der Nutzer erstellt werden.
|
64 |
+
|
65 |
+
Wir setzen Google Analytics nur mit aktivierter IP-Anonymisierung ein. Das bedeutet, die IP-Adresse der Nutzer wird von Google innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum gekürzt. Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt.
|
66 |
+
|
67 |
+
Die von dem Browser des Nutzers übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt. Die Nutzer können die Speicherung der Cookies durch eine entsprechende Einstellung ihrer Browser-Software verhindern; die Nutzer können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf ihre Nutzung des Onlineangebotes bezogenen Daten an Google sowie die Verarbeitung dieser Daten durch Google verhindern, indem sie das unter dem folgenden Link verfügbare Browser-Plugin herunterladen und installieren: <a href="http://tools.google.com/dlpage/gaoptout?hl=de" target="_blank">http://tools.google.com/dlpage/gaoptout?hl=de</a>.
|
68 |
+
|
69 |
+
Weitere Informationen zur Datennutzung zu Werbezwecken durch Google, Einstellungs- und Widerspruchsmöglichkeiten erfahren Sie auf den Webseiten von Google: <a href="https://www.google.com/intl/de/policies/privacy/partners" target="_blank">https://www.google.com/intl/de/policies/privacy/partners</a> ("Datennutzung durch Google bei Ihrer Nutzung von Websites oder Apps unserer Partner"), <a href="http://www.google.com/policies/technologies/ads" target="_blank">http://www.google.com/policies/technologies/ads</a> ("Datennutzung zu Werbezwecken"), <a href="http://www.google.de/settings/ads" target="_blank">http://www.google.de/settings/ads</a> ("Informationen verwalten, die Google verwendet, um Ihnen Werbung einzublenden") und <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a> ("Bestimmen Sie, welche Werbung Google Ihnen zeigt").
|
70 |
+
|
71 |
+
<h2>7. Google-Re/Marketing-Services</h2>
|
72 |
+
|
73 |
+
Wir nutzen die Marketing- und Remarketing-Dienste (kurz "Google-Marketing-Services") der Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, ("Google").
|
74 |
+
|
75 |
+
Die Google-Marketing-Services erlauben uns Werbeanzeigen für und auf unserer Website gezielter anzuzeigen, um Nutzern nur Anzeigen zu präsentieren, die potentiell deren Interessen entsprechen. Falls Nutzer z.B. Anzeigen für Produkte angezeigt werden, für die er sich auf anderen Webseiten interessiert hat, spricht man hierbei vom "Remarketing". Zu diesen Zwecken wird bei Aufruf unserer und anderer Webseiten, auf denen Google-Marketing-Services aktiv sind, unmittelbar durch Google ein Code von Google ausgeführt und es werden in die Website sog. (Re)marketing-Tags (unsichtbare Grafiken oder Code, auch als "Web Beacons" bezeichnet) in die Webseite eingebunden. Mit deren Hilfe wird auf dem Gerät der Nutzer ein individuelles Cookie, d.h. eine kleine Datei abgespeichert (statt Cookies können auch vergleichbare Technologien verwendet werden). Die Cookies können von verschiedenen Domains gesetzt werden, unter anderem von google.com, doubleclick.net, invitemedia.com, admeld.com, googlesyndication.com oder googleadservices.com. In dieser Datei wird vermerkt, welche Webseiten der Nutzer aufgesucht, für welche Inhalte er sich interessiert und welche Angebote er geklickt hat, ferner technische Informationen zum Browser und Betriebssystem, verweisende Webseiten, Besuchszeit sowie weitere Angaben zur Nutzung des Onlineangebotes. Es wird ebenfalls die IP-Adresse der Nutzer erfasst, wobei wir im Rahmen von Google-Analytics mitteilen, dass die IP-Adresse innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum gekürzt und nur in Ausnahmefällen ganz an einen Server von Google in den USA übertragen und dort gekürzt wird. Die IP-Adresse wird nicht mit Daten des Nutzers innerhalb von anderen Angeboten von Google zusammengeführt. Diese vorstehend genannten Informationen können auch mit solchen Informationen aus anderen Quellen verbunden werden. Wenn der Nutzer anschließend andere Webseiten besucht, können ihm entsprechend seiner Interessen die auf ihn abgestimmten Anzeigen angezeigt werden.
|
76 |
+
|
77 |
+
Die Daten der Nutzer werden im Rahmen der Google-Marketing-Services pseudonym verarbeitet. D.h. Google speichert und verarbeitet z.B. nicht den Namen oder E-Mailadresse der Nutzer, sondern verarbeitet die relevanten Daten Cookie-bezogen innerhalb pseudonymer Nutzer-Profile. D.h. aus der Sicht von Google werden die Anzeigen nicht für eine konkret identifizierte Person verwaltet und angezeigt, sondern für den Cookie-Inhaber, unabhängig davon wer dieser Cookie-Inhaber ist. Dies gilt nicht, wenn ein Nutzer Google ausdrücklich erlaubt hat, die Daten ohne diese Pseudonymisierung zu verarbeiten. Die von "DoubleClick" über die Nutzer gesammelten Informationen werden an Google übermittelt und auf Googles Servern in den USA gespeichert.
|
78 |
+
|
79 |
+
Zu den von uns eingesetzten Google-Marketing-Services gehört u.a. das Online-Werbeprogramm "Google AdWords". Im Fall von Google AdWords, erhält jeder AdWords-Kunde ein anderes "Conversion-Cookie". Cookies können somit nicht über die Websites von AdWords-Kunden nachverfolgt werden. Die mit Hilfe des Cookies eingeholten Informationen dienen dazu, Conversion-Statistiken für AdWords-Kunden zu erstellen, die sich für Conversion-Tracking entschieden haben. Die AdWords-Kunden erfahren die Gesamtanzahl der Nutzer, die auf ihre Anzeige geklickt haben und zu einer mit einem Conversion-Tracking-Tag versehenen Seite weitergeleitet wurden. Sie erhalten jedoch keine Informationen, mit denen sich Nutzer persönlich identifizieren lassen.
|
80 |
+
|
81 |
+
Wir binden auf Grundlage des Google-Marketing-Services "DoubleClick" Werbeanzeigen Dritter ein. DoubleClick verwendet Cookies, mit dem Google und seinen Partner-Websites, die Schaltung von Anzeigen auf Basis der Besuche von Nutzern auf dieser Website bzw. anderen Websites im Internet ermöglicht wird.
|
82 |
+
|
83 |
+
Wir binden ferner auf Grundlage des Google-Marketing-Services "AdSense" Werbeanzeigen Dritter ein. AdSense verwendet Cookies, mit dem Google und seinen Partner-Websites, die Schaltung von Anzeigen auf Basis der Besuche von Nutzern auf dieser Website bzw. anderen Websites im Internet ermöglicht wird.
|
84 |
+
|
85 |
+
Ein weiterer von uns genutzter Google-Marketing-Service ist der "Google Tag Manager", mit dessen Hilfe weitere Google Analyse- und Marketing-Dienste in unsere Website eingebunden werden können (z.B. "AdWords", "DoubleClick" oder "Google Analytics").
|
86 |
+
|
87 |
+
Weitere Informationen zur Datennutzung zu Marketingzwecken durch Google, erfahren Sie auf der Übersichtsseite: <a href="https://www.google.com/policies/technologies/ads" target="_blank">https://www.google.com/policies/technologies/ads</a>, die Datenschutzerklärung von Google ist unter <a href="https://www.google.com/policies/privacy" target="_blank">https://www.google.com/policies/privacy</a> abrufbar.
|
88 |
+
|
89 |
+
Wenn Sie der Erfassung durch Google-Marketing-Services widersprechen möchten, können Sie die von Google gestellten Einstellungs- und Opt-Out-Möglichkeiten nutzen: <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a>.
|
90 |
+
|
91 |
+
<h2>8. Facebook Social Plugins</h2>
|
92 |
+
|
93 |
+
Unser Onlineangebot verwendet Social Plugins ("Plugins") des sozialen Netzwerkes facebook.com, welches von der Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbour, Dublin 2, Irland betrieben wird ("Facebook"). Die Plugins sind an einem der Facebook Logos erkennbar (weißes "f" auf blauer Kachel, den Begriffen "Like", "Gefällt mir" oder einem "Daumen hoch"-Zeichen) oder sind mit dem Zusatz "Facebook Social Plugin" gekennzeichnet. Die Liste und das Aussehen der Facebook Social Plugins kann hier eingesehen werden: <a href="https://developers.facebook.com/docs/plugins/" target="_blank">https://developers.facebook.com/docs/plugins/</a>.
|
94 |
+
|
95 |
+
Wenn ein Nutzer eine Funktion dieses Onlineangebotes aufruft, die ein solches Plugin enthält, baut sein Gerät eine direkte Verbindung mit den Servern von Facebook auf. Der Inhalt des Plugins wird von Facebook direkt an das Gerät des Nutzers übermittelt und von diesem in das Onlineangebot eingebunden. Dabei können aus den verarbeiteten Daten Nutzungsprofile der Nutzer erstellt werden. Wir haben daher keinen Einfluss auf den Umfang der Daten, die Facebook mit Hilfe dieses Plugins erhebt und informiert die Nutzer daher entsprechend unserem Kenntnisstand.
|
96 |
+
|
97 |
+
Durch die Einbindung der Plugins erhält Facebook die Information, dass ein Nutzer die entsprechende Seite des Onlineangebotes aufgerufen hat. Ist der Nutzer bei Facebook eingeloggt, kann Facebook den Besuch seinem Facebook-Konto zuordnen. Wenn Nutzer mit den Plugins interagieren, zum Beispiel den Like Button betätigen oder einen Kommentar abgeben, wird die entsprechende Information von Ihrem Gerät direkt an Facebook übermittelt und dort gespeichert. Falls ein Nutzer kein Mitglied von Facebook ist, besteht trotzdem die Möglichkeit, dass Facebook seine IP-Adresse in Erfahrung bringt und speichert. Laut Facebook wird in Deutschland nur eine anonymisierte IP-Adresse gespeichert.
|
98 |
+
|
99 |
+
Zweck und Umfang der Datenerhebung und die weitere Verarbeitung und Nutzung der Daten durch Facebook sowie die diesbezüglichen Rechte und Einstellungsmöglichkeiten zum Schutz der Privatsphäre der Nutzer, können diese den Datenschutzhinweisen von Facebook entnehmen: <a href="https://www.facebook.com/about/privacy/" target="_blank">https://www.facebook.com/about/privacy/</a>.
|
100 |
+
|
101 |
+
Wenn ein Nutzer Facebookmitglied ist und nicht möchte, dass Facebook über dieses Onlineangebot Daten über ihn sammelt und mit seinen bei Facebook gespeicherten Mitgliedsdaten verknüpft, muss er sich vor der Nutzung unseres Onlineangebotes bei Facebook ausloggen und seine Cookies löschen. Weitere Einstellungen und Widersprüche zur Nutzung von Daten für Werbezwecke, sind innerhalb der Facebook-Profileinstellungen möglich: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> oder über die US-amerikanische Seite <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> oder die EU-Seite <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a>. Die Einstellungen erfolgen plattformunabhängig, d.h. sie werden für alle Geräte, wie Desktopcomputer oder mobile Geräte übernommen.
|
102 |
+
|
103 |
+
<h2>9. Facebook Remarketing</h2>
|
104 |
+
|
105 |
+
Innerhalb unseres Onlineangebotes werden sog. "Facebook-Pixel" des sozialen Netzwerkes Facebook, welches von der Facebook Inc., 1 Hacker Way, Menlo Park, CA 94025, USA, bzw. falls Sie in der EU ansässig sind, Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbour, Dublin 2, Irland betrieben wird ("Facebook"), eingesetzt. Mit Hilfe des Facebook-Pixels ist es Facebook möglich, die Besucher unseres Angebotes als Zielgruppe für die Darstellung von Anzeigen, sog. "Facebook-Ads" zu bestimmen. Dementsprechend setzen wir das Facebook -Pixel ein, um die durch uns geschalteten Facebook-Ads nur solchen Facebook-Nutzern anzuzeigen, die auch ein Interesse an unserem Internetangebot gezeigt haben. Das heißt, mit Hilfe des Facebook -Pixels möchten wir sicherstellen, dass unsere Facebook-Ads dem potentiellen Interesse der Nutzer entsprechen und nicht belästigend wirken. Mit Hilfe des Facebook-Pixels können wir ferner die Wirksamkeit der Facebook-Werbeanzeigen für statistische und Marktforschungszwecke nachvollziehen, in dem wir sehen ob Nutzer nachdem Klick auf eine Facebook-Werbeanzeige auf unsere Website weitergeleitet wurden.
|
106 |
+
|
107 |
+
Der Facebook-Pixel wird beim Aufruf unserer Webseiten unmittelbar durch Facebook eingebunden und können auf Ihrem Gerät ein sog. Cookie, d.h. eine kleine Datei abspeichern. Wenn Sie sich anschließend bei Facebook einloggen oder im eingeloggten Zustand Facebook besuchen, wird der Besuch unseres Angebotes in Ihrem Profil vermerkt. Die über Sie erhobenen Daten sind für uns anonym, bieten uns also keine Rückschlüsse auf die Identität der Nutzer. Allerdings werden die Daten von Facebook gespeichert und verarbeitet, sodass eine Verbindung zum jeweiligen Nutzerprofil möglich ist. Die Verarbeitung der Daten durch Facebook erfolgt im Rahmen von Facebooks Datenverwendungsrichtlinie. Dementsprechend erhalten Sie weitere Informationen zur Funktionsweise des Remarketing-Pixels und generell zur Darstellung von Facebook-Ads, in der Datenverwendungsrichtlinie von Facebook: <a href="https://www.facebook.com/policy.php" target="_blank">https://www.facebook.com/policy.php</a>.
|
108 |
+
|
109 |
+
Sie können der Erfassung durch den Facebook-Pixel und Verwendung Ihrer Daten zur Darstellung von Facebook-Ads widersprechen. Hierzu können Sie die von Facebook eingerichtete Seite aufrufen und dort die Hinweise zu den Einstellungen nutzungsbasierter Werbung befolgen: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> oder den Widerspruch über die US-amerikanische Seite <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> oder die EU-Seite <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a> erklären. Die Einstellungen erfolgen plattformunabhängig, d.h. sie werden für alle Geräte, wie Desktopcomputer oder mobile Geräte übernommen.
|
110 |
+
|
111 |
+
<h2>10. Newsletter</h2>
|
112 |
+
|
113 |
+
Mit den nachfolgenden Hinweisen klären wir Sie über die Inhalte unseres Newsletters sowie das Anmelde-, Versand- und das statistische Auswertungsverfahren sowie Ihre Widerspruchsrechte auf. Indem Sie unseren Newsletter abonnieren, erklären Sie sich mit dem Empfang und den beschriebenen Verfahren einverstanden.
|
114 |
+
|
115 |
+
Inhalt des Newsletters: Wir versenden Newsletter, E-Mails und weitere elektronische Benachrichtigungen mit werblichen Informationen (nachfolgend "Newsletter") nur mit der Einwilligung der Empfänger oder einer gesetzlichen Erlaubnis. Sofern im Rahmen einer Anmeldung zum Newsletter dessen Inhalte konkret umschrieben werden, sind sie für die Einwilligung der Nutzer maßgeblich. Im Übrigen enthalten unsere Newsletter folgende Informationen: unsere Produkte, Angebote, Aktionen und unser Unternehmen.
|
116 |
+
|
117 |
+
Double-Opt-In und Protokollierung: Die Anmeldung zu unserem Newsletter erfolgt in einem sog. Double-Opt-In-Verfahren. D.h. Sie erhalten nach der Anmeldung eine E-Mail, in der Sie um die Bestätigung Ihrer Anmeldung gebeten werden. Diese Bestätigung ist notwendig, damit sich niemand mit fremden E-Mailadressen anmelden kann. Die Anmeldungen zum Newsletter werden protokolliert, um den Anmeldeprozess entsprechend den rechtlichen Anforderungen nachweisen zu können. Hierzu gehört die Speicherung des Anmelde- und des Bestätigungszeitpunkts, als auch der IP-Adresse. Ebenso werden die Änderungen Ihrer bei dem Versanddienstleister gespeicherten Daten protokolliert.
|
118 |
+
|
119 |
+
Versanddienstleister: Der Versand der Newsletter erfolgt mittels von "[newsletter_service]" (nachfolgend bezeichnet als "Versanddienstleister"). Die Datenschutzbestimmungen des Versanddienstleisters können Sie hier einsehen: [newsletter_service_privacy_policy].
|
120 |
+
|
121 |
+
Die E-Mail-Adressen unserer Newsletterempfänger, als auch deren weitere, im Rahmen dieser Hinweise beschriebenen Daten, werden auf den Servern des Versanddienstleisters gespeichert. Der Versanddienstleister verwendet diese Informationen zum Versand und zur Auswertung der Newsletter in unserem Auftrag. Des Weiteren kann der Versanddienstleister nach eigenen Informationen diese Daten zur Optimierung oder Verbesserung der eigenen Services nutzen, z.B. zur technischen Optimierung des Versandes und der Darstellung der Newsletter oder für wirtschaftliche Zwecke, um zu bestimmen aus welchen Ländern die Empfänger kommen. Der Versanddienstleister nutzt die Daten unserer Newsletterempfänger jedoch nicht, um diese selbst anzuschreiben oder an Dritte weiterzugeben.
|
122 |
+
|
123 |
+
Anmeldedaten: Um sich für den Newsletter anzumelden, reicht es aus, wenn Sie Ihre E-Mailadresse angeben.
|
124 |
+
|
125 |
+
Statistische Erhebung und Analysen - Die Newsletter enthalten einen sog. "web-beacon", d.h. eine pixelgroße Datei, die beim Öffnen des Newsletters von dem Server des Versanddienstleisters abgerufen wird. Im Rahmen dieses Abrufs werden zunächst technische Informationen, wie Informationen zum Browser und Ihrem System, als auch Ihre IP-Adresse und Zeitpunkt des Abrufs erhoben. Diese Informationen werden zur technischen Verbesserung der Services anhand der technischen Daten oder der Zielgruppen und ihres Leseverhaltens anhand derer Abruforte (die mit Hilfe der IP-Adresse bestimmbar sind) oder der Zugriffszeiten genutzt. Zu den statistischen Erhebungen gehört ebenfalls die Feststellung, ob die Newsletter geöffnet werden, wann sie geöffnet werden und welche Links geklickt werden. Diese Informationen können aus technischen Gründen zwar den einzelnen Newsletterempfängern zugeordnet werden. Es ist jedoch weder unser Bestreben, noch das des Versanddienstleisters, einzelne Nutzer zu beobachten. Die Auswertungen dienen uns viel mehr dazu, die Lesegewohnheiten unserer Nutzer zu erkennen und unsere Inhalte auf sie anzupassen oder unterschiedliche Inhalte entsprechend den Interessen unserer Nutzer zu versenden.
|
126 |
+
|
127 |
+
Kündigung/Widerruf - Sie können den Empfang unseres Newsletters jederzeit kündigen, d.h. Ihre Einwilligungen widerrufen. Damit erlöschen gleichzeitig Ihre Einwilligungen in dessen Versand durch den Versanddienstleister und die statistischen Analysen. Ein getrennter Widerruf des Versandes durch den Versanddienstleister oder die statistische Auswertung ist leider nicht möglich. Einen Link zur Kündigung des Newsletters finden Sie am Ende eines jeden Newsletters.
|
128 |
+
|
129 |
+
<h2>11. Einbindung von Diensten und Inhalten Dritter</h2>
|
130 |
+
|
131 |
+
Es kann vorkommen, dass innerhalb unseres Onlineangebotes Inhalte oder Dienste von Dritt-Anbietern, wie zum Beispiel Stadtpläne oder Schriftarten von anderen Webseiten eingebunden werden. Die Einbindung von Inhalten der Dritt-Anbieter setzt immer voraus, dass die Dritt-Anbieter die IP-Adresse der Nutzer wahrnehmen, da sie ohne die IP-Adresse die Inhalte nicht an den Browser der Nutzer senden könnten. Die IP-Adresse ist damit für die Darstellung dieser Inhalte erforderlich. Des Weiteren können die Anbieter der Dritt-Inhalte eigene Cookies setzen und die Daten der Nutzer für eigene Zwecke verarbeiten. Dabei können aus den verarbeiteten Daten Nutzungsprofile der Nutzer erstellt werden. Wir werden diese Inhalte möglichst datensparsam und datenvermeidend einsetzen sowie im Hinblick auf die Datensicherheit zuverlässige Dritt-Anbieter wählen.
|
132 |
+
|
133 |
+
Die nachfolgende Darstellung bietet eine Übersicht von Dritt-Anbietern sowie ihrer Inhalte, nebst Links zu deren Datenschutzerklärungen, welche weitere Hinweise zur Verarbeitung von Daten und, z.T. bereits hier genannt, Widerspruchsmöglichkeiten (sog. Opt-Out) enthalten:
|
134 |
+
|
135 |
+
- Externe Schriftarten von Google, Inc., <a href="https://www.google.com/fonts" target="_blank">https://www.google.com/fonts</a> ("Google Fonts"). Die Einbindung der Google Fonts erfolgt durch einen Serveraufruf bei Google (in der Regel in den USA). Datenschutzerklärung: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, Opt-Out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
136 |
+
|
137 |
+
- Landkarten des Dienstes "Google Maps" des Dritt-Anbieters Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, gestellt. Datenschutzerklärung: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, Opt-Out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
138 |
+
|
139 |
+
- Videos der Plattform "YouTube" des Dritt-Anbieters Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA. Datenschutzerklärung: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, Opt-Out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
140 |
+
|
141 |
+
<h2>12. Rechte der Nutzer und Löschung von Daten</h2>
|
142 |
+
|
143 |
+
Nutzer haben das Recht, auf Antrag unentgeltlich Auskunft zu erhalten über die personenbezogenen Daten, die von uns über sie gespeichert wurden.
|
144 |
+
Zusätzlich haben die Nutzer das Recht auf Berichtigung unrichtiger Daten, Widerruf von Einwilligungen, Sperrung und Löschung ihrer personenbezogenen Daten sowie das Recht, im Fall der Annahme einer unrechtmäßigen Datenverarbeitung eine Beschwerde bei der zuständigen Aufsichtsbehörde einzureichen.
|
145 |
+
|
146 |
+
Die bei uns gespeicherten Daten werden gelöscht, sobald sie für ihre Zweckbestimmung nicht mehr erforderlich sind und der Löschung keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
|
147 |
+
|
148 |
+
<h2>13. Änderungen der Datenschutzerklärung</h2>
|
149 |
+
|
150 |
+
Wir behalten uns vor, die Datenschutzerklärung zu ändern, um sie an geänderte Rechtslagen, oder bei Änderungen des Dienstes sowie der Datenverarbeitung anzupassen. Dies gilt jedoch nur im Hinblick auf Erklärungen zur Datenverarbeitung. Sofern Einwilligungen der Nutzer erforderlich sind oder Bestandteile der Datenschutzerklärung Regelungen des Vertragsverhältnisses mit den Nutzern enthalten, erfolgen die Änderungen nur mit Zustimmung der Nutzer.
|
151 |
+
Die Nutzer werden gebeten sich regelmäßig über den Inhalt der Datenschutzerklärung zu informieren.
|
152 |
+
|
153 |
+
Stand: [save_date]
|
templates/en_EN/emails/feedback.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1><?php _e('WP DSGVO Tools Feedback', 'shapepress-dsgvo'); ?></h1>
|
2 |
+
|
3 |
+
<p>
|
4 |
+
<strong><?php _e('From', 'shapepress-dsgvo'); ?>:</strong><br>
|
5 |
+
{{home_url}} <br>
|
6 |
+
{{user}}
|
7 |
+
</p>
|
8 |
+
|
9 |
+
<p>
|
10 |
+
<strong><?php _e('Reason', 'shapepress-dsgvo'); ?>:</strong><br>
|
11 |
+
{{reason}}
|
12 |
+
</p>
|
13 |
+
|
14 |
+
<p>
|
15 |
+
<strong><?php _e('Message', 'shapepress-dsgvo'); ?>:</strong><br>
|
16 |
+
{{message}}
|
17 |
+
</p>
|
templates/en_EN/emails/footer.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
</table>
|
2 |
+
</td>
|
3 |
+
</tr>
|
4 |
+
</tbody>
|
5 |
+
</table>
|
6 |
+
</td>
|
7 |
+
</tr>
|
8 |
+
</tbody>
|
9 |
+
</table>
|
10 |
+
</body>
|
11 |
+
</html>
|
templates/en_EN/emails/header.php
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5 |
+
<title>WP DSGVO Tools</title>
|
6 |
+
<style type="text/css">
|
7 |
+
body {
|
8 |
+
padding-top: 0 !important;
|
9 |
+
padding-bottom: 0 !important;
|
10 |
+
padding-top: 0 !important;
|
11 |
+
padding-bottom: 0 !important;
|
12 |
+
margin:0 !important;
|
13 |
+
width: 100% !important;
|
14 |
+
-webkit-text-size-adjust: 100% !important;
|
15 |
+
-ms-text-size-adjust: 100% !important;
|
16 |
+
-webkit-font-smoothing: antialiased !important;
|
17 |
+
}
|
18 |
+
.tableContent img {
|
19 |
+
border: 0 !important;
|
20 |
+
display: block !important;
|
21 |
+
outline: none !important;
|
22 |
+
}
|
23 |
+
a{
|
24 |
+
color:#382F2E;
|
25 |
+
}
|
26 |
+
p, h1,h2,ul,ol,li,div{
|
27 |
+
margin:0;
|
28 |
+
padding:0;
|
29 |
+
}
|
30 |
+
h1,h2{
|
31 |
+
font-weight: normal;
|
32 |
+
background:transparent !important;
|
33 |
+
border:none !important;
|
34 |
+
}
|
35 |
+
@media only screen and (max-width:480px)
|
36 |
+
{
|
37 |
+
table[class="MainContainer"], td[class="cell"]
|
38 |
+
{
|
39 |
+
width: 100% !important;
|
40 |
+
height:auto !important;
|
41 |
+
}
|
42 |
+
td[class="specbundle"]
|
43 |
+
{
|
44 |
+
width: 100% !important;
|
45 |
+
float:left !important;
|
46 |
+
font-size:13px !important;
|
47 |
+
line-height:17px !important;
|
48 |
+
display:block !important;
|
49 |
+
padding-bottom:15px !important;
|
50 |
+
}
|
51 |
+
td[class="specbundle2"]
|
52 |
+
{
|
53 |
+
width:80% !important;
|
54 |
+
float:left !important;
|
55 |
+
font-size:13px !important;
|
56 |
+
line-height:17px !important;
|
57 |
+
display:block !important;
|
58 |
+
padding-bottom:10px !important;
|
59 |
+
padding-left:10% !important;
|
60 |
+
padding-right:10% !important;
|
61 |
+
}
|
62 |
+
td[class="spechide"]
|
63 |
+
{
|
64 |
+
display:none !important;
|
65 |
+
}
|
66 |
+
img[class="banner"]
|
67 |
+
{
|
68 |
+
width: 100% !important;
|
69 |
+
height: auto !important;
|
70 |
+
}
|
71 |
+
td[class="left_pad"]
|
72 |
+
{
|
73 |
+
padding-left:15px !important;
|
74 |
+
padding-right:15px !important;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
@media only screen and (max-width:540px)
|
78 |
+
{
|
79 |
+
table[class="MainContainer"], td[class="cell"]
|
80 |
+
{
|
81 |
+
width: 100% !important;
|
82 |
+
height:auto !important;
|
83 |
+
}
|
84 |
+
td[class="specbundle"]
|
85 |
+
{
|
86 |
+
width: 100% !important;
|
87 |
+
float:left !important;
|
88 |
+
font-size:13px !important;
|
89 |
+
line-height:17px !important;
|
90 |
+
display:block !important;
|
91 |
+
padding-bottom:15px !important;
|
92 |
+
}
|
93 |
+
td[class="specbundle2"]
|
94 |
+
{
|
95 |
+
width:80% !important;
|
96 |
+
float:left !important;
|
97 |
+
font-size:13px !important;
|
98 |
+
line-height:17px !important;
|
99 |
+
display:block !important;
|
100 |
+
padding-bottom:10px !important;
|
101 |
+
padding-left:10% !important;
|
102 |
+
padding-right:10% !important;
|
103 |
+
}
|
104 |
+
td[class="spechide"]
|
105 |
+
{
|
106 |
+
display:none !important;
|
107 |
+
}
|
108 |
+
img[class="banner"]
|
109 |
+
{
|
110 |
+
width: 100% !important;
|
111 |
+
height: auto !important;
|
112 |
+
}
|
113 |
+
td[class="left_pad"]
|
114 |
+
{
|
115 |
+
padding-left:15px !important;
|
116 |
+
padding-right:15px !important;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
.contentEditable h2.big,.contentEditable h1.big{
|
120 |
+
font-size: 26px !important;
|
121 |
+
}
|
122 |
+
.contentEditable h2.bigger,.contentEditable h1.bigger{
|
123 |
+
font-size: 37px !important;
|
124 |
+
}
|
125 |
+
td,table{
|
126 |
+
vertical-align: top;
|
127 |
+
}
|
128 |
+
td.middle{
|
129 |
+
vertical-align: middle;
|
130 |
+
}
|
131 |
+
a.link1{
|
132 |
+
font-size:13px;
|
133 |
+
color:#27A1E5;
|
134 |
+
line-height: 24px;
|
135 |
+
text-decoration:none;
|
136 |
+
}
|
137 |
+
a{
|
138 |
+
text-decoration: none;
|
139 |
+
}
|
140 |
+
.link2{
|
141 |
+
color:#ffffff;
|
142 |
+
border-top:10px solid #27A1E5;
|
143 |
+
border-bottom:10px solid #27A1E5;
|
144 |
+
border-left:18px solid #27A1E5;
|
145 |
+
border-right:18px solid #27A1E5;
|
146 |
+
border-radius:3px;
|
147 |
+
-moz-border-radius:3px;
|
148 |
+
-webkit-border-radius:3px;
|
149 |
+
background:#27A1E5;
|
150 |
+
}
|
151 |
+
.link3{
|
152 |
+
color:#555555;
|
153 |
+
border:1px solid #cccccc;
|
154 |
+
padding:10px 18px;
|
155 |
+
border-radius:3px;
|
156 |
+
-moz-border-radius:3px;
|
157 |
+
-webkit-border-radius:3px;
|
158 |
+
background:#ffffff;
|
159 |
+
}
|
160 |
+
.link4{
|
161 |
+
color:#27A1E5;
|
162 |
+
line-height: 24px;
|
163 |
+
}
|
164 |
+
h2,h1{
|
165 |
+
line-height: 20px;
|
166 |
+
}
|
167 |
+
p{
|
168 |
+
font-size: 14px;
|
169 |
+
line-height: 21px;
|
170 |
+
color:#AAAAAA;
|
171 |
+
}
|
172 |
+
.contentEditable li{
|
173 |
+
}
|
174 |
+
.appart p{
|
175 |
+
}
|
176 |
+
.bgItem{
|
177 |
+
background: #ffffff;
|
178 |
+
}
|
179 |
+
.bgBody{
|
180 |
+
background: #ffffff;
|
181 |
+
}
|
182 |
+
img {
|
183 |
+
outline:none;
|
184 |
+
text-decoration:none;
|
185 |
+
-ms-interpolation-mode: bicubic;
|
186 |
+
width: auto;
|
187 |
+
max-width: 100%;
|
188 |
+
clear: both;
|
189 |
+
display: block;
|
190 |
+
float: none;
|
191 |
+
}
|
192 |
+
|
193 |
+
ul ul{
|
194 |
+
margin-left: 15px;
|
195 |
+
}
|
196 |
+
ul li{
|
197 |
+
color:#444444;
|
198 |
+
}
|
199 |
+
</style>
|
200 |
+
<script type="colorScheme" class="swatch active">
|
201 |
+
{
|
202 |
+
"name":"Default",
|
203 |
+
"bgBody":"ffffff",
|
204 |
+
"link":"27A1E5",
|
205 |
+
"color":"AAAAAA",
|
206 |
+
"bgItem":"ffffff",
|
207 |
+
"title":"444444"
|
208 |
+
}
|
209 |
+
</script>
|
210 |
+
</head>
|
211 |
+
<body paddingwidth="0" paddingheight="0" bgcolor="#d1d3d4" style="padding-top: 0; padding-bottom: 0; padding-top: 0; padding-bottom: 0; background-repeat: repeat; width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-font-smoothing: antialiased;" offset="0" toppadding="0" leftpadding="0">
|
212 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
213 |
+
<tbody>
|
214 |
+
<tr>
|
215 |
+
<td>
|
216 |
+
<table width="600" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#ffffff" style="font-family:helvetica, sans-serif;" class="MainContainer">
|
217 |
+
<tbody>
|
218 |
+
<tr>
|
219 |
+
<td>
|
220 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
templates/en_EN/emails/subject-access-request.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br>
|
21 |
+
<?php _e('Subject Access Request', 'shapepress-dsgvo'); ?>
|
22 |
+
</h1>
|
23 |
+
</td>
|
24 |
+
</tr>
|
25 |
+
</tbody>
|
26 |
+
</table> <!-- End Header -->
|
27 |
+
</td>
|
28 |
+
</tr>
|
29 |
+
<tr>
|
30 |
+
<td align="center" valign="top">
|
31 |
+
<!-- Body -->
|
32 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
33 |
+
id="template_body">
|
34 |
+
<tbody>
|
35 |
+
<tr>
|
36 |
+
<td valign="top" id="body_content"
|
37 |
+
style="background-color: #fdfdfd;">
|
38 |
+
<!-- Content -->
|
39 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
40 |
+
width="100%">
|
41 |
+
<tbody>
|
42 |
+
<tr>
|
43 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
44 |
+
<div id="body_content_inner"
|
45 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your subject access request. A PDF document containing all the data we have stored about you is attached.
|
47 |
+
Amount of personal data found', 'shapepress-dsgvo'); ?> {{count}}</p>
|
48 |
+
<p style="margin: 0 0 16px;">
|
49 |
+
<?php _e('Here you see a summary about this data', 'shapepress-dsgvo'); ?>:<br>
|
50 |
+
{{breakdown}}
|
51 |
+
</p>
|
52 |
+
<h2 style="font-size: 20px;"><?php _e('Download your archive', 'shapepress-dsgvo'); ?></h2>
|
53 |
+
<br>
|
54 |
+
<p><?php _e('Following this link you can download a PDF and a JSON file dump of your data.', 'shapepress-dsgvo'); ?><br>
|
55 |
+
<br> <a target='_blank' href="{{zip_link}}"
|
56 |
+
class='link2' style='color: #202020'><?php _e('Download archive', 'shapepress-dsgvo'); ?></a>
|
57 |
+
</p>
|
58 |
+
<h2
|
59 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
60 |
+
<a color: #202020 target='_blank'
|
61 |
+
href="{{confirm_link}}"></a>
|
62 |
+
</h2>
|
63 |
+
<p style="margin: 0 0 16px;"> </p>
|
64 |
+
</div>
|
65 |
+
</td>
|
66 |
+
</tr>
|
67 |
+
</tbody>
|
68 |
+
</table> <!-- End Content -->
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
</tbody>
|
72 |
+
</table> <!-- End Body -->
|
73 |
+
</td>
|
74 |
+
</tr>
|
75 |
+
<tr>
|
76 |
+
<td align="center" valign="top">
|
77 |
+
<!-- Footer -->
|
78 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
79 |
+
id="template_footer">
|
80 |
+
<tbody>
|
81 |
+
<tr>
|
82 |
+
<td valign="top"
|
83 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
84 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
85 |
+
width="100%">
|
86 |
+
<tbody>
|
87 |
+
<tr>
|
88 |
+
<td colspan="2" valign="middle" id="credit"
|
89 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
90 |
+
<div class="wgm-wrap-email-appendixes"
|
91 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
92 |
+
<div style="float: left; width: 100%;">
|
93 |
+
<h3
|
94 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
95 |
+
</div>
|
96 |
+
<div style="float: left; width: 100%;">
|
97 |
+
<h3
|
98 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
99 |
+
{{admin_email}}</h3>
|
100 |
+
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
</td>
|
104 |
+
</tr>
|
105 |
+
</tbody>
|
106 |
+
</table>
|
107 |
+
</td>
|
108 |
+
</tr>
|
109 |
+
</tbody>
|
110 |
+
</table> <!-- End Footer -->
|
111 |
+
</td>
|
112 |
+
</tr>
|
113 |
+
</tbody>
|
114 |
+
</table></td>
|
115 |
+
</tr>
|
116 |
+
</tbody>
|
templates/en_EN/emails/super-unsubscribe.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br><?php _e('Delete Request', 'shapepress-dsgvo'); ?>
|
21 |
+
</h1>
|
22 |
+
</td>
|
23 |
+
</tr>
|
24 |
+
</tbody>
|
25 |
+
</table> <!-- End Header -->
|
26 |
+
</td>
|
27 |
+
</tr>
|
28 |
+
<tr>
|
29 |
+
<td align="center" valign="top">
|
30 |
+
<!-- Body -->
|
31 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
32 |
+
id="template_body">
|
33 |
+
<tbody>
|
34 |
+
<tr>
|
35 |
+
<td valign="top" id="body_content"
|
36 |
+
style="background-color: #fdfdfd;">
|
37 |
+
<!-- Content -->
|
38 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
39 |
+
width="100%">
|
40 |
+
<tbody>
|
41 |
+
<tr>
|
42 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
43 |
+
<div id="body_content_inner"
|
44 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
45 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your delete request.', 'shapepress-dsgvo'); ?></p>
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('If you confirm the following link, all your data stored at
|
47 |
+
{{website}} gets deleted.', 'shapepress-dsgvo'); ?></p>
|
48 |
+
<h2
|
49 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
50 |
+
<a color: #ffc600 target='_blank'
|
51 |
+
href="{{confirm_link}}"><?php _e('Confirm Delete', 'shapepress-dsgvo'); ?></a>
|
52 |
+
</h2>
|
53 |
+
<p style="margin: 0 0 16px;"><?php _e("If you don't want do delete your data just ignore this email.", 'shapepress-dsgvo'); ?></p>
|
54 |
+
</div>
|
55 |
+
</td>
|
56 |
+
</tr>
|
57 |
+
</tbody>
|
58 |
+
</table> <!-- End Content -->
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
</tbody>
|
62 |
+
</table> <!-- End Body -->
|
63 |
+
</td>
|
64 |
+
</tr>
|
65 |
+
<tr>
|
66 |
+
<td align="center" valign="top">
|
67 |
+
<!-- Footer -->
|
68 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
69 |
+
id="template_footer">
|
70 |
+
<tbody>
|
71 |
+
<tr>
|
72 |
+
<td valign="top"
|
73 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
74 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
75 |
+
width="100%">
|
76 |
+
<tbody>
|
77 |
+
<tr>
|
78 |
+
<td colspan="2" valign="middle" id="credit"
|
79 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
80 |
+
<div class="wgm-wrap-email-appendixes"
|
81 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
82 |
+
<div style="float: left; width: 100%;">
|
83 |
+
<h3
|
84 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
85 |
+
</div>
|
86 |
+
<div style="float: left; width: 100%;">
|
87 |
+
<h3
|
88 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
89 |
+
{{admin_email}}</h3>
|
90 |
+
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
</td>
|
94 |
+
</tr>
|
95 |
+
</tbody>
|
96 |
+
</table>
|
97 |
+
</td>
|
98 |
+
</tr>
|
99 |
+
</tbody>
|
100 |
+
</table> <!-- End Footer -->
|
101 |
+
</td>
|
102 |
+
</tr>
|
103 |
+
</tbody>
|
104 |
+
</table></td>
|
105 |
+
</tr>
|
106 |
+
</tbody>
|
templates/en_EN/imprint.txt
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[company_name]
|
2 |
+
Owner: [company_owner]
|
3 |
+
[adress_street]
|
4 |
+
[adress_zip_location]
|
5 |
+
|
6 |
+
Management: [company_law_person]
|
7 |
+
Stockholder: [company_management]
|
8 |
+
|
9 |
+
Telephone number: [comm_phone]
|
10 |
+
E-Mail address: [comm_email]
|
11 |
+
|
12 |
+
Register Court & Register Number: [company_register_court], [company_register_nr]
|
13 |
+
|
14 |
+
Sales tax identification number: [company_uid]
|
15 |
+
|
16 |
+
Responsible for content: [content_responsible]
|
17 |
+
|
18 |
+
European Commission Online Dispute Resolution (OS) platform for consumers: <a href"https://ec.europa.eu/consumers/odr/" target="_blank">https://ec.europa.eu/consumers/odr/</a>. We are not willing and obliged to participate in a dispute settlement procedure before a consumer arbitration board.
|
templates/en_EN/privacy-policy.txt
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>General Privacy Policy</h1>
|
2 |
+
The protection of your data is very important to us. We only process data on a legally compliant basis and consider it our duty to protect your data from any misuse. We use your data only for purposes to which you have authorized us.
|
3 |
+
|
4 |
+
Table of Contents
|
5 |
+
1. Objective and responsible body
|
6 |
+
2. Basic information on data processing
|
7 |
+
3. Processing of personal data
|
8 |
+
4. Collection of access data
|
9 |
+
5. Cookies & reach measurement
|
10 |
+
6. Google Analytics
|
11 |
+
7. Google Re-/Marketing Services
|
12 |
+
8. Facebook social plugins
|
13 |
+
9. Facebook remarketing
|
14 |
+
10. Newsletter
|
15 |
+
11. Integration of services and content of third parties
|
16 |
+
12. User rights and deletion
|
17 |
+
13. Changes to the privacy policy
|
18 |
+
|
19 |
+
<h2>1. Objective and responsible body</h2>
|
20 |
+
This Privacy Policy clarifies the nature, scope and purpose of the processing (including collection, processing, use and consent) of personal information contained in our online offering and the related websites, features and content (collectively referred to as "online offer" or "Website"). The privacy policy applies regardless of the domains, systems, platforms, and devices (such as desktop or mobile) on which the online offering is being run.
|
21 |
+
|
22 |
+
Provider of the online offer and responsible for the data protection law is [company_name], owner: [company_owner], [adress_street], [adress_zip_location] (hereinafter referred to as "provider", "we" or "us"). For the contact possibilities we refer to our imprint.
|
23 |
+
|
24 |
+
The term "user" includes all customers and visitors of our online offer. The terms used, such as "Users" are to be understood gender-neutral.
|
25 |
+
|
26 |
+
<´h2>2. Basic information on data processing</h2>
|
27 |
+
We only process users' personal data in compliance with the relevant data protection regulations in accordance with the requirements of data minimization and purpose limitation (see Processing Principles: EU GDPR Article 5). This means that the data of the users are processed only in the presence of a legal permit or obligation, for the fulfillment of contractual obligations (which are necessary, for example, for the provision of the services offered) or in the presence of your consent.
|
28 |
+
|
29 |
+
We take organizational, contractual and technical security measures in accordance with the state of the art to ensure that the provisions of the data protection laws are complied with and in order to protect the data processed by us against accidental or intentional manipulation, loss, destruction or against access by unauthorized persons.
|
30 |
+
|
31 |
+
Insofar as data transmission to third parties is necessary for the fulfillment of legal requirements, the fulfillment of the services to be provided within the framework of contractual obligations or on the basis of your explicit consent, we always ensure that this is done safely and in accordance with data protection regulations and in accordance with EU GDPR Article 5.
|
32 |
+
|
33 |
+
(Webshop, if applicable): A transfer of data to third parties does not take place, with the exception of the transmission of credit card data to the involved bank institutes / payment service providers for the purpose of debiting the purchase price, to the transport company / shipping company commissioned by us for the delivery of the goods as well as to our tax consultant Fulfillment of our tax obligations.
|
34 |
+
|
35 |
+
<h2>3. Processing of personal data</h2>
|
36 |
+
The personal data are, in addition to the use expressly mentioned in this privacy policy, processed for the following purposes on the basis of statutory requirements, to fulfill the contract or your express consent:
|
37 |
+
- The provision, execution, maintenance, optimization and security of our services, services and user services;
|
38 |
+
- Ensuring effective customer service and technical support.
|
39 |
+
|
40 |
+
Insofar as data transmission to third parties is necessary for the fulfillment of legal requirements, the fulfillment of the services to be provided within the framework of contractual obligations or on the basis of your express consent, we always ensure that this is done safely and in accordance with data protection regulations in accordance with EU GDPR Article 5.
|
41 |
+
|
42 |
+
(Webshop, if applicable): A transfer of data to third parties does not take place, with the exception of the transmission of credit card data to the involved bank institutes / payment service providers for the purpose of debiting the purchase price, to the transport company / shipping company commissioned by us for the delivery of the goods as well as to our tax consultant Fulfillment of our tax obligations.
|
43 |
+
|
44 |
+
When contacting us (via contact form or e-mail), the details of the user are stored for the purpose of processing the request as well as in the event that follow-up questions arise.
|
45 |
+
Personal data will be deleted if they have fulfilled their purpose and deletion does not conflict with any retention requirements.
|
46 |
+
|
47 |
+
<h2>4. Collection of access data</h2>
|
48 |
+
We collect data about every access to the server where this service is located (so-called server log files). The access data includes name of the retrieved web page, file, date and time of retrieval, amount of data transferred, message about successful retrieval, browser type and version, the user's operating system, referrer URL (the previously visited page), IP address and the requesting provider.
|
49 |
+
|
50 |
+
We use the log data without linking it to the specific person of a user or other profiling according to the statutory provisions only for statistical evaluations for the purpose of operation, security and optimization of our online offer. However, we reserve the right to retrospectively check the log data if, on the basis of concrete evidence, the legitimate suspicion of unlawful use exists.
|
51 |
+
|
52 |
+
<h2>5. Cookies & reach measurement</h2>
|
53 |
+
Cookies are information transmitted from our web server or third-party web servers to users' web browsers and are stored there for later retrieval. The use of cookies in the context of pseudonymous range measurement is described in this privacy policy.
|
54 |
+
The usage of this online offer is also possible with the exclusion of cookies. If users do not want cookies stored on their computer, they are asked to disable the option in their browser's system settings. Saved cookies can be deleted in the system settings of the browser. The exclusion of cookies can lead to functional restrictions of this online offer.
|
55 |
+
There is a possibility to manage many companies' online advertising cookies via the US website <a href="http://www.aboutads.info/choices" target="_blank">http://www.aboutads.info/choices</a> or the EU page <a href="http://www.youronlinechoices.com/uk/your-ad-choices/" target="_blank">http://www.youronlinechoices.com/uk/your-ad-choices/</a>.
|
56 |
+
|
57 |
+
<h2>6. Google Analytics</h2>
|
58 |
+
We use Google Analytics, a web analytics service provided by Google Inc. ("Google"). Google uses cookies. The information generated by the cookie about the use of the online offer by the users are usually transmitted to a Google server in the USA and stored there.
|
59 |
+
|
60 |
+
Google will use this information on our behalf to evaluate the use of our online offering by users, to compile reports on the activities within this online offering and to provide us with other services related to the use of this online offer and internet usage. In this case, pseudonymous usage profiles of the users can be created from the processed data.
|
61 |
+
|
62 |
+
We only use Google Analytics with activated IP anonymization. This means that the IP address of users will be shortened by Google within member states of the European Union or in other contracting states of the Agreement on the European Economic Area. Only in exceptional cases the full IP address will be sent to a Google server in the US and shortened there.
|
63 |
+
|
64 |
+
The IP address submitted by the user's browser will not be merged with other data provided by Google. Users can prevent the storage of cookies by setting their browser software accordingly; users may also prevent data collection by Google of data which is generated by the cookie and related to their use of the online offer as well as the processing of such data by Google by downloading and installing the browser plug-in available under the following link: <a href="http://tools.google.com/dlpage/gaoptout?hl=de" target="_blank">http://tools.google.com/dlpage/gaoptout?hl=de</a>.
|
65 |
+
|
66 |
+
For more information about Google's use of data, settings and opt-out options, please visit Google's websites: <a href="https://www.google.com/intl/en/policies/privacy/partners" target="_blank">https://www.google.com/intl/en/policies/privacy/partners</a> ("Google's use of your data when you use websites or our partners' apps "), <a href="http://www.google.com/policies/technologies/ads" target="_blank">http://www.google.com/policies/technologies/ads</a> (" Use of data for promotional purposes "), <a href="http://www.google.com/settings/ads" target="_blank">http://www.google.com/settings/ads</a> (" Managing information provided by Google used to show you ads ") and <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a> (" Determine which ads Google shows you ").
|
67 |
+
|
68 |
+
<h2>7. Google Re-/Marketing Services</h2>
|
69 |
+
We use the Google Inc. Marketing and Remarketing Services ("Google Marketing Services"), 1600 Amphitheater Parkway, Mountain View, CA 94043, USA, ("Google").
|
70 |
+
Google Marketing Services allows us to better target advertisements for and on our website so that we only present ads to users that potentially match their interests. E.g.: It is called remarketing if users are also shown ads for products they are interested in on other websites.
|
71 |
+
|
72 |
+
For these purposes, when Google and our other websites that are running Google Marketing Services are activated, Google runs a code and so-called (re) marketing tags (invisible graphics or code, etc., also named “web beacons”) are added and incorporated into the website. With their help, the user is provided with an individual cookie, viz. a small file is saved (instead of cookies, comparable technologies can also be used).
|
73 |
+
|
74 |
+
|
75 |
+
The cookies can be set by different domains, including google.com, doubleclick.net, invitemedia.com, admeld.com, googlesyndication.com or googleadservices.com. In this file it is noted which web pages users visited, what content they are interested in and what offers they have clicked, as well as technical information about the browser and operating system, referring web pages, visit time and other information about the use of the online offer.
|
76 |
+
|
77 |
+
The IP address of the users is also recorded, whereby in the context of Google Analytics the IP address is shortened within member states of the European Union or other contracting states of the Agreement on the European Economic Area. Only in exceptional cases data is transmitted to a Google server in the US and shortened there. The IP address will not be merged with data of the user within other offers from Google. The information mentioned above may also be associated with information from other sources. So that ads according to the interests of the users can be displayed when they visit other websites.
|
78 |
+
|
79 |
+
The data of the users are pseudonymised processed in the context of the Google marketing services. That means Google stores and processes e.g. not the name or e-mail address of the users, but processes the relevant data cookie-related within pseudonymous user profiles. From the perspective of Google, the ads are not managed and displayed to a specifically identifiable person, but to the cookie owner, regardless of who that cookie owner is. This does not apply if users have explicitly allowed Google to process their data without this pseudonymization. The information collected about users by "DoubleClick" is transmitted to Google and stored on Google's servers in the United States.
|
80 |
+
|
81 |
+
Among the Google marketing services we use is amongst others the online advertising program "Google AdWords". In the case of Google AdWords, each advertiser receives a different "conversion cookie". Cookies cannot be tracked through AdWords advertisers' websites. The information collected through the cookie is used to generate conversion statistics for AdWords advertisers who have opted for conversion tracking. Advertisers will see the total number of users who clicked on their ad and were redirected to a conversion tracking tag page. However, they do not receive information that personally identifies users.
|
82 |
+
|
83 |
+
We embed third-party ads based on Google's DoubleClick marketing service. DoubleClick uses cookies, which allow Google and its affiliate websites to serve ads based on users' visits to this site or other sites on the Internet.
|
84 |
+
We also engage third-party ads based on the Google AdSense marketing service. AdSense uses cookies, which allow Google and its affiliate websites to serve ads based on users' visits to this site or other sites on the Internet.
|
85 |
+
|
86 |
+
Another Google marketing service we use is the Google Tag Manager, which allows additional Google analytics and marketing services to be integrated into our website (e.g. AdWords, DoubleClick, or Google Analytics).
|
87 |
+
For more information about Google's data usage for marketing, see their overview page: <a href="https://www.google.com/policies/technologies/ads" target="_blank">https://www.google.com/policies/technologies/ads</a>, Google's Privacy Policy is available at <a href="https://www.google.com/policies/privacy" target="_blank">https://www.google.com/policies/privacy</a>.
|
88 |
+
If you wish to opt-out of Google Marketing Services, you may take advantage of Google's settings and opt-out options: <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a>.
|
89 |
+
|
90 |
+
<h2>8. Facebook social plugins</h2>
|
91 |
+
Our online offering uses social plugins ("plugins") from the social network facebook.com operated by Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbor, Dublin 2, Ireland ("Facebook"). The plugins are recognizable by one of the Facebook logos (white "f" on blue tile, the terms "Like" or a "thumbs up" sign) or are marked with the addition "Facebook Social Plugin". The list and appearance of Facebook Social Plugins can be viewed here: <a href="https://developers.facebook.com/docs/plugins/" target="_blank">https://developers.facebook.com/docs/plugins/</a>.
|
92 |
+
|
93 |
+
When a user invokes a feature of this online offering that includes such a plugin, their device establishes a direct connection to the Facebook servers. The content of the plugin is transmitted by Facebook directly to the device of the user and incorporated into the online offer. In the process, user profiles can be created from the processed data. We therefore have no influence on the amount of data that Facebook collects with the help of this plugin and therefore informs the users according to our knowledge.
|
94 |
+
|
95 |
+
By integrating plugins, Facebook receives the information that a user has accessed the corresponding page of the online offer. If the user is logged in to Facebook, Facebook can assign the visit to his Facebook account. If users interact with the plugins, for example, press the Like button or leave a comment, the information is transmitted from your device directly to Facebook and stored there. If a user is not a member of Facebook, there is still the possibility that Facebook will find out and save their IP address. According to Facebook, only an anonymous IP address is stored in Germany.
|
96 |
+
|
97 |
+
The purpose and scope of the data collection and the further processing and use of the data by Facebook, as well as the related rights and setting options for protecting the privacy of users, can be found in Facebook's privacy policy: <a href="https://www.facebook.com/about/privacy/" target="_blank">https://www.facebook.com/about/privacy/</a>.
|
98 |
+
|
99 |
+
If a user is a Facebook member and does not want Facebook to collect data about him via this online offer and link it to his member data stored on Facebook, he must log out of Facebook and delete his cookies before using our online offer. Other settings and possible revocations regarding the use of data for advertising purposes are possible within the Facebook profile settings: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> or via the US-American site <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> or the EU page <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a>. The settings are platform independent, which means that they are adopted for all devices, such as desktop computers or mobile devices.
|
100 |
+
|
101 |
+
<h2>9. Facebook remarketing</h2>
|
102 |
+
Within our on-line offer so-called "Facebook pixels" of the social network Facebook, which are operated by Facebook Inc., 1 Hacker Way, Menlo Park, CA 94025, USA, or if you are based in the EU, Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbor, Dublin 2, Ireland ("Facebook").
|
103 |
+
|
104 |
+
With the help of the Facebook pixel, Facebook is able to designate the visitors of our offer as a target group for the presentation of advertisements, so-called "Facebook Ads". Accordingly, we use Facebook pixel to display Facebook ads only to those Facebook users who have also shown an interest in our website. In other words, with the help of the Facebook pixel, we want to make sure that our Facebook ads are in line with the potential interest of users and are not annoying. With the help of the Facebook pixel, we can also understand the effectiveness of the Facebook ads for statistical and market research purposes by seeing if users were redirected to our site after clicking on a Facebook ad.
|
105 |
+
|
106 |
+
Facebook pixel is directly integrated by Facebook when calling our website and can save a so-called cookie (a small file) on your device.
|
107 |
+
|
108 |
+
If you log in to Facebook or visit Facebook in a logged-in state, the visit of our offer is noted in your profile. The data collected about you are anonymous to us, so they do not give us any indications about the identity of the users. However, the data is stored and processed by Facebook, so that a connection to the respective user profile is possible. The processing of the data by Facebook is part of Facebook's data usage policy. Accordingly, you will learn more about how the remarketing pixel works and more generally about how Facebook ads are displayed in Facebook's Data Usage Policy: <a href="https://www.facebook.com/policy.php" target="_blank">https://www.facebook.com/policy.php</a>.
|
109 |
+
|
110 |
+
You may object to the data collection and use of your data by Facebook Pixel to display Facebook Ads. To do this, you can visit the page set up by Facebook and follow the instructions for the usage-based advertising settings: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> or the contradiction on the US-American site <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> or the EU page <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a>. The settings are platform independent, that means they are adopted for all devices, such as desktop computers or mobile devices.
|
111 |
+
|
112 |
+
<h2>10. Newsletter</h2>
|
113 |
+
With the following information, we will explain the contents of our newsletter, the registration, sending and statistical evaluation procedures as well as your right of objection. By subscribing to our newsletter, you agree to the receipt and the procedures described.
|
114 |
+
|
115 |
+
Content of the newsletter: We send newsletters, e-mails and other electronic notifications with advertising information (hereinafter "newsletter") only with the consent of the recipient or a legal permission. Insofar as the contents of a newsletter are concretely described, they are authoritative for the consent of the users. In general our newsletters contain the following information: our products, offers, promotions and our company.
|
116 |
+
|
117 |
+
Double opt-in and logging: Registration for our newsletter is done in a so-called double-opt-in procedure. After registration, you will receive an e-mail asking you to confirm your registration. This confirmation is necessary so that nobody can register with an invalid or not owned e-mail addresses. The registration for the newsletter will be logged in order to prove the registration process according to the legal requirements. This includes the storage of the login and the confirmation time, as well as the IP address. Likewise, changes to your data stored by the newsletter service provider will be logged.
|
118 |
+
|
119 |
+
Newsletter service provider: The newsletter is sent by means of "[newsletter_service]" (hereinafter referred to as "newsletter service provider"). The privacy policy of the newsletter service provider can be found here: [newsletter_service_privacy_policy].
|
120 |
+
|
121 |
+
The e-mail addresses of our Newsletter recipients, as well as their other data described in the context of these notes, are stored on the servers of the newsletter service provider. The newsletter service provider uses this information to send and evaluate the newsletter on our behalf.
|
122 |
+
|
123 |
+
Furthermore, the newsletter service provider may, according to their information, use this data to optimize or improve its own services, e.g. for the technical optimization of the sending and the presentation of the newsletter or for economic purposes, to determine from which countries the recipients come. However, the newsletter service provider does not use the data of our newsletter recipients to contact them for their purposes or to pass these contacts on to third parties.
|
124 |
+
|
125 |
+
Credentials: To subscribe to the newsletter, it is sufficient to provide your e-mail address.
|
126 |
+
|
127 |
+
Statistical Survey and Analysis - The newsletters contain a so-called "web-beacon", a pixel-sized file that is retrieved from the server of the newsletter service provider when the newsletter is opened. This request will initially collect technical information, such as information about the browser and your system, as well as your IP address and time of retrieval. This information is used to improve the technical performance of services based on their specifications or audience and their reading habits, based on their locations (which can be determined using the IP address) or access times.
|
128 |
+
|
129 |
+
Statistical surveys also include determining if the newsletters are opened, when they are opened and which links are clicked. For technical reasons, this information can be assigned to individual newsletter recipients. However, it is neither our endeavor nor that of the newsletter service provider to observe individual users. The evaluations serve us much more to recognize the reading habits of our users and to adapt our content accordingly or to send different content according to the interests of our users.
|
130 |
+
|
131 |
+
Termination / Revocation - You may terminate the receipt of our newsletter at any time, that means revoking your consent. At the same time, your consent for receiving any emails from the newsletter service provider and the statistical analyzes expire. A separate revocation of receiving emails from the newsletter service provider or the statistical evaluation is unfortunately not possible. A link to cancel the newsletter can be found at the end of each newsletter.
|
132 |
+
|
133 |
+
<h2>11. Integration of services and content of third parties</h2>
|
134 |
+
It may occur that contents or services of third-party providers, such as maps or fonts from other websites, are included in our online offer. The inclusion of content from third-party providers always requires that third-party providers perceive the IP address of the users, since they could not send the content to the users' browser without the IP address.
|
135 |
+
|
136 |
+
The IP address is therefore required for the presentation of this content. Furthermore, providers of third-party content can set their own cookies and process users' data for their own purposes. In the process, user profiles can be created from the processed data. We do our best to use this content in a data-saving and data-avoiding manner as far as possible and select reliable third-party providers with regard to data security.
|
137 |
+
|
138 |
+
The following presentation provides an overview of third-party providers as well as their contents and links to their privacy statements, with further details on the processing of data and partly revocation possibilities (so-called opt-out):
|
139 |
+
|
140 |
+
- External fonts from Google, Inc., <a href="https://www.google.com/fonts" target="_blank">https://www.google.com/fonts</a> ("Google Fonts"). The integration of Google fonts is done by a server call on Google (usually in the US). Privacy Policy: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
141 |
+
- Maps of the "Google Maps" service provided by the third-party Google Inc., 1600 Amphitheater Parkway, Mountain View, CA 94043, USA. Privacy Policy: <a href="https://www.google.com/policies/privacy/ target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
142 |
+
- Third-party Google Inc.'s YouTube Platforms, 1600 Amphitheater Parkway, Mountain View, CA 94043, USA. Privacy Policy: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
143 |
+
|
144 |
+
<h2>12. User rights and deletion</h2>
|
145 |
+
Users have the right, upon request, to receive information free of charge about the personal data that we have stored about them.
|
146 |
+
In addition, users have the right to correct inaccurate data, revoke consent, block the processing and delete their personal information if justifiable and to file a complaint with the responsible regulatory authority in the event of unlawful processing.
|
147 |
+
|
148 |
+
The data stored with us are deleted as soon as they are no longer necessary for their purpose and the deletion does not conflict with any statutory storage requirements.
|
149 |
+
|
150 |
+
<h2>13. Changes to the privacy policy</h2>
|
151 |
+
We reserve the right to change the privacy policy in order to adapt it to changed legal situations, or to changes in the service and data processing. However, this only applies to declarations of data processing. If users' consent is required or elements of the privacy policy contain provisions of the contractual relationship with the users, the changes will only be made with the consent of the users.
|
152 |
+
Users are requested to inform themselves regularly about the content of the privacy policy.
|
153 |
+
|
154 |
+
Status: [save_date]
|
155 |
+
|
156 |
+
|
templates/en_US/emails/feedback.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1><?php _e('WP DSGVO Tools Feedback', 'shapepress-dsgvo'); ?></h1>
|
2 |
+
|
3 |
+
<p>
|
4 |
+
<strong><?php _e('From', 'shapepress-dsgvo'); ?>:</strong><br>
|
5 |
+
{{home_url}} <br>
|
6 |
+
{{user}}
|
7 |
+
</p>
|
8 |
+
|
9 |
+
<p>
|
10 |
+
<strong><?php _e('Reason', 'shapepress-dsgvo'); ?>:</strong><br>
|
11 |
+
{{reason}}
|
12 |
+
</p>
|
13 |
+
|
14 |
+
<p>
|
15 |
+
<strong><?php _e('Message', 'shapepress-dsgvo'); ?>:</strong><br>
|
16 |
+
{{message}}
|
17 |
+
</p>
|
templates/en_US/emails/footer.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
</table>
|
2 |
+
</td>
|
3 |
+
</tr>
|
4 |
+
</tbody>
|
5 |
+
</table>
|
6 |
+
</td>
|
7 |
+
</tr>
|
8 |
+
</tbody>
|
9 |
+
</table>
|
10 |
+
</body>
|
11 |
+
</html>
|
templates/en_US/emails/header.php
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5 |
+
<title>WP DSGVO Tools</title>
|
6 |
+
<style type="text/css">
|
7 |
+
body {
|
8 |
+
padding-top: 0 !important;
|
9 |
+
padding-bottom: 0 !important;
|
10 |
+
padding-top: 0 !important;
|
11 |
+
padding-bottom: 0 !important;
|
12 |
+
margin:0 !important;
|
13 |
+
width: 100% !important;
|
14 |
+
-webkit-text-size-adjust: 100% !important;
|
15 |
+
-ms-text-size-adjust: 100% !important;
|
16 |
+
-webkit-font-smoothing: antialiased !important;
|
17 |
+
}
|
18 |
+
.tableContent img {
|
19 |
+
border: 0 !important;
|
20 |
+
display: block !important;
|
21 |
+
outline: none !important;
|
22 |
+
}
|
23 |
+
a{
|
24 |
+
color:#382F2E;
|
25 |
+
}
|
26 |
+
p, h1,h2,ul,ol,li,div{
|
27 |
+
margin:0;
|
28 |
+
padding:0;
|
29 |
+
}
|
30 |
+
h1,h2{
|
31 |
+
font-weight: normal;
|
32 |
+
background:transparent !important;
|
33 |
+
border:none !important;
|
34 |
+
}
|
35 |
+
@media only screen and (max-width:480px)
|
36 |
+
{
|
37 |
+
table[class="MainContainer"], td[class="cell"]
|
38 |
+
{
|
39 |
+
width: 100% !important;
|
40 |
+
height:auto !important;
|
41 |
+
}
|
42 |
+
td[class="specbundle"]
|
43 |
+
{
|
44 |
+
width: 100% !important;
|
45 |
+
float:left !important;
|
46 |
+
font-size:13px !important;
|
47 |
+
line-height:17px !important;
|
48 |
+
display:block !important;
|
49 |
+
padding-bottom:15px !important;
|
50 |
+
}
|
51 |
+
td[class="specbundle2"]
|
52 |
+
{
|
53 |
+
width:80% !important;
|
54 |
+
float:left !important;
|
55 |
+
font-size:13px !important;
|
56 |
+
line-height:17px !important;
|
57 |
+
display:block !important;
|
58 |
+
padding-bottom:10px !important;
|
59 |
+
padding-left:10% !important;
|
60 |
+
padding-right:10% !important;
|
61 |
+
}
|
62 |
+
td[class="spechide"]
|
63 |
+
{
|
64 |
+
display:none !important;
|
65 |
+
}
|
66 |
+
img[class="banner"]
|
67 |
+
{
|
68 |
+
width: 100% !important;
|
69 |
+
height: auto !important;
|
70 |
+
}
|
71 |
+
td[class="left_pad"]
|
72 |
+
{
|
73 |
+
padding-left:15px !important;
|
74 |
+
padding-right:15px !important;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
@media only screen and (max-width:540px)
|
78 |
+
{
|
79 |
+
table[class="MainContainer"], td[class="cell"]
|
80 |
+
{
|
81 |
+
width: 100% !important;
|
82 |
+
height:auto !important;
|
83 |
+
}
|
84 |
+
td[class="specbundle"]
|
85 |
+
{
|
86 |
+
width: 100% !important;
|
87 |
+
float:left !important;
|
88 |
+
font-size:13px !important;
|
89 |
+
line-height:17px !important;
|
90 |
+
display:block !important;
|
91 |
+
padding-bottom:15px !important;
|
92 |
+
}
|
93 |
+
td[class="specbundle2"]
|
94 |
+
{
|
95 |
+
width:80% !important;
|
96 |
+
float:left !important;
|
97 |
+
font-size:13px !important;
|
98 |
+
line-height:17px !important;
|
99 |
+
display:block !important;
|
100 |
+
padding-bottom:10px !important;
|
101 |
+
padding-left:10% !important;
|
102 |
+
padding-right:10% !important;
|
103 |
+
}
|
104 |
+
td[class="spechide"]
|
105 |
+
{
|
106 |
+
display:none !important;
|
107 |
+
}
|
108 |
+
img[class="banner"]
|
109 |
+
{
|
110 |
+
width: 100% !important;
|
111 |
+
height: auto !important;
|
112 |
+
}
|
113 |
+
td[class="left_pad"]
|
114 |
+
{
|
115 |
+
padding-left:15px !important;
|
116 |
+
padding-right:15px !important;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
.contentEditable h2.big,.contentEditable h1.big{
|
120 |
+
font-size: 26px !important;
|
121 |
+
}
|
122 |
+
.contentEditable h2.bigger,.contentEditable h1.bigger{
|
123 |
+
font-size: 37px !important;
|
124 |
+
}
|
125 |
+
td,table{
|
126 |
+
vertical-align: top;
|
127 |
+
}
|
128 |
+
td.middle{
|
129 |
+
vertical-align: middle;
|
130 |
+
}
|
131 |
+
a.link1{
|
132 |
+
font-size:13px;
|
133 |
+
color:#27A1E5;
|
134 |
+
line-height: 24px;
|
135 |
+
text-decoration:none;
|
136 |
+
}
|
137 |
+
a{
|
138 |
+
text-decoration: none;
|
139 |
+
}
|
140 |
+
.link2{
|
141 |
+
color:#ffffff;
|
142 |
+
border-top:10px solid #27A1E5;
|
143 |
+
border-bottom:10px solid #27A1E5;
|
144 |
+
border-left:18px solid #27A1E5;
|
145 |
+
border-right:18px solid #27A1E5;
|
146 |
+
border-radius:3px;
|
147 |
+
-moz-border-radius:3px;
|
148 |
+
-webkit-border-radius:3px;
|
149 |
+
background:#27A1E5;
|
150 |
+
}
|
151 |
+
.link3{
|
152 |
+
color:#555555;
|
153 |
+
border:1px solid #cccccc;
|
154 |
+
padding:10px 18px;
|
155 |
+
border-radius:3px;
|
156 |
+
-moz-border-radius:3px;
|
157 |
+
-webkit-border-radius:3px;
|
158 |
+
background:#ffffff;
|
159 |
+
}
|
160 |
+
.link4{
|
161 |
+
color:#27A1E5;
|
162 |
+
line-height: 24px;
|
163 |
+
}
|
164 |
+
h2,h1{
|
165 |
+
line-height: 20px;
|
166 |
+
}
|
167 |
+
p{
|
168 |
+
font-size: 14px;
|
169 |
+
line-height: 21px;
|
170 |
+
color:#AAAAAA;
|
171 |
+
}
|
172 |
+
.contentEditable li{
|
173 |
+
}
|
174 |
+
.appart p{
|
175 |
+
}
|
176 |
+
.bgItem{
|
177 |
+
background: #ffffff;
|
178 |
+
}
|
179 |
+
.bgBody{
|
180 |
+
background: #ffffff;
|
181 |
+
}
|
182 |
+
img {
|
183 |
+
outline:none;
|
184 |
+
text-decoration:none;
|
185 |
+
-ms-interpolation-mode: bicubic;
|
186 |
+
width: auto;
|
187 |
+
max-width: 100%;
|
188 |
+
clear: both;
|
189 |
+
display: block;
|
190 |
+
float: none;
|
191 |
+
}
|
192 |
+
|
193 |
+
ul ul{
|
194 |
+
margin-left: 15px;
|
195 |
+
}
|
196 |
+
ul li{
|
197 |
+
color:#444444;
|
198 |
+
}
|
199 |
+
</style>
|
200 |
+
<script type="colorScheme" class="swatch active">
|
201 |
+
{
|
202 |
+
"name":"Default",
|
203 |
+
"bgBody":"ffffff",
|
204 |
+
"link":"27A1E5",
|
205 |
+
"color":"AAAAAA",
|
206 |
+
"bgItem":"ffffff",
|
207 |
+
"title":"444444"
|
208 |
+
}
|
209 |
+
</script>
|
210 |
+
</head>
|
211 |
+
<body paddingwidth="0" paddingheight="0" bgcolor="#d1d3d4" style="padding-top: 0; padding-bottom: 0; padding-top: 0; padding-bottom: 0; background-repeat: repeat; width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-font-smoothing: antialiased;" offset="0" toppadding="0" leftpadding="0">
|
212 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
213 |
+
<tbody>
|
214 |
+
<tr>
|
215 |
+
<td>
|
216 |
+
<table width="600" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#ffffff" style="font-family:helvetica, sans-serif;" class="MainContainer">
|
217 |
+
<tbody>
|
218 |
+
<tr>
|
219 |
+
<td>
|
220 |
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
templates/en_US/emails/subject-access-request.php
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br>
|
21 |
+
<?php _e('Subject Access Request', 'shapepress-dsgvo'); ?>
|
22 |
+
</h1>
|
23 |
+
</td>
|
24 |
+
</tr>
|
25 |
+
</tbody>
|
26 |
+
</table> <!-- End Header -->
|
27 |
+
</td>
|
28 |
+
</tr>
|
29 |
+
<tr>
|
30 |
+
<td align="center" valign="top">
|
31 |
+
<!-- Body -->
|
32 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
33 |
+
id="template_body">
|
34 |
+
<tbody>
|
35 |
+
<tr>
|
36 |
+
<td valign="top" id="body_content"
|
37 |
+
style="background-color: #fdfdfd;">
|
38 |
+
<!-- Content -->
|
39 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
40 |
+
width="100%">
|
41 |
+
<tbody>
|
42 |
+
<tr>
|
43 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
44 |
+
<div id="body_content_inner"
|
45 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your subject access request. A PDF document containing all the data we have stored about you is attached.
|
47 |
+
Amount of personal data found', 'shapepress-dsgvo'); ?> {{count}}</p>
|
48 |
+
<p style="margin: 0 0 16px;">
|
49 |
+
<?php _e('Here you see a summary about this data', 'shapepress-dsgvo'); ?>:<br>
|
50 |
+
{{breakdown}}
|
51 |
+
</p>
|
52 |
+
<h2 style="font-size: 20px;"><?php _e('Download your archive', 'shapepress-dsgvo'); ?></h2>
|
53 |
+
<br>
|
54 |
+
<p><?php _e('Following this link you can download a PDF and a JSON file dump of your data.', 'shapepress-dsgvo'); ?><br>
|
55 |
+
<br> <a target='_blank' href="{{zip_link}}"
|
56 |
+
class='link2' style='color: #202020'><?php _e('Download archive', 'shapepress-dsgvo'); ?></a>
|
57 |
+
</p>
|
58 |
+
<h2
|
59 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
60 |
+
<a color: #202020 target='_blank'
|
61 |
+
href="{{confirm_link}}"></a>
|
62 |
+
</h2>
|
63 |
+
<p style="margin: 0 0 16px;"> </p>
|
64 |
+
</div>
|
65 |
+
</td>
|
66 |
+
</tr>
|
67 |
+
</tbody>
|
68 |
+
</table> <!-- End Content -->
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
</tbody>
|
72 |
+
</table> <!-- End Body -->
|
73 |
+
</td>
|
74 |
+
</tr>
|
75 |
+
<tr>
|
76 |
+
<td align="center" valign="top">
|
77 |
+
<!-- Footer -->
|
78 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
79 |
+
id="template_footer">
|
80 |
+
<tbody>
|
81 |
+
<tr>
|
82 |
+
<td valign="top"
|
83 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
84 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
85 |
+
width="100%">
|
86 |
+
<tbody>
|
87 |
+
<tr>
|
88 |
+
<td colspan="2" valign="middle" id="credit"
|
89 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
90 |
+
<div class="wgm-wrap-email-appendixes"
|
91 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
92 |
+
<div style="float: left; width: 100%;">
|
93 |
+
<h3
|
94 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
95 |
+
</div>
|
96 |
+
<div style="float: left; width: 100%;">
|
97 |
+
<h3
|
98 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
99 |
+
{{admin_email}}</h3>
|
100 |
+
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
</td>
|
104 |
+
</tr>
|
105 |
+
</tbody>
|
106 |
+
</table>
|
107 |
+
</td>
|
108 |
+
</tr>
|
109 |
+
</tbody>
|
110 |
+
</table> <!-- End Footer -->
|
111 |
+
</td>
|
112 |
+
</tr>
|
113 |
+
</tbody>
|
114 |
+
</table></td>
|
115 |
+
</tr>
|
116 |
+
</tbody>
|
templates/en_US/emails/super-unsubscribe.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tbody>
|
2 |
+
<tr>
|
3 |
+
<td align="center" valign="top"><table border="0" cellpadding="0"
|
4 |
+
cellspacing="0" width="600" id="template_container"
|
5 |
+
style="box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1) !important; background-color: #fdfdfd; border: 1px solid #dcdcdc; border-radius: 3px !important;">
|
6 |
+
<tbody>
|
7 |
+
<tr>
|
8 |
+
<td align="center" valign="top">
|
9 |
+
<!-- Header -->
|
10 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
11 |
+
id="template_header"
|
12 |
+
style="background-color: #ccc; border-radius: 3px 3px 0 0 !important; color: #202020; border-bottom: 0; font-weight: bold; line-height: 100%; vertical-align: middle; font-family: & quot;Helvetica Neue&quot;, Helvetica, Roboto, Arial, sans-serif;">
|
13 |
+
<tbody>
|
14 |
+
<tr>
|
15 |
+
<td id="header_wrapper"
|
16 |
+
style="padding: 36px 48px; display: block;">
|
17 |
+
<h1
|
18 |
+
style="color: #202020; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 30px; font-weight: 300; line-height: 150%; margin: 0; text-align: left; text-shadow: 0 1px 0 #202020;">
|
19 |
+
<a target='_blank' href="[CLIENTS.WEBSITE]"
|
20 |
+
style='color: #202020'>{{website}}</a><br><?php _e('Delete Request', 'shapepress-dsgvo'); ?>
|
21 |
+
</h1>
|
22 |
+
</td>
|
23 |
+
</tr>
|
24 |
+
</tbody>
|
25 |
+
</table> <!-- End Header -->
|
26 |
+
</td>
|
27 |
+
</tr>
|
28 |
+
<tr>
|
29 |
+
<td align="center" valign="top">
|
30 |
+
<!-- Body -->
|
31 |
+
<table border="0" cellpadding="0" cellspacing="0" width="600"
|
32 |
+
id="template_body">
|
33 |
+
<tbody>
|
34 |
+
<tr>
|
35 |
+
<td valign="top" id="body_content"
|
36 |
+
style="background-color: #fdfdfd;">
|
37 |
+
<!-- Content -->
|
38 |
+
<table border="0" cellpadding="20" cellspacing="0"
|
39 |
+
width="100%">
|
40 |
+
<tbody>
|
41 |
+
<tr>
|
42 |
+
<td valign="top" style="padding: 48px 48px 0;">
|
43 |
+
<div id="body_content_inner"
|
44 |
+
style="color: #4d4c53; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; line-height: 150%; text-align: left;">
|
45 |
+
<p style="margin: 0 0 16px;"><?php _e('We have received your delete request.', 'shapepress-dsgvo'); ?></p>
|
46 |
+
<p style="margin: 0 0 16px;"><?php _e('If you confirm the following link, all your data stored at
|
47 |
+
{{website}} gets deleted.', 'shapepress-dsgvo'); ?></p>
|
48 |
+
<h2
|
49 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 18px; font-weight: bold; line-height: 130%; margin: 0 0 18px; text-align: center;">
|
50 |
+
<a color: #ffc600 target='_blank'
|
51 |
+
href="{{confirm_link}}"><?php _e('Confirm Delete', 'shapepress-dsgvo'); ?></a>
|
52 |
+
</h2>
|
53 |
+
<p style="margin: 0 0 16px;"><?php _e("If you don't want do delete your data just ignore this email.", 'shapepress-dsgvo'); ?></p>
|
54 |
+
</div>
|
55 |
+
</td>
|
56 |
+
</tr>
|
57 |
+
</tbody>
|
58 |
+
</table> <!-- End Content -->
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
</tbody>
|
62 |
+
</table> <!-- End Body -->
|
63 |
+
</td>
|
64 |
+
</tr>
|
65 |
+
<tr>
|
66 |
+
<td align="center" valign="top">
|
67 |
+
<!-- Footer -->
|
68 |
+
<table border="0" cellpadding="10" cellspacing="0" width="600"
|
69 |
+
id="template_footer">
|
70 |
+
<tbody>
|
71 |
+
<tr>
|
72 |
+
<td valign="top"
|
73 |
+
style="padding: 0; -webkit-border-radius: 6px;">
|
74 |
+
<table border="0" cellpadding="10" cellspacing="0"
|
75 |
+
width="100%">
|
76 |
+
<tbody>
|
77 |
+
<tr>
|
78 |
+
<td colspan="2" valign="middle" id="credit"
|
79 |
+
style="padding: 0 48px 48px 48px; -webkit-border-radius: 6px; border: 0; color: #ffdd66; font-family: Arial; font-size: 12px; line-height: 125%; text-align: center;">
|
80 |
+
<div class="wgm-wrap-email-appendixes"
|
81 |
+
style="text-align: left; color: #737373; font-size: 14px; line-height: 150%;">
|
82 |
+
<div style="float: left; width: 100%;">
|
83 |
+
<h3
|
84 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Sent from', 'shapepress-dsgvo'); ?> {{home_url}}</h3>
|
85 |
+
</div>
|
86 |
+
<div style="float: left; width: 100%;">
|
87 |
+
<h3
|
88 |
+
style="color: #202020; display: block; font-family: & quot; Helvetica Neue&quot; , Helvetica , Roboto, Arial, sans-serif; font-size: 14px; font-weight: bold; line-height: 130%; margin: 16px 0 8px; text-align: center;"><?php _e('Contact', 'shapepress-dsgvo'); ?>
|
89 |
+
{{admin_email}}</h3>
|
90 |
+
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
</td>
|
94 |
+
</tr>
|
95 |
+
</tbody>
|
96 |
+
</table>
|
97 |
+
</td>
|
98 |
+
</tr>
|
99 |
+
</tbody>
|
100 |
+
</table> <!-- End Footer -->
|
101 |
+
</td>
|
102 |
+
</tr>
|
103 |
+
</tbody>
|
104 |
+
</table></td>
|
105 |
+
</tr>
|
106 |
+
</tbody>
|
templates/en_US/imprint.txt
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[company_name]
|
2 |
+
Owner: [company_owner]
|
3 |
+
[adress_street]
|
4 |
+
[adress_zip_location]
|
5 |
+
|
6 |
+
Management: [company_law_person]
|
7 |
+
Stockholder: [company_management]
|
8 |
+
|
9 |
+
Telephone number: [comm_phone]
|
10 |
+
E-Mail address: [comm_email]
|
11 |
+
|
12 |
+
Register Court & Register Number: [company_register_court], [company_register_nr]
|
13 |
+
|
14 |
+
Sales tax identification number: [company_uid]
|
15 |
+
|
16 |
+
Responsible for content: [content_responsible]
|
17 |
+
|
18 |
+
European Commission Online Dispute Resolution (OS) platform for consumers: <a href"https://ec.europa.eu/consumers/odr/" target="_blank">https://ec.europa.eu/consumers/odr/</a>. We are not willing and obliged to participate in a dispute settlement procedure before a consumer arbitration board.
|
templates/en_US/privacy-policy.txt
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h1>General Privacy Policy</h1>
|
2 |
+
The protection of your data is very important to us. We only process data on a legally compliant basis and consider it our duty to protect your data from any misuse. We use your data only for purposes to which you have authorized us.
|
3 |
+
|
4 |
+
Table of Contents
|
5 |
+
1. Objective and responsible body
|
6 |
+
2. Basic information on data processing
|
7 |
+
3. Processing of personal data
|
8 |
+
4. Collection of access data
|
9 |
+
5. Cookies & reach measurement
|
10 |
+
6. Google Analytics
|
11 |
+
7. Google Re-/Marketing Services
|
12 |
+
8. Facebook social plugins
|
13 |
+
9. Facebook remarketing
|
14 |
+
10. Newsletter
|
15 |
+
11. Integration of services and content of third parties
|
16 |
+
12. User rights and deletion
|
17 |
+
13. Changes to the privacy policy
|
18 |
+
|
19 |
+
<h2>1. Objective and responsible body</h2>
|
20 |
+
This Privacy Policy clarifies the nature, scope and purpose of the processing (including collection, processing, use and consent) of personal information contained in our online offering and the related websites, features and content (collectively referred to as "online offer" or "Website"). The privacy policy applies regardless of the domains, systems, platforms, and devices (such as desktop or mobile) on which the online offering is being run.
|
21 |
+
|
22 |
+
Provider of the online offer and responsible for the data protection law is [company_name], owner: [company_owner], [adress_street], [adress_zip_location] (hereinafter referred to as "provider", "we" or "us"). For the contact possibilities we refer to our imprint.
|
23 |
+
|
24 |
+
The term "user" includes all customers and visitors of our online offer. The terms used, such as "Users" are to be understood gender-neutral.
|
25 |
+
|
26 |
+
<´h2>2. Basic information on data processing</h2>
|
27 |
+
We only process users' personal data in compliance with the relevant data protection regulations in accordance with the requirements of data minimization and purpose limitation (see Processing Principles: EU GDPR Article 5). This means that the data of the users are processed only in the presence of a legal permit or obligation, for the fulfillment of contractual obligations (which are necessary, for example, for the provision of the services offered) or in the presence of your consent.
|
28 |
+
|
29 |
+
We take organizational, contractual and technical security measures in accordance with the state of the art to ensure that the provisions of the data protection laws are complied with and in order to protect the data processed by us against accidental or intentional manipulation, loss, destruction or against access by unauthorized persons.
|
30 |
+
|
31 |
+
Insofar as data transmission to third parties is necessary for the fulfillment of legal requirements, the fulfillment of the services to be provided within the framework of contractual obligations or on the basis of your explicit consent, we always ensure that this is done safely and in accordance with data protection regulations and in accordance with EU GDPR Article 5.
|
32 |
+
|
33 |
+
(Webshop, if applicable): A transfer of data to third parties does not take place, with the exception of the transmission of credit card data to the involved bank institutes / payment service providers for the purpose of debiting the purchase price, to the transport company / shipping company commissioned by us for the delivery of the goods as well as to our tax consultant Fulfillment of our tax obligations.
|
34 |
+
|
35 |
+
<h2>3. Processing of personal data</h2>
|
36 |
+
The personal data are, in addition to the use expressly mentioned in this privacy policy, processed for the following purposes on the basis of statutory requirements, to fulfill the contract or your express consent:
|
37 |
+
- The provision, execution, maintenance, optimization and security of our services, services and user services;
|
38 |
+
- Ensuring effective customer service and technical support.
|
39 |
+
|
40 |
+
Insofar as data transmission to third parties is necessary for the fulfillment of legal requirements, the fulfillment of the services to be provided within the framework of contractual obligations or on the basis of your express consent, we always ensure that this is done safely and in accordance with data protection regulations in accordance with EU GDPR Article 5.
|
41 |
+
|
42 |
+
(Webshop, if applicable): A transfer of data to third parties does not take place, with the exception of the transmission of credit card data to the involved bank institutes / payment service providers for the purpose of debiting the purchase price, to the transport company / shipping company commissioned by us for the delivery of the goods as well as to our tax consultant Fulfillment of our tax obligations.
|
43 |
+
|
44 |
+
When contacting us (via contact form or e-mail), the details of the user are stored for the purpose of processing the request as well as in the event that follow-up questions arise.
|
45 |
+
Personal data will be deleted if they have fulfilled their purpose and deletion does not conflict with any retention requirements.
|
46 |
+
|
47 |
+
<h2>4. Collection of access data</h2>
|
48 |
+
We collect data about every access to the server where this service is located (so-called server log files). The access data includes name of the retrieved web page, file, date and time of retrieval, amount of data transferred, message about successful retrieval, browser type and version, the user's operating system, referrer URL (the previously visited page), IP address and the requesting provider.
|
49 |
+
|
50 |
+
We use the log data without linking it to the specific person of a user or other profiling according to the statutory provisions only for statistical evaluations for the purpose of operation, security and optimization of our online offer. However, we reserve the right to retrospectively check the log data if, on the basis of concrete evidence, the legitimate suspicion of unlawful use exists.
|
51 |
+
|
52 |
+
<h2>5. Cookies & reach measurement</h2>
|
53 |
+
Cookies are information transmitted from our web server or third-party web servers to users' web browsers and are stored there for later retrieval. The use of cookies in the context of pseudonymous range measurement is described in this privacy policy.
|
54 |
+
The usage of this online offer is also possible with the exclusion of cookies. If users do not want cookies stored on their computer, they are asked to disable the option in their browser's system settings. Saved cookies can be deleted in the system settings of the browser. The exclusion of cookies can lead to functional restrictions of this online offer.
|
55 |
+
There is a possibility to manage many companies' online advertising cookies via the US website <a href="http://www.aboutads.info/choices" target="_blank">http://www.aboutads.info/choices</a> or the EU page <a href="http://www.youronlinechoices.com/uk/your-ad-choices/" target="_blank">http://www.youronlinechoices.com/uk/your-ad-choices/</a>.
|
56 |
+
|
57 |
+
<h2>6. Google Analytics</h2>
|
58 |
+
We use Google Analytics, a web analytics service provided by Google Inc. ("Google"). Google uses cookies. The information generated by the cookie about the use of the online offer by the users are usually transmitted to a Google server in the USA and stored there.
|
59 |
+
|
60 |
+
Google will use this information on our behalf to evaluate the use of our online offering by users, to compile reports on the activities within this online offering and to provide us with other services related to the use of this online offer and internet usage. In this case, pseudonymous usage profiles of the users can be created from the processed data.
|
61 |
+
|
62 |
+
We only use Google Analytics with activated IP anonymization. This means that the IP address of users will be shortened by Google within member states of the European Union or in other contracting states of the Agreement on the European Economic Area. Only in exceptional cases the full IP address will be sent to a Google server in the US and shortened there.
|
63 |
+
|
64 |
+
The IP address submitted by the user's browser will not be merged with other data provided by Google. Users can prevent the storage of cookies by setting their browser software accordingly; users may also prevent data collection by Google of data which is generated by the cookie and related to their use of the online offer as well as the processing of such data by Google by downloading and installing the browser plug-in available under the following link: <a href="http://tools.google.com/dlpage/gaoptout?hl=de" target="_blank">http://tools.google.com/dlpage/gaoptout?hl=de</a>.
|
65 |
+
|
66 |
+
For more information about Google's use of data, settings and opt-out options, please visit Google's websites: <a href="https://www.google.com/intl/en/policies/privacy/partners" target="_blank">https://www.google.com/intl/en/policies/privacy/partners</a> ("Google's use of your data when you use websites or our partners' apps "), <a href="http://www.google.com/policies/technologies/ads" target="_blank">http://www.google.com/policies/technologies/ads</a> (" Use of data for promotional purposes "), <a href="http://www.google.com/settings/ads" target="_blank">http://www.google.com/settings/ads</a> (" Managing information provided by Google used to show you ads ") and <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a> (" Determine which ads Google shows you ").
|
67 |
+
|
68 |
+
<h2>7. Google Re-/Marketing Services</h2>
|
69 |
+
We use the Google Inc. Marketing and Remarketing Services ("Google Marketing Services"), 1600 Amphitheater Parkway, Mountain View, CA 94043, USA, ("Google").
|
70 |
+
Google Marketing Services allows us to better target advertisements for and on our website so that we only present ads to users that potentially match their interests. E.g.: It is called remarketing if users are also shown ads for products they are interested in on other websites.
|
71 |
+
|
72 |
+
For these purposes, when Google and our other websites that are running Google Marketing Services are activated, Google runs a code and so-called (re) marketing tags (invisible graphics or code, etc., also named “web beacons”) are added and incorporated into the website. With their help, the user is provided with an individual cookie, viz. a small file is saved (instead of cookies, comparable technologies can also be used).
|
73 |
+
|
74 |
+
|
75 |
+
The cookies can be set by different domains, including google.com, doubleclick.net, invitemedia.com, admeld.com, googlesyndication.com or googleadservices.com. In this file it is noted which web pages users visited, what content they are interested in and what offers they have clicked, as well as technical information about the browser and operating system, referring web pages, visit time and other information about the use of the online offer.
|
76 |
+
|
77 |
+
The IP address of the users is also recorded, whereby in the context of Google Analytics the IP address is shortened within member states of the European Union or other contracting states of the Agreement on the European Economic Area. Only in exceptional cases data is transmitted to a Google server in the US and shortened there. The IP address will not be merged with data of the user within other offers from Google. The information mentioned above may also be associated with information from other sources. So that ads according to the interests of the users can be displayed when they visit other websites.
|
78 |
+
|
79 |
+
The data of the users are pseudonymised processed in the context of the Google marketing services. That means Google stores and processes e.g. not the name or e-mail address of the users, but processes the relevant data cookie-related within pseudonymous user profiles. From the perspective of Google, the ads are not managed and displayed to a specifically identifiable person, but to the cookie owner, regardless of who that cookie owner is. This does not apply if users have explicitly allowed Google to process their data without this pseudonymization. The information collected about users by "DoubleClick" is transmitted to Google and stored on Google's servers in the United States.
|
80 |
+
|
81 |
+
Among the Google marketing services we use is amongst others the online advertising program "Google AdWords". In the case of Google AdWords, each advertiser receives a different "conversion cookie". Cookies cannot be tracked through AdWords advertisers' websites. The information collected through the cookie is used to generate conversion statistics for AdWords advertisers who have opted for conversion tracking. Advertisers will see the total number of users who clicked on their ad and were redirected to a conversion tracking tag page. However, they do not receive information that personally identifies users.
|
82 |
+
|
83 |
+
We embed third-party ads based on Google's DoubleClick marketing service. DoubleClick uses cookies, which allow Google and its affiliate websites to serve ads based on users' visits to this site or other sites on the Internet.
|
84 |
+
We also engage third-party ads based on the Google AdSense marketing service. AdSense uses cookies, which allow Google and its affiliate websites to serve ads based on users' visits to this site or other sites on the Internet.
|
85 |
+
|
86 |
+
Another Google marketing service we use is the Google Tag Manager, which allows additional Google analytics and marketing services to be integrated into our website (e.g. AdWords, DoubleClick, or Google Analytics).
|
87 |
+
For more information about Google's data usage for marketing, see their overview page: <a href="https://www.google.com/policies/technologies/ads" target="_blank">https://www.google.com/policies/technologies/ads</a>, Google's Privacy Policy is available at <a href="https://www.google.com/policies/privacy" target="_blank">https://www.google.com/policies/privacy</a>.
|
88 |
+
If you wish to opt-out of Google Marketing Services, you may take advantage of Google's settings and opt-out options: <a href="http://www.google.com/ads/preferences" target="_blank">http://www.google.com/ads/preferences</a>.
|
89 |
+
|
90 |
+
<h2>8. Facebook social plugins</h2>
|
91 |
+
Our online offering uses social plugins ("plugins") from the social network facebook.com operated by Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbor, Dublin 2, Ireland ("Facebook"). The plugins are recognizable by one of the Facebook logos (white "f" on blue tile, the terms "Like" or a "thumbs up" sign) or are marked with the addition "Facebook Social Plugin". The list and appearance of Facebook Social Plugins can be viewed here: <a href="https://developers.facebook.com/docs/plugins/" target="_blank">https://developers.facebook.com/docs/plugins/</a>.
|
92 |
+
|
93 |
+
When a user invokes a feature of this online offering that includes such a plugin, their device establishes a direct connection to the Facebook servers. The content of the plugin is transmitted by Facebook directly to the device of the user and incorporated into the online offer. In the process, user profiles can be created from the processed data. We therefore have no influence on the amount of data that Facebook collects with the help of this plugin and therefore informs the users according to our knowledge.
|
94 |
+
|
95 |
+
By integrating plugins, Facebook receives the information that a user has accessed the corresponding page of the online offer. If the user is logged in to Facebook, Facebook can assign the visit to his Facebook account. If users interact with the plugins, for example, press the Like button or leave a comment, the information is transmitted from your device directly to Facebook and stored there. If a user is not a member of Facebook, there is still the possibility that Facebook will find out and save their IP address. According to Facebook, only an anonymous IP address is stored in Germany.
|
96 |
+
|
97 |
+
The purpose and scope of the data collection and the further processing and use of the data by Facebook, as well as the related rights and setting options for protecting the privacy of users, can be found in Facebook's privacy policy: <a href="https://www.facebook.com/about/privacy/" target="_blank">https://www.facebook.com/about/privacy/</a>.
|
98 |
+
|
99 |
+
If a user is a Facebook member and does not want Facebook to collect data about him via this online offer and link it to his member data stored on Facebook, he must log out of Facebook and delete his cookies before using our online offer. Other settings and possible revocations regarding the use of data for advertising purposes are possible within the Facebook profile settings: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> or via the US-American site <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> or the EU page <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a>. The settings are platform independent, which means that they are adopted for all devices, such as desktop computers or mobile devices.
|
100 |
+
|
101 |
+
<h2>9. Facebook remarketing</h2>
|
102 |
+
Within our on-line offer so-called "Facebook pixels" of the social network Facebook, which are operated by Facebook Inc., 1 Hacker Way, Menlo Park, CA 94025, USA, or if you are based in the EU, Facebook Ireland Ltd., 4 Grand Canal Square, Grand Canal Harbor, Dublin 2, Ireland ("Facebook").
|
103 |
+
|
104 |
+
With the help of the Facebook pixel, Facebook is able to designate the visitors of our offer as a target group for the presentation of advertisements, so-called "Facebook Ads". Accordingly, we use Facebook pixel to display Facebook ads only to those Facebook users who have also shown an interest in our website. In other words, with the help of the Facebook pixel, we want to make sure that our Facebook ads are in line with the potential interest of users and are not annoying. With the help of the Facebook pixel, we can also understand the effectiveness of the Facebook ads for statistical and market research purposes by seeing if users were redirected to our site after clicking on a Facebook ad.
|
105 |
+
|
106 |
+
Facebook pixel is directly integrated by Facebook when calling our website and can save a so-called cookie (a small file) on your device.
|
107 |
+
|
108 |
+
If you log in to Facebook or visit Facebook in a logged-in state, the visit of our offer is noted in your profile. The data collected about you are anonymous to us, so they do not give us any indications about the identity of the users. However, the data is stored and processed by Facebook, so that a connection to the respective user profile is possible. The processing of the data by Facebook is part of Facebook's data usage policy. Accordingly, you will learn more about how the remarketing pixel works and more generally about how Facebook ads are displayed in Facebook's Data Usage Policy: <a href="https://www.facebook.com/policy.php" target="_blank">https://www.facebook.com/policy.php</a>.
|
109 |
+
|
110 |
+
You may object to the data collection and use of your data by Facebook Pixel to display Facebook Ads. To do this, you can visit the page set up by Facebook and follow the instructions for the usage-based advertising settings: <a href="https://www.facebook.com/settings?tab=ads" target="_blank">https://www.facebook.com/settings?tab=ads</a> or the contradiction on the US-American site <a href="http://www.aboutads.info/choices/" target="_blank">http://www.aboutads.info/choices/</a> or the EU page <a href="http://www.youronlinechoices.com/" target="_blank">http://www.youronlinechoices.com/</a>. The settings are platform independent, that means they are adopted for all devices, such as desktop computers or mobile devices.
|
111 |
+
|
112 |
+
<h2>10. Newsletter</h2>
|
113 |
+
With the following information, we will explain the contents of our newsletter, the registration, sending and statistical evaluation procedures as well as your right of objection. By subscribing to our newsletter, you agree to the receipt and the procedures described.
|
114 |
+
|
115 |
+
Content of the newsletter: We send newsletters, e-mails and other electronic notifications with advertising information (hereinafter "newsletter") only with the consent of the recipient or a legal permission. Insofar as the contents of a newsletter are concretely described, they are authoritative for the consent of the users. In general our newsletters contain the following information: our products, offers, promotions and our company.
|
116 |
+
|
117 |
+
Double opt-in and logging: Registration for our newsletter is done in a so-called double-opt-in procedure. After registration, you will receive an e-mail asking you to confirm your registration. This confirmation is necessary so that nobody can register with an invalid or not owned e-mail addresses. The registration for the newsletter will be logged in order to prove the registration process according to the legal requirements. This includes the storage of the login and the confirmation time, as well as the IP address. Likewise, changes to your data stored by the newsletter service provider will be logged.
|
118 |
+
|
119 |
+
Newsletter service provider: The newsletter is sent by means of "[newsletter_service]" (hereinafter referred to as "newsletter service provider"). The privacy policy of the newsletter service provider can be found here: [newsletter_service_privacy_policy].
|
120 |
+
|
121 |
+
The e-mail addresses of our Newsletter recipients, as well as their other data described in the context of these notes, are stored on the servers of the newsletter service provider. The newsletter service provider uses this information to send and evaluate the newsletter on our behalf.
|
122 |
+
|
123 |
+
Furthermore, the newsletter service provider may, according to their information, use this data to optimize or improve its own services, e.g. for the technical optimization of the sending and the presentation of the newsletter or for economic purposes, to determine from which countries the recipients come. However, the newsletter service provider does not use the data of our newsletter recipients to contact them for their purposes or to pass these contacts on to third parties.
|
124 |
+
|
125 |
+
Credentials: To subscribe to the newsletter, it is sufficient to provide your e-mail address.
|
126 |
+
|
127 |
+
Statistical Survey and Analysis - The newsletters contain a so-called "web-beacon", a pixel-sized file that is retrieved from the server of the newsletter service provider when the newsletter is opened. This request will initially collect technical information, such as information about the browser and your system, as well as your IP address and time of retrieval. This information is used to improve the technical performance of services based on their specifications or audience and their reading habits, based on their locations (which can be determined using the IP address) or access times.
|
128 |
+
|
129 |
+
Statistical surveys also include determining if the newsletters are opened, when they are opened and which links are clicked. For technical reasons, this information can be assigned to individual newsletter recipients. However, it is neither our endeavor nor that of the newsletter service provider to observe individual users. The evaluations serve us much more to recognize the reading habits of our users and to adapt our content accordingly or to send different content according to the interests of our users.
|
130 |
+
|
131 |
+
Termination / Revocation - You may terminate the receipt of our newsletter at any time, that means revoking your consent. At the same time, your consent for receiving any emails from the newsletter service provider and the statistical analyzes expire. A separate revocation of receiving emails from the newsletter service provider or the statistical evaluation is unfortunately not possible. A link to cancel the newsletter can be found at the end of each newsletter.
|
132 |
+
|
133 |
+
<h2>11. Integration of services and content of third parties</h2>
|
134 |
+
It may occur that contents or services of third-party providers, such as maps or fonts from other websites, are included in our online offer. The inclusion of content from third-party providers always requires that third-party providers perceive the IP address of the users, since they could not send the content to the users' browser without the IP address.
|
135 |
+
|
136 |
+
The IP address is therefore required for the presentation of this content. Furthermore, providers of third-party content can set their own cookies and process users' data for their own purposes. In the process, user profiles can be created from the processed data. We do our best to use this content in a data-saving and data-avoiding manner as far as possible and select reliable third-party providers with regard to data security.
|
137 |
+
|
138 |
+
The following presentation provides an overview of third-party providers as well as their contents and links to their privacy statements, with further details on the processing of data and partly revocation possibilities (so-called opt-out):
|
139 |
+
|
140 |
+
- External fonts from Google, Inc., <a href="https://www.google.com/fonts" target="_blank">https://www.google.com/fonts</a> ("Google Fonts"). The integration of Google fonts is done by a server call on Google (usually in the US). Privacy Policy: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
141 |
+
- Maps of the "Google Maps" service provided by the third-party Google Inc., 1600 Amphitheater Parkway, Mountain View, CA 94043, USA. Privacy Policy: <a href="https://www.google.com/policies/privacy/ target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
142 |
+
- Third-party Google Inc.'s YouTube Platforms, 1600 Amphitheater Parkway, Mountain View, CA 94043, USA. Privacy Policy: <a href="https://www.google.com/policies/privacy/" target="_blank">https://www.google.com/policies/privacy/</a>, opt-out: <a href="https://www.google.com/settings/ads/" target="_blank">https://www.google.com/settings/ads/</a>.
|
143 |
+
|
144 |
+
<h2>12. User rights and deletion</h2>
|
145 |
+
Users have the right, upon request, to receive information free of charge about the personal data that we have stored about them.
|
146 |
+
In addition, users have the right to correct inaccurate data, revoke consent, block the processing and delete their personal information if justifiable and to file a complaint with the responsible regulatory authority in the event of unlawful processing.
|
147 |
+
|
148 |
+
The data stored with us are deleted as soon as they are no longer necessary for their purpose and the deletion does not conflict with any statutory storage requirements.
|
149 |
+
|
150 |
+
<h2>13. Changes to the privacy policy</h2>
|
151 |
+
We reserve the right to change the privacy policy in order to adapt it to changed legal situations, or to changes in the service and data processing. However, this only applies to declarations of data processing. If users' consent is required or elements of the privacy policy contain provisions of the contractual relationship with the users, the changes will only be made with the consent of the users.
|
152 |
+
Users are requested to inform themselves regularly about the content of the privacy policy.
|
153 |
+
|
154 |
+
Status: [save_date]
|
155 |
+
|
156 |
+
|