Version Description
- Change all requests and privacy preferences window to AJAX to avoid the admin-post hook issue.
- We do not track privacy policy anymore. We can now track any kind of policy that users want. Those have been moved to each consent.
- Including more options. Including "enable/disable" the privacy bar.
- New filters and funtions were included.
- Making the settings a little more accessible.
- Removed the reconsent modal. It was too obtrusive. We switched to a more subtle notification bar.
Download this release
Release Info
Developer | fclaussen |
Plugin | GDPR |
Version | 2.0.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.7 to 2.0.0
- README.txt +14 -1
- admin/class-gdpr-admin.php +140 -101
- admin/partials/settings.php +366 -291
- admin/partials/templates/tmpl-consents.php +35 -10
- admin/partials/templates/tmpl-cookies.php +68 -22
- admin/partials/tools.php +2 -2
- assets/css/gdpr-admin.css +1 -1
- assets/css/gdpr-public.css +1 -1
- assets/js/gdpr-admin.js +1 -1
- assets/js/gdpr-public.js +1 -1
- gdpr.php +2 -2
- includes/class-gdpr-activator.php +29 -0
- includes/class-gdpr-help.php +2 -2
- includes/class-gdpr.php +35 -19
- includes/helper-functions.php +12 -0
- languages/gdpr.pot +297 -216
- public/class-gdpr-public.php +52 -45
- public/class-gdpr-requests-public.php +58 -91
- public/partials/complaint-form.php +2 -2
- public/partials/confirmation-screens.php +35 -33
- public/partials/delete-form.php +1 -1
- public/partials/export-data-form.php +1 -1
- public/partials/privacy-bar.php +21 -5
- public/partials/privacy-preferences-modal.php +57 -43
- public/partials/reconsent-bar.php +34 -0
- public/partials/reconsent-modal.php +0 -34
- public/partials/rectify-form.php +2 -2
README.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: gdpr, compliance, privacy, law, general data protection regulation
|
|
5 |
Requires at least: 4.7
|
6 |
Requires PHP: 5.6
|
7 |
Tested up to: 4.9
|
8 |
-
Stable tag:
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -206,6 +206,14 @@ Activating this plugin does not guarantee that an organisation is successfully m
|
|
206 |
|
207 |
== Changelog ==
|
208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
= 1.4.7 =
|
210 |
* Fix for users who were complaining about their scroll bars missing if they did not select a privacy policy page.
|
211 |
|
@@ -367,6 +375,11 @@ Activating this plugin does not guarantee that an organisation is successfully m
|
|
367 |
|
368 |
== Upgrade Notice ==
|
369 |
|
|
|
|
|
|
|
|
|
|
|
370 |
= 1.0.0 =
|
371 |
This is a major rewrite of the plugin. Things will look different and work differently.
|
372 |
We tried to keep most things the same so the impact would be minimal.
|
5 |
Requires at least: 4.7
|
6 |
Requires PHP: 5.6
|
7 |
Tested up to: 4.9
|
8 |
+
Stable tag: 2.0.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
206 |
|
207 |
== Changelog ==
|
208 |
|
209 |
+
= 2.0.0 =
|
210 |
+
* Change all requests and privacy preferences window to AJAX to avoid the admin-post hook issue.
|
211 |
+
* We do not track privacy policy anymore. We can now track any kind of policy that users want. Those have been moved to each consent.
|
212 |
+
* Including more options. Including "enable/disable" the privacy bar.
|
213 |
+
* New filters and funtions were included.
|
214 |
+
* Making the settings a little more accessible.
|
215 |
+
* Removed the reconsent modal. It was too obtrusive. We switched to a more subtle notification bar.
|
216 |
+
|
217 |
= 1.4.7 =
|
218 |
* Fix for users who were complaining about their scroll bars missing if they did not select a privacy policy page.
|
219 |
|
375 |
|
376 |
== Upgrade Notice ==
|
377 |
|
378 |
+
= 2.0.0 =
|
379 |
+
We have added a few new options which must be reviewed before continuing to use the plugin.
|
380 |
+
For cookies, we have added a status which allows you to set them as ON, OFF or Required. For consents, we moved the policy selector into each consent. All policies can now be tracked through this.
|
381 |
+
Please keep in mind the plugin might not work as intended until these settings are reviewed.
|
382 |
+
|
383 |
= 1.0.0 =
|
384 |
This is a major rewrite of the plugin. Things will look different and work differently.
|
385 |
We tried to keep most things the same so the impact would be minimal.
|
admin/class-gdpr-admin.php
CHANGED
@@ -151,41 +151,35 @@ class GDPR_Admin {
|
|
151 |
}
|
152 |
|
153 |
/**
|
154 |
-
* Sanitizing user input on the cookie
|
155 |
* @since 1.0.0
|
156 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
157 |
* @param array $tabs The cookie tabs.
|
158 |
* @return array The sanitized options.
|
159 |
*/
|
160 |
-
public function
|
161 |
|
162 |
$output = array();
|
163 |
-
if ( ! is_array( $
|
164 |
return array();
|
165 |
}
|
166 |
|
167 |
-
foreach ( $
|
168 |
-
|
169 |
-
unset( $tabs[ $key ] );
|
170 |
-
continue;
|
171 |
-
}
|
172 |
$output[ $key ] = array(
|
173 |
-
'name'
|
174 |
-
'
|
175 |
-
'
|
176 |
-
'
|
|
|
177 |
);
|
|
|
|
|
|
|
178 |
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
unset( $props['hosts'][ $host_key ] );
|
183 |
-
continue;
|
184 |
-
}
|
185 |
-
$output[ $key ]['hosts'][ $host_key ] = array(
|
186 |
-
'name' => sanitize_text_field( wp_unslash( $host['name'] ) ),
|
187 |
-
'cookies_used' => sanitize_text_field( wp_unslash( $host['cookies_used'] ) ),
|
188 |
-
'optout' => esc_url_raw( $host['optout'] ),
|
189 |
);
|
190 |
}
|
191 |
}
|
@@ -200,10 +194,9 @@ class GDPR_Admin {
|
|
200 |
*/
|
201 |
public function register_settings() {
|
202 |
$settings = array(
|
203 |
-
'gdpr_privacy_policy_page' => 'intval',
|
204 |
'gdpr_cookie_banner_content' => array( $this, 'sanitize_with_links' ),
|
205 |
'gdpr_cookie_privacy_excerpt' => 'sanitize_textarea_field',
|
206 |
-
'gdpr_cookie_popup_content'
|
207 |
'gdpr_email_limit' => 'intval',
|
208 |
'gdpr_consent_types' => array( $this, 'sanitize_consents' ),
|
209 |
'gdpr_deletion_needs_review' => 'boolval',
|
@@ -214,6 +207,9 @@ class GDPR_Admin {
|
|
214 |
'gdpr_recaptcha_secret_key' => 'sanitize_text_field',
|
215 |
'gdpr_add_consent_checkboxes_registration' => 'boolval',
|
216 |
'gdpr_add_consent_checkboxes_checkout' => 'boolval',
|
|
|
|
|
|
|
217 |
);
|
218 |
foreach ( $settings as $option_name => $sanitize_callback ) {
|
219 |
register_setting( 'gdpr', $option_name, array( 'sanitize_callback' => $sanitize_callback ) );
|
@@ -245,15 +241,15 @@ class GDPR_Admin {
|
|
245 |
}
|
246 |
|
247 |
foreach ( $consents as $key => $props ) {
|
248 |
-
if ( '' === $props['name']
|
249 |
unset( $consents[ $key ] );
|
250 |
continue;
|
251 |
}
|
252 |
$output[ $key ] = array(
|
253 |
'name' => sanitize_text_field( wp_unslash( $props['name'] ) ),
|
254 |
-
'
|
255 |
-
'description' => wp_kses( wp_unslash( $props['description'] ), $this->allowed_html ),
|
256 |
-
'registration' => wp_kses( wp_unslash( $props['registration'] ), $this->allowed_html ),
|
257 |
);
|
258 |
}
|
259 |
return $output;
|
@@ -266,14 +262,10 @@ class GDPR_Admin {
|
|
266 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
267 |
*/
|
268 |
public function settings_page_template() {
|
269 |
-
$
|
270 |
-
$
|
271 |
-
'general' => esc_html__( 'General', 'gdpr' ),
|
272 |
-
'cookies' => esc_html__( 'Cookies', 'gdpr' ),
|
273 |
-
'consents' => esc_html__( 'Consents', 'gdpr' ),
|
274 |
-
);
|
275 |
|
276 |
-
$
|
277 |
|
278 |
include_once plugin_dir_path( __FILE__ ) . 'partials/templates/tmpl-cookies.php';
|
279 |
include_once plugin_dir_path( __FILE__ ) . 'partials/templates/tmpl-consents.php';
|
@@ -518,59 +510,76 @@ class GDPR_Admin {
|
|
518 |
wp_send_json_success( $log );
|
519 |
}
|
520 |
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
|
|
|
|
|
|
|
|
530 |
}
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
|
|
|
|
|
|
541 |
}
|
542 |
|
543 |
/**
|
544 |
-
* Admin notice when the
|
545 |
* @since 1.0.0
|
546 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
547 |
*/
|
548 |
-
public function
|
549 |
-
$
|
550 |
-
if (
|
551 |
return;
|
552 |
}
|
|
|
|
|
553 |
?>
|
554 |
-
<div class="notice notice-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
|
|
|
|
|
|
560 |
<input type="hidden" name="action" value="seek_consent">
|
|
|
|
|
561 |
<p>
|
562 |
<?php submit_button( esc_html__( 'Ask for consent', 'gdpr' ), 'primary', 'submit', false ); ?>
|
563 |
</p>
|
564 |
</form>
|
565 |
-
<form
|
566 |
-
<?php wp_nonce_field( 'gdpr-
|
567 |
-
<input type="hidden" name="action" value="
|
|
|
|
|
568 |
<p>
|
569 |
<?php submit_button( esc_html__( 'Ignore', 'gdpr' ), 'secondary', 'submit', false ); ?>
|
570 |
</p>
|
571 |
</form>
|
572 |
</div>
|
573 |
<?php
|
|
|
574 |
}
|
575 |
|
576 |
/**
|
@@ -718,11 +727,16 @@ class GDPR_Admin {
|
|
718 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
719 |
*/
|
720 |
public function seek_consent() {
|
721 |
-
if ( ! isset( $_POST['
|
722 |
-
|
723 |
}
|
724 |
|
725 |
-
|
|
|
|
|
|
|
|
|
|
|
726 |
|
727 |
$users = get_users( array(
|
728 |
'fields' => 'all_with_meta'
|
@@ -730,25 +744,14 @@ class GDPR_Admin {
|
|
730 |
|
731 |
foreach ( $users as $user ) {
|
732 |
$usermeta = get_user_meta( $user->ID, 'gdpr_consents' );
|
733 |
-
if ( in_array(
|
734 |
-
|
735 |
-
|
|
|
736 |
}
|
737 |
}
|
738 |
|
739 |
-
|
740 |
-
set_transient( 'settings_errors', get_settings_errors(), 30 );
|
741 |
-
wp_safe_redirect(
|
742 |
-
esc_url_raw(
|
743 |
-
add_query_arg(
|
744 |
-
array(
|
745 |
-
'settings-updated' => true
|
746 |
-
),
|
747 |
-
wp_get_referer()
|
748 |
-
)
|
749 |
-
)
|
750 |
-
);
|
751 |
-
exit;
|
752 |
}
|
753 |
|
754 |
/**
|
@@ -758,20 +761,29 @@ class GDPR_Admin {
|
|
758 |
* @param int $ID The page ID.
|
759 |
* @param WP_Post $post The post object.
|
760 |
*/
|
761 |
-
public function
|
762 |
-
$
|
763 |
-
$
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
}
|
774 |
}
|
|
|
775 |
}
|
776 |
|
777 |
/**
|
@@ -779,12 +791,15 @@ class GDPR_Admin {
|
|
779 |
* @since 1.0.0
|
780 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
781 |
*/
|
782 |
-
public function
|
783 |
-
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'gdpr-
|
784 |
wp_send_json_error( esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) );
|
785 |
}
|
786 |
|
787 |
-
|
|
|
|
|
|
|
788 |
wp_send_json_success();
|
789 |
}
|
790 |
|
@@ -891,4 +906,28 @@ class GDPR_Admin {
|
|
891 |
}
|
892 |
}
|
893 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
894 |
}
|
151 |
}
|
152 |
|
153 |
/**
|
154 |
+
* Sanitizing user input on the cookie categories.
|
155 |
* @since 1.0.0
|
156 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
157 |
* @param array $tabs The cookie tabs.
|
158 |
* @return array The sanitized options.
|
159 |
*/
|
160 |
+
public function sanitize_cookie_categories( $cookie_categories ) {
|
161 |
|
162 |
$output = array();
|
163 |
+
if ( ! is_array( $cookie_categories ) ) {
|
164 |
return array();
|
165 |
}
|
166 |
|
167 |
+
foreach ( $cookie_categories as $key => $props ) {
|
168 |
+
$key = sanitize_text_field( $key );
|
|
|
|
|
|
|
169 |
$output[ $key ] = array(
|
170 |
+
'name' => isset( $props['name'] ) ? sanitize_text_field( $props['name'] ) : '',
|
171 |
+
'status' => isset( $props['status'] ) ? sanitize_text_field( $props['status'] ) : '',
|
172 |
+
'cookies_used' => isset( $props['cookies_used'] ) ? sanitize_text_field( wp_unslash( $props['cookies_used'] ) ) : '',
|
173 |
+
'how_we_use' => isset( $props['how_we_use'] ) ? wp_kses_post( $props['how_we_use'] ) : '',
|
174 |
+
'domains' => array(),
|
175 |
);
|
176 |
+
if ( isset( $props['domains'] ) ) {
|
177 |
+
foreach ( $props['domains'] as $domain_key => $domain ) {
|
178 |
+
$domain_key = sanitize_text_field( $domain_key );
|
179 |
|
180 |
+
$output[ $key ]['domains'][ $domain_key ] = array(
|
181 |
+
'cookies_used' => isset( $domain['cookies_used'] ) ? sanitize_text_field( $domain['cookies_used'] ) : '',
|
182 |
+
'optout' => isset( $domain['optout'] ) ? esc_url_raw( $domain['optout'] ) : '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
);
|
184 |
}
|
185 |
}
|
194 |
*/
|
195 |
public function register_settings() {
|
196 |
$settings = array(
|
|
|
197 |
'gdpr_cookie_banner_content' => array( $this, 'sanitize_with_links' ),
|
198 |
'gdpr_cookie_privacy_excerpt' => 'sanitize_textarea_field',
|
199 |
+
'gdpr_cookie_popup_content' => array( $this, 'sanitize_cookie_categories' ),
|
200 |
'gdpr_email_limit' => 'intval',
|
201 |
'gdpr_consent_types' => array( $this, 'sanitize_consents' ),
|
202 |
'gdpr_deletion_needs_review' => 'boolval',
|
207 |
'gdpr_recaptcha_secret_key' => 'sanitize_text_field',
|
208 |
'gdpr_add_consent_checkboxes_registration' => 'boolval',
|
209 |
'gdpr_add_consent_checkboxes_checkout' => 'boolval',
|
210 |
+
'gdpr_refresh_after_preferences_update' => 'boolval',
|
211 |
+
'gdpr_enable_privacy_bar' => 'boolval',
|
212 |
+
'gdpr_display_cookie_categories_in_bar' => 'boolval',
|
213 |
);
|
214 |
foreach ( $settings as $option_name => $sanitize_callback ) {
|
215 |
register_setting( 'gdpr', $option_name, array( 'sanitize_callback' => $sanitize_callback ) );
|
241 |
}
|
242 |
|
243 |
foreach ( $consents as $key => $props ) {
|
244 |
+
if ( '' === $props['name'] ) {
|
245 |
unset( $consents[ $key ] );
|
246 |
continue;
|
247 |
}
|
248 |
$output[ $key ] = array(
|
249 |
'name' => sanitize_text_field( wp_unslash( $props['name'] ) ),
|
250 |
+
'policy-page' => isset( $props['policy-page'] ) ? absint( $props['policy-page'] ) : 0,
|
251 |
+
'description' => isset( $props['description'] ) ? wp_kses( wp_unslash( $props['description'] ), $this->allowed_html ) : '',
|
252 |
+
'registration' => isset( $props['registration'] ) ? wp_kses( wp_unslash( $props['registration'] ), $this->allowed_html ) : '',
|
253 |
);
|
254 |
}
|
255 |
return $output;
|
262 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
263 |
*/
|
264 |
public function settings_page_template() {
|
265 |
+
$registered_cookies = get_option( 'gdpr_cookie_popup_content', array() );
|
266 |
+
$consent_types = get_option( 'gdpr_consent_types', array() );
|
|
|
|
|
|
|
|
|
267 |
|
268 |
+
$pages = get_pages();
|
269 |
|
270 |
include_once plugin_dir_path( __FILE__ ) . 'partials/templates/tmpl-cookies.php';
|
271 |
include_once plugin_dir_path( __FILE__ ) . 'partials/templates/tmpl-consents.php';
|
510 |
wp_send_json_success( $log );
|
511 |
}
|
512 |
|
513 |
+
public function review_settings_after_v2_notice() {
|
514 |
+
// Check the transient to see if we've just updated the plugin
|
515 |
+
if ( get_transient( 'gdpr_updated' ) && '2.0.0' === $this->version ) {
|
516 |
+
?>
|
517 |
+
<div class="notice notice-warning review-after-v2-required is-dismissible">
|
518 |
+
<h2><?php esc_html_e( 'GDPR' ); ?></h2>
|
519 |
+
<p><strong><?php esc_html_e( 'Review your settings', 'gdpr' ); ?></strong></p>
|
520 |
+
<p><?php esc_html_e( 'We have added a few new options which must be reviewed before continuing to use the plugin.', 'gdpr'); ?></p>
|
521 |
+
<p><?php esc_html_e( 'For cookies, we have added a status which allows you to set them as ON, OFF or Required. For consents, we moved the policy selector into each consent. All policies can now be tracked through this.', 'gdpr' ); ?></p>
|
522 |
+
<p><?php esc_html_e( 'Please keep in mind the plugin might not work as intended until these settings are reviewed.', 'gdpr' ); ?></p>
|
523 |
+
</div>
|
524 |
+
<?php
|
525 |
+
delete_transient( 'gdpr_updated' );
|
526 |
}
|
527 |
+
}
|
528 |
+
|
529 |
+
function upgrade_completed( $upgrader_object, $options ) {
|
530 |
+
// If an update has taken place and the updated type is plugins and the plugins element exists
|
531 |
+
if( $options['action'] == 'update' && $options['type'] == 'plugin' && isset( $options['plugins'] ) ) {
|
532 |
+
// Iterate through the plugins being updated and check if ours is there
|
533 |
+
foreach( $options['plugins'] as $plugin ) {
|
534 |
+
if( $plugin == 'gdpr/gdpr.php' ) {
|
535 |
+
// Set a transient to record that our plugin has just been updated
|
536 |
+
set_transient( 'gdpr_updated', 1 );
|
537 |
+
}
|
538 |
+
}
|
539 |
+
}
|
540 |
}
|
541 |
|
542 |
/**
|
543 |
+
* Admin notice when one of the policies has been updated.
|
544 |
* @since 1.0.0
|
545 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
546 |
*/
|
547 |
+
public function policy_updated_notice() {
|
548 |
+
$policies_updated = get_option( 'gdpr_policies_updated', array() );
|
549 |
+
if ( empty( $policies_updated ) ) {
|
550 |
return;
|
551 |
}
|
552 |
+
|
553 |
+
foreach ( $policies_updated as $key => $policy ) {
|
554 |
?>
|
555 |
+
<div class="notice notice-warning policy-page-updated-notice">
|
556 |
+
<?php /* translators: Name of the page that was updated. */ ?>
|
557 |
+
<strong><?php echo sprintf( esc_html__( 'Your %s page has been updated.', 'gdpr'), $policy ); ?></strong>
|
558 |
+
<span>
|
559 |
+
<?php esc_html_e( 'In case this was not a small typo fix, you must ask users for explicit consent again.' , 'gdpr' ); ?>
|
560 |
+
</span>
|
561 |
+
<span class="spinner"></span>
|
562 |
+
<form method="post" class="frm-policy-updated">
|
563 |
+
<?php wp_nonce_field( 'gdpr-seek-consent', 'policy-updated-nonce' ); ?>
|
564 |
<input type="hidden" name="action" value="seek_consent">
|
565 |
+
<input type="hidden" name="policy_id" value="<?php echo esc_attr( $key ); ?>">
|
566 |
+
<input type="hidden" name="policy_name" value="<?php echo esc_attr( $policy ); ?>">
|
567 |
<p>
|
568 |
<?php submit_button( esc_html__( 'Ask for consent', 'gdpr' ), 'primary', 'submit', false ); ?>
|
569 |
</p>
|
570 |
</form>
|
571 |
+
<form method="post" class="frm-policy-updated">
|
572 |
+
<?php wp_nonce_field( 'gdpr-ignore-update', 'ignore-policy-update-nonce' ); ?>
|
573 |
+
<input type="hidden" name="action" value="ignore_policy_update">
|
574 |
+
<input type="hidden" name="policy_id" value="<?php echo esc_attr( $key ); ?>">
|
575 |
+
<input type="hidden" name="policy_name" value="<?php echo esc_attr( $policy ); ?>">
|
576 |
<p>
|
577 |
<?php submit_button( esc_html__( 'Ignore', 'gdpr' ), 'secondary', 'submit', false ); ?>
|
578 |
</p>
|
579 |
</form>
|
580 |
</div>
|
581 |
<?php
|
582 |
+
}
|
583 |
}
|
584 |
|
585 |
/**
|
727 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
728 |
*/
|
729 |
public function seek_consent() {
|
730 |
+
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'gdpr-seek-consent' ) ) {
|
731 |
+
wp_send_json_error( esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) );
|
732 |
}
|
733 |
|
734 |
+
$policy_id = sanitize_text_field( $_POST['policy_id'] );
|
735 |
+
$policy_name = sanitize_text_field( $_POST['policy_name'] );
|
736 |
+
$policies_updated = get_option( 'gdpr_policies_updated', array() );
|
737 |
+
|
738 |
+
unset( $policies_updated[ $policy_id ] );
|
739 |
+
update_option( 'gdpr_policies_updated', $policies_updated );
|
740 |
|
741 |
$users = get_users( array(
|
742 |
'fields' => 'all_with_meta'
|
744 |
|
745 |
foreach ( $users as $user ) {
|
746 |
$usermeta = get_user_meta( $user->ID, 'gdpr_consents' );
|
747 |
+
if ( in_array( $policy_id, $usermeta ) ) {
|
748 |
+
/* translators: 1: The name of the policy that was updated. */
|
749 |
+
GDPR_Audit_Log::log( $user->ID, sprintf( esc_html__( '%1$s has been updated. Removing the %1$s consent and requesting new consent.', 'gdpr' ) ) );
|
750 |
+
delete_user_meta( $user->ID, 'gdpr_consents', $policy_id );
|
751 |
}
|
752 |
}
|
753 |
|
754 |
+
wp_send_json_success();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
755 |
}
|
756 |
|
757 |
/**
|
761 |
* @param int $ID The page ID.
|
762 |
* @param WP_Post $post The post object.
|
763 |
*/
|
764 |
+
public function policy_updated( $ID, $post ) {
|
765 |
+
$policies_updated = get_option( 'gdpr_policies_updated', array() );
|
766 |
+
$consents = get_option( 'gdpr_consent_types', array() );
|
767 |
+
$required_consents = array_filter( $consents, function( $consent ) {
|
768 |
+
return ! empty( $consent['policy-page'] );
|
769 |
+
} );
|
770 |
+
|
771 |
+
if ( ! empty( $required_consents ) ) {
|
772 |
+
foreach ( $required_consents as $consent_id => $consent ) {
|
773 |
+
if ( $ID === $consent['policy-page'] ) {
|
774 |
+
$revisions = wp_get_post_revisions( $ID );
|
775 |
+
$revisions = array_filter( $revisions, function( $rev ) {
|
776 |
+
return strpos( $rev->post_name, 'autosave' ) === false;
|
777 |
+
});
|
778 |
+
|
779 |
+
reset( $revisions );
|
780 |
+
if ( current( $revisions )->post_content !== $post->post_content ) {
|
781 |
+
$policies_updated[ $consent_id ] = $consent['name'];
|
782 |
+
}
|
783 |
+
}
|
784 |
}
|
785 |
}
|
786 |
+
update_option( 'gdpr_policies_updated', $policies_updated );
|
787 |
}
|
788 |
|
789 |
/**
|
791 |
* @since 1.0.0
|
792 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
793 |
*/
|
794 |
+
public function ignore_policy_update() {
|
795 |
+
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'gdpr-ignore-update' ) ) {
|
796 |
wp_send_json_error( esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) );
|
797 |
}
|
798 |
|
799 |
+
$policy = sanitize_text_field( $_POST['policy_id'] );
|
800 |
+
$policies_updated = get_option( 'gdpr_policies_updated', array() );
|
801 |
+
unset( $policies_updated[ $policy ] );
|
802 |
+
update_option( 'gdpr_policies_updated', $policies_updated );
|
803 |
wp_send_json_success();
|
804 |
}
|
805 |
|
906 |
}
|
907 |
}
|
908 |
|
909 |
+
|
910 |
+
/**
|
911 |
+
* Filters the display output of custom columns in the Users list table.
|
912 |
+
* @since 2.0.0
|
913 |
+
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
914 |
+
*
|
915 |
+
* @param string $val Custom column output. Default empty.
|
916 |
+
* @param string $column_name Column name.
|
917 |
+
* @param int $user_id ID of the currently-listed user.
|
918 |
+
*/
|
919 |
+
public function add_consents_to_consents_column( $val, $column_name, $user_id ) {
|
920 |
+
if ( 'consents' === $column_name ) {
|
921 |
+
$user_consents = get_user_meta( $user_id, 'gdpr_consents' );
|
922 |
+
return implode(', ', $user_consents );
|
923 |
+
}
|
924 |
+
|
925 |
+
return $val;
|
926 |
+
}
|
927 |
+
|
928 |
+
public function add_consents_column_to_user_table( $column_headers ) {
|
929 |
+
$column_headers['consents'] = esc_html__( 'Consents', 'gdpr' );
|
930 |
+
return $column_headers;
|
931 |
+
}
|
932 |
+
|
933 |
}
|
admin/partials/settings.php
CHANGED
@@ -1,12 +1,5 @@
|
|
1 |
<div class="wrap gdpr">
|
2 |
-
<h1><?php esc_html_e( 'Settings', 'gdpr' ); ?></h1>
|
3 |
-
<div class="nav-tab-wrapper">
|
4 |
-
<?php foreach ( $tabs as $tab => $value ) : ?>
|
5 |
-
<a href="<?php echo '#' . $tab; ?>" class="nav-tab">
|
6 |
-
<?php echo esc_html( $value ); ?>
|
7 |
-
</a>
|
8 |
-
<?php endforeach; ?>
|
9 |
-
</div>
|
10 |
|
11 |
<?php settings_errors(); ?>
|
12 |
|
@@ -14,305 +7,387 @@
|
|
14 |
|
15 |
<?php settings_fields( 'gdpr' ); ?>
|
16 |
|
17 |
-
<
|
18 |
-
<
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
<
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
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 |
<tbody>
|
112 |
<tr>
|
113 |
<th scope="row">
|
114 |
-
<label for="
|
115 |
</th>
|
116 |
<td>
|
117 |
-
<?php $
|
118 |
-
<input type="checkbox" name="<?php echo esc_attr( '
|
119 |
</td>
|
120 |
</tr>
|
121 |
<tr>
|
122 |
<th scope="row">
|
123 |
-
<label for="
|
124 |
</th>
|
125 |
<td>
|
126 |
-
<?php $
|
127 |
-
<input type="
|
128 |
-
</td>
|
129 |
-
</tr>
|
130 |
-
<tr>
|
131 |
-
<th scope="row">
|
132 |
-
<label for="gdpr_recaptcha_secret_key"><?php esc_html_e( 'Secret Key', 'gdpr' ) ?></label>
|
133 |
-
</th>
|
134 |
-
<td>
|
135 |
-
<?php $secret_key = get_option( 'gdpr_recaptcha_secret_key', '' ); ?>
|
136 |
-
<input type="password" name="gdpr_recaptcha_secret_key" value="<?php echo esc_attr( $secret_key ); ?>" placeholder="">
|
137 |
</td>
|
138 |
</tr>
|
139 |
</tbody>
|
140 |
</table>
|
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 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
<span class="gdpr-slider round"></span>
|
279 |
-
</label>
|
280 |
-
<?php endif; ?>
|
281 |
-
</td>
|
282 |
-
</tr>
|
283 |
-
<tr>
|
284 |
-
<th><label for="consent-description-<?php echo esc_attr( $consent_key ); ?>"><?php esc_html_e( 'Consent description', 'gdpr' ); ?></label></th>
|
285 |
-
<td><textarea name="<?php echo esc_attr( 'gdpr_consent_types' ); ?>[<?php echo esc_attr( $consent_key ); ?>][description]" id="consent-description-<?php echo esc_attr( $consent_key ); ?>" cols="53" rows="3" required><?php echo esc_html( $consent['description'] ); ?></textarea></td>
|
286 |
-
</tr>
|
287 |
-
<tr>
|
288 |
-
<th><label for="consent-registration-<?php echo esc_attr( $consent_key ); ?>"><?php esc_html_e( 'Registration message', 'gdpr' ); ?></label></th>
|
289 |
-
<td><textarea name="<?php echo esc_attr( 'gdpr_consent_types' ); ?>[<?php echo esc_attr( $consent_key ); ?>][registration]" id="consent-registration-<?php echo esc_attr( $consent_key ); ?>" cols="53" rows="3" required><?php echo esc_html( $consent['registration'] ); ?></textarea></td>
|
290 |
-
</tr>
|
291 |
-
</table>
|
292 |
-
</div><!-- .inside -->
|
293 |
-
</div><!-- .postbox -->
|
294 |
-
<?php endforeach ?>
|
295 |
-
<?php endif ?>
|
296 |
-
</div>
|
297 |
</div>
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
<
|
307 |
-
<?php
|
308 |
-
$
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
</div>
|
317 |
<?php
|
318 |
do_action( 'gdpr_extra_settings' );
|
1 |
<div class="wrap gdpr">
|
2 |
+
<h1><?php esc_html_e( 'GDPR Settings', 'gdpr' ); ?></h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
<?php settings_errors(); ?>
|
5 |
|
7 |
|
8 |
<?php settings_fields( 'gdpr' ); ?>
|
9 |
|
10 |
+
<table class="form-table">
|
11 |
+
<tbody>
|
12 |
+
<tr>
|
13 |
+
<th scope="row">
|
14 |
+
<label for="gdpr_email_limit"><?php esc_html_e( 'Outgoing email limit', 'gdpr' ) ?>:</label>
|
15 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This is the hourly outgoing email limit set by your server.', 'gdpr' ); ?></span>
|
16 |
+
<span data-tooltip="<?php esc_attr_e( 'This is the hourly outgoing email limit set by your server.', 'gdpr' ); ?>">
|
17 |
+
<span class="dashicons dashicons-info"></span>
|
18 |
+
</span>
|
19 |
+
</th>
|
20 |
+
<td>
|
21 |
+
<?php $limit = get_option( 'gdpr_email_limit', 100 ); ?>
|
22 |
+
<input type="number" name="gdpr_email_limit" id="gdpr_email_limit" value="<?php echo esc_attr( $limit ); ?>">
|
23 |
+
<span class="description"><?php esc_html_e( 'Emails/hour', 'gdpr' ); ?></span>
|
24 |
+
</td>
|
25 |
+
</tr>
|
26 |
+
<tr>
|
27 |
+
<th scope="row">
|
28 |
+
<label for="gdpr_deletion_needs_review"><?php esc_html_e( 'User deletion', 'gdpr' ) ?>:</label>
|
29 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Useful if you need to remove the user from third-party services.', 'gdpr' ); ?></span>
|
30 |
+
<span data-tooltip="<?php esc_attr_e( 'Useful if you need to remove the user from third-party services.', 'gdpr' ); ?>">
|
31 |
+
<span class="dashicons dashicons-info"></span>
|
32 |
+
</span>
|
33 |
+
</th>
|
34 |
+
<td>
|
35 |
+
<?php $needs_review = get_option( 'gdpr_deletion_needs_review', true ); ?>
|
36 |
+
<input type="checkbox" name="gdpr_deletion_needs_review" id="gdpr_deletion_needs_review" value="1" <?php checked( $needs_review, true ); ?>><span class="description"><label for="gdpr_deletion_needs_review"><?php esc_html_e( 'Send all deletion requests to the review table.', 'gdpr' ); ?></label></span>
|
37 |
+
</td>
|
38 |
+
</tr>
|
39 |
+
<tr>
|
40 |
+
<th scope="row">
|
41 |
+
<label for="gdpr_refresh_after_preferences_update"><?php esc_html_e( 'Refresh page after updating preferences', 'gdpr' ) ?>:</label>
|
42 |
+
</th>
|
43 |
+
<td>
|
44 |
+
<?php $refresh_page = get_option( 'gdpr_refresh_after_preferences_update', false ); ?>
|
45 |
+
<input type="checkbox" name="gdpr_refresh_after_preferences_update" id="gdpr_refresh_after_preferences_update" value="1" <?php checked( $refresh_page, true ); ?>>
|
46 |
+
<span class="description"><?php esc_html_e( 'Useful for landing pages or to track a visit with Google Analytics.', 'gdpr' ); ?></span>
|
47 |
+
</td>
|
48 |
+
</tr>
|
49 |
+
<tr>
|
50 |
+
<th scope="row">
|
51 |
+
<label for="gdpr_disable_css"><?php esc_html_e( 'Disable CSS', 'gdpr' ) ?>:</label>
|
52 |
+
</th>
|
53 |
+
<td>
|
54 |
+
<?php $disable_css = get_option( 'gdpr_disable_css', false ); ?>
|
55 |
+
<input type="checkbox" name="gdpr_disable_css" id="gdpr_disable_css" value="1" <?php checked( $disable_css, true ); ?>><label for="gdpr_disable_css"><span class="description"><?php esc_html_e( 'Make sure you know what you are doing before checking this.', 'gdpr' ); ?></span></label>
|
56 |
+
</td>
|
57 |
+
</tr>
|
58 |
+
<tr>
|
59 |
+
<th scope="row">
|
60 |
+
<label for="gdpr_enable_telemetry_tracker"><?php esc_html_e( 'Enable the Telemetry Tracker', 'gdpr' ) ?>:</label>
|
61 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This tracks data that is being sent to outside servers.', 'gdpr' ); ?></span>
|
62 |
+
<span data-tooltip="<?php esc_attr_e( 'This tracks data that is being sent to outside servers.', 'gdpr' ); ?>">
|
63 |
+
<span class="dashicons dashicons-info"></span>
|
64 |
+
</span>
|
65 |
+
</th>
|
66 |
+
<td>
|
67 |
+
<?php $enable_telemetry = get_option( 'gdpr_enable_telemetry_tracker', false ); ?>
|
68 |
+
<input type="checkbox" name="gdpr_enable_telemetry_tracker" id="gdpr_enable_telemetry_tracker" value="1" <?php checked( $enable_telemetry, true ); ?>><label for="gdpr_enable_telemetry_tracker"><span class="description"><?php esc_html_e( 'Toggles the Telemetry Tracker On/Off. (experimental)', 'gdpr' ); ?></span></label>
|
69 |
+
</td>
|
70 |
+
</tr>
|
71 |
+
</tbody>
|
72 |
+
</table>
|
73 |
+
<hr>
|
74 |
+
<h2 class="title"><?php esc_html_e( 'Privacy Center', 'gdpr' ); ?></h2>
|
75 |
+
<p>
|
76 |
+
<?php esc_html_e( 'This section handles the privacy bar and some of the privacy preferences window.', 'gdpr' ) ?><br>
|
77 |
+
<strong><?php esc_html_e( 'Important:', 'gdpr' ); ?></strong> <?php esc_html_e( 'If the privacy banner text is not filled out, the privacy banner will not show up. Even if you registered your cookies.', 'gdpr' ) ?></p>
|
78 |
+
<table class="form-table">
|
79 |
+
<tbody>
|
80 |
+
<tr>
|
81 |
+
<th scope="row">
|
82 |
+
<label for="gdpr_enable_privacy_bar"><?php esc_html_e( 'Enable the Privacy Bar', 'gdpr' ) ?>:</label>
|
83 |
+
</th>
|
84 |
+
<td>
|
85 |
+
<?php $enable_privacy_bar = get_option( 'gdpr_enable_privacy_bar', true ); ?>
|
86 |
+
<input type="checkbox" name="gdpr_enable_privacy_bar" id="gdpr_enable_privacy_bar" value="1" <?php checked( $enable_privacy_bar, true ); ?>><label for="gdpr_enable_privacy_bar"><span class="description"><?php esc_html_e( 'Toggles the Privacy Bar On/Off.', 'gdpr' ); ?></span></label>
|
87 |
+
</td>
|
88 |
+
</tr>
|
89 |
+
<tr>
|
90 |
+
<th scope="row">
|
91 |
+
<label for="gdpr_display_cookie_categories_in_bar"><?php esc_html_e( 'Display the cookie categories in the privacy bar', 'gdpr' ) ?>:</label>
|
92 |
+
</th>
|
93 |
+
<td>
|
94 |
+
<?php $display_cookie_cat_checkboxes = get_option( 'gdpr_display_cookie_categories_in_bar', false ); ?>
|
95 |
+
<input type="checkbox" name="gdpr_display_cookie_categories_in_bar" id="gdpr_display_cookie_categories_in_bar" value="1" <?php checked( $display_cookie_cat_checkboxes, true ); ?>><label for="gdpr_display_cookie_categories_in_bar"></label>
|
96 |
+
</td>
|
97 |
+
</tr>
|
98 |
+
<tr>
|
99 |
+
<th scope="row">
|
100 |
+
<label for="gdpr_cookie_banner_content"><?php esc_html_e( 'Privacy Bar Content', 'gdpr' ) ?>:</label>
|
101 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This is required if you want the privacy bar to show up.', 'gdpr' ); ?></span>
|
102 |
+
<span data-tooltip="<?php esc_attr_e( 'This is required if you want the privacy bar to show up.', 'gdpr' ); ?>">
|
103 |
+
<span class="dashicons dashicons-info"></span>
|
104 |
+
</span>
|
105 |
+
</th>
|
106 |
+
<td>
|
107 |
+
<?php $privacy_bar_content = get_option( 'gdpr_cookie_banner_content', '' ); ?>
|
108 |
+
<textarea name="gdpr_cookie_banner_content" id="gdpr_cookie_banner_content" cols="80" rows="6"><?php echo esc_html( $privacy_bar_content ); ?></textarea>
|
109 |
+
</td>
|
110 |
+
</tr>
|
111 |
+
<tr>
|
112 |
+
<th scope="row">
|
113 |
+
<label for="gdpr_cookie_privacy_excerpt"><?php esc_html_e( 'Privacy Excerpt', 'gdpr' ) ?>:</label>
|
114 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This show up in the privacy preferences window.', 'gdpr' ); ?></span>
|
115 |
+
<span data-tooltip="<?php esc_attr_e( 'This show up in the privacy preferences window.', 'gdpr' ); ?>">
|
116 |
+
<span class="dashicons dashicons-info"></span>
|
117 |
+
</span>
|
118 |
+
</th>
|
119 |
+
<td>
|
120 |
+
<?php $privacy_excerpt = get_option( 'gdpr_cookie_privacy_excerpt', '' ); ?>
|
121 |
+
<textarea name="gdpr_cookie_privacy_excerpt" id="gdpr_cookie_privacy_excerpt" cols="80" rows="6"><?php echo esc_html( $privacy_excerpt ); ?></textarea>
|
122 |
+
<p class="description"><?php esc_html_e( 'This will appear in the consent section of the privacy preference window.', 'gdpr' ); ?></p>
|
123 |
+
</td>
|
124 |
+
</tr>
|
125 |
+
</tbody>
|
126 |
+
</table>
|
127 |
+
<hr>
|
128 |
+
<h2 class="title"><?php esc_html_e( 'Request Forms reCAPTCHA', 'gdpr' ); ?></h2>
|
129 |
+
<p><?php esc_html_e( 'To prevent spam attacks, you have the option to enable reCAPTCHA. Configure below your keys to make it work with our request forms.', 'gdpr' ); ?></p>
|
130 |
+
<p>
|
131 |
+
<?php echo sprintf(
|
132 |
+
/* translators: External link with instructions on how to proceed. */
|
133 |
+
esc_html__( 'You can find the necessary information %s.', 'gdpr' ),
|
134 |
+
'<a href="https://www.google.com/recaptcha/admin" target="_blank">' . esc_html__( 'here', 'gdpr' ) . '</a>'
|
135 |
+
) ?></p>
|
136 |
+
<table class="form-table">
|
137 |
+
<tbody>
|
138 |
+
<tr>
|
139 |
+
<th scope="row">
|
140 |
+
<label for="gdpr_use_recaptcha"><?php esc_html_e( 'Enable reCAPTCHA', 'gdpr' ) ?>:</label>
|
141 |
+
</th>
|
142 |
+
<td>
|
143 |
+
<?php $use_recaptcha = get_option( 'gdpr_use_recaptcha', false ); ?>
|
144 |
+
<input type="checkbox" name="<?php echo esc_attr( 'gdpr_use_recaptcha' ); ?>" id="gdpr_use_recaptcha" value="1" <?php checked( $use_recaptcha, true ); ?>>
|
145 |
+
</td>
|
146 |
+
</tr>
|
147 |
+
<tr>
|
148 |
+
<th scope="row">
|
149 |
+
<label for="gdpr_recaptcha_site_key"><?php esc_html_e( 'Site Key', 'gdpr' ) ?>:</label>
|
150 |
+
</th>
|
151 |
+
<td>
|
152 |
+
<?php $site_key = get_option( 'gdpr_recaptcha_site_key', '' ); ?>
|
153 |
+
<input type="text" name="gdpr_recaptcha_site_key" value="<?php echo esc_attr( $site_key ); ?>" placeholder="">
|
154 |
+
</td>
|
155 |
+
</tr>
|
156 |
+
<tr>
|
157 |
+
<th scope="row">
|
158 |
+
<label for="gdpr_recaptcha_secret_key"><?php esc_html_e( 'Secret Key', 'gdpr' ) ?>:</label>
|
159 |
+
</th>
|
160 |
+
<td>
|
161 |
+
<?php $secret_key = get_option( 'gdpr_recaptcha_secret_key', '' ); ?>
|
162 |
+
<input type="password" name="gdpr_recaptcha_secret_key" value="<?php echo esc_attr( $secret_key ); ?>" placeholder="">
|
163 |
+
</td>
|
164 |
+
</tr>
|
165 |
+
</tbody>
|
166 |
+
</table>
|
167 |
+
<?php if ( class_exists( 'WooCommerce' ) ): ?>
|
168 |
+
<hr>
|
169 |
+
<h2 class="title"><?php esc_html_e( 'WooCommerce', 'gdpr' ); ?></h2>
|
170 |
+
<table class="form-table">
|
171 |
<tbody>
|
172 |
<tr>
|
173 |
<th scope="row">
|
174 |
+
<label for="gdpr_add_consent_checkboxes_registration"><?php esc_html_e( 'Add consent checkboxes to the registration page', 'gdpr' ) ?>:</label>
|
175 |
</th>
|
176 |
<td>
|
177 |
+
<?php $add_checkboxes_to_registration = get_option( 'gdpr_add_consent_checkboxes_registration', false ); ?>
|
178 |
+
<input type="checkbox" name="<?php echo esc_attr( 'gdpr_add_consent_checkboxes_registration' ); ?>" id="gdpr_add_consent_checkboxes_registration" value="1" <?php checked( $add_checkboxes_to_registration, true ); ?>>
|
179 |
</td>
|
180 |
</tr>
|
181 |
<tr>
|
182 |
<th scope="row">
|
183 |
+
<label for="gdpr_add_consent_checkboxes_checkout"><?php esc_html_e( 'Add consent checkboxes to the checkout registration form', 'gdpr' ) ?>:</label>
|
184 |
</th>
|
185 |
<td>
|
186 |
+
<?php $add_checkboxes_to_checkout = get_option( 'gdpr_add_consent_checkboxes_checkout', false ); ?>
|
187 |
+
<input type="checkbox" name="<?php echo esc_attr( 'gdpr_add_consent_checkboxes_checkout' ); ?>" id="gdpr_add_consent_checkboxes_checkout" value="1" <?php checked( $add_checkboxes_to_checkout, true ); ?>>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
</td>
|
189 |
</tr>
|
190 |
</tbody>
|
191 |
</table>
|
192 |
+
<?php endif ?>
|
193 |
+
|
194 |
+
<hr>
|
195 |
+
<h2><?php esc_html_e( 'Cookies', 'gdpr' ) ?></h2>
|
196 |
+
<input type="text" id="cookie-tabs" class="regular-text" placeholder="<?php esc_attr_e( 'Category name', 'gdpr' ); ?>">
|
197 |
+
<button class="button button-primary add-tab"><?php esc_html_e( 'Add tab', 'gdpr' ); ?></button>
|
198 |
+
<div id="gdpr-cookie-categories">
|
199 |
+
<?php foreach ( $registered_cookies as $cat_id => $cookie_cat ): ?>
|
200 |
+
<div class="postbox" id="cookie-tab-content-<?php echo esc_attr( $cat_id ); ?>">
|
201 |
+
<h2 class="hndle"><?php echo esc_html( $cookie_cat['name'] ) ?><button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php esc_html_e( 'Remove this tab.', 'gdpr' ); ?></span></button></h2>
|
202 |
+
<div class="inside">
|
203 |
+
<table class="form-table">
|
204 |
+
<tr>
|
205 |
+
<th>
|
206 |
+
<label for="rename-<?php echo esc_attr( $cat_id ); ?>">
|
207 |
+
<?php esc_html_e( 'Category Name', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
208 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Change this value if you want to name it something different.', 'gdpr' ); ?></span>
|
209 |
+
<span data-tooltip="<?php esc_attr_e( 'Change this value if you want to name it something different.', 'gdpr' ); ?>">
|
210 |
+
<span class="dashicons dashicons-info"></span>
|
211 |
+
</span>
|
212 |
+
</label>
|
213 |
+
</th>
|
214 |
+
<td>
|
215 |
+
<input type="text" name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][name]" value="<?php echo esc_attr( $cookie_cat['name'] ); ?>" required>
|
216 |
+
</td>
|
217 |
+
</tr>
|
218 |
+
<tr>
|
219 |
+
<th>
|
220 |
+
<label for="status-<?php echo esc_attr( $cat_id ); ?>">
|
221 |
+
<?php esc_html_e( 'Status', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
222 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Required cookies are cookies that cannot be opted out of and need to be created for the site to function properly. The ON status means that the cookie preference for this category will be enabled by default. The OFF status means the user needs to manually turn these cookies on to opt into these cookies.', 'gdpr' ); ?></span>
|
223 |
+
<span data-tooltip="<?php esc_attr_e( 'Required cookies are cookies that cannot be opted out of and need to be created for the site to function properly. The ON status means that the cookie preference for this category will be enabled by default. The OFF status means the user needs to manually turn these cookies on to opt into these cookies.', 'gdpr' ); ?>">
|
224 |
+
<span class="dashicons dashicons-info"></span>
|
225 |
+
</span>
|
226 |
+
</label>
|
227 |
+
</th>
|
228 |
+
<td>
|
229 |
+
<select name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][status]" id="status-<?php echo esc_attr( $cat_id ); ?>" required>
|
230 |
+
<option value=""></option>
|
231 |
+
<option value="required" <?php selected( isset( $registered_cookies[ $cat_id ]['status'] ) ? $registered_cookies[ $cat_id ]['status'] : '', 'required' ); ?>><?php esc_html_e( 'Required', 'gdpr' ); ?></option>
|
232 |
+
<option value="on" <?php selected( isset( $registered_cookies[ $cat_id ]['status'] ) ? $registered_cookies[ $cat_id ]['status'] : '', 'on' ); ?>><?php esc_html_e( 'ON', 'gdpr' ); ?></option>
|
233 |
+
<option value="off" <?php selected( isset( $registered_cookies[ $cat_id ]['status'] ) ? $registered_cookies[ $cat_id ]['status'] : '', 'off' ); ?>><?php esc_html_e( 'OFF', 'gdpr' ); ?></option>
|
234 |
+
</select>
|
235 |
+
</td>
|
236 |
+
</tr>
|
237 |
+
<tr>
|
238 |
+
<th>
|
239 |
+
<label for="cookies-used-<?php echo esc_attr( $cat_id ); ?>">
|
240 |
+
<?php esc_html_e( 'Cookies used', 'gdpr' ); ?>:
|
241 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'A comma-separated list of cookies that your site is using that fit this category.', 'gdpr' ); ?></span>
|
242 |
+
<span data-tooltip="<?php esc_attr_e( 'A comma-separated list of cookies that your site is using that fit this category.', 'gdpr' ); ?>">
|
243 |
+
<span class="dashicons dashicons-info"></span>
|
244 |
+
</span>
|
245 |
+
</label>
|
246 |
+
</th>
|
247 |
+
<td>
|
248 |
+
<textarea cols="53" rows="3" name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][cookies_used]" id="cookies-used-<?php echo esc_attr( $cat_id ); ?>"><?php echo esc_attr( $registered_cookies[ $cat_id ]['cookies_used'] ); ?></textarea>
|
249 |
+
<br>
|
250 |
+
<span class="description"><?php esc_html_e( 'Comma separated list.', 'gdpr' ); ?></span>
|
251 |
+
</td>
|
252 |
+
</tr>
|
253 |
+
<tr>
|
254 |
+
<th>
|
255 |
+
<label for="tab-how-we-use-<?php echo esc_attr( $cat_id ); ?>">
|
256 |
+
<?php esc_html_e( 'How are these used', 'gdpr' ); ?>:
|
257 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'A brief explanation of why you are requesting to use these cookies, what they are for, and how you process them.', 'gdpr' ); ?></span>
|
258 |
+
<span data-tooltip="<?php esc_attr_e( 'A brief explanation of why you are requesting to use these cookies, what they are for, and how you process them.', 'gdpr' ); ?>">
|
259 |
+
<span class="dashicons dashicons-info"></span>
|
260 |
+
</span>
|
261 |
+
</label>
|
262 |
+
</th>
|
263 |
+
<td><textarea name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][how_we_use]" id="tab-how-we-use-<?php echo esc_attr( $cat_id ); ?>" cols="53" rows="3"><?php echo esc_html( $registered_cookies[ $cat_id ]['how_we_use'] ); ?></textarea></td>
|
264 |
+
</tr>
|
265 |
+
<tr>
|
266 |
+
<th>
|
267 |
+
<label for="hosts-<?php echo esc_attr( $cat_id ); ?>">
|
268 |
+
<?php esc_html_e( 'Third party domain', 'gdpr' ); ?>:
|
269 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'E.g. facebook.com', 'gdpr' ); ?></span>
|
270 |
+
<span data-tooltip="<?php esc_attr_e( 'E.g. facebook.com', 'gdpr' ); ?>">
|
271 |
+
<span class="dashicons dashicons-info"></span>
|
272 |
+
</span>
|
273 |
+
</label>
|
274 |
+
</th>
|
275 |
+
<td>
|
276 |
+
<input type="text" id="hosts-<?php echo esc_attr( $cat_id ); ?>" class="regular-text" placeholder="domain.com" />
|
277 |
+
<button class="button button-primary add-host" data-tabid="<?php echo esc_attr( $cat_id ); ?>"><?php esc_html_e( 'Add', 'gdpr' ); ?></button>
|
278 |
+
<br>
|
279 |
+
<span class="description"><?php esc_html_e( 'Cookies that are set by a third party, like facebook.com.', 'gdpr' ); ?></span>
|
280 |
+
</td>
|
281 |
+
</tr>
|
282 |
+
</table>
|
283 |
+
<div class="tab-hosts" data-tabid="<?php echo esc_attr( $cat_id ); ?>">
|
284 |
+
<?php if ( isset( $cookie_cat['domains'] ) && $cookie_cat['domains'] ) : ?>
|
285 |
+
<?php foreach ( $cookie_cat['domains'] as $domain_id => $domain ) : ?>
|
286 |
+
<div class="postbox">
|
287 |
+
<h2 class="hndle"><?php echo esc_attr( $domain_id ); ?><button class="notice-dismiss" type="button" aria-label="<?php esc_attr_e( 'Remove this domain.', 'gdpr' ) ?>"></button></h2>
|
288 |
+
<div class="inside">
|
289 |
+
<table class="form-table">
|
290 |
+
<tr>
|
291 |
+
<th>
|
292 |
+
<label for="hosts-cookies-used-<?php echo esc_attr( $domain_id ); ?>">
|
293 |
+
<?php esc_html_e( 'Cookies used', 'gdpr' ); ?>:
|
294 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'A comma separated list of cookies that your site is using from this third-party provider.', 'gdpr' ); ?></span>
|
295 |
+
<span data-tooltip="<?php esc_attr_e( 'A comma separated list of cookies that your site is using from this third-party provider.', 'gdpr' ); ?>">
|
296 |
+
<span class="dashicons dashicons-info"></span>
|
297 |
+
</span>
|
298 |
+
</label>
|
299 |
+
</th>
|
300 |
+
<td>
|
301 |
+
<textarea cols="53" rows="3" name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][domains][<?php echo esc_attr( $domain_id ); ?>][cookies_used]" id="hosts-cookies-used-<?php echo esc_attr( $domain_id ); ?>"><?php echo esc_attr( $domain['cookies_used'] ); ?></textarea>
|
302 |
+
</td>
|
303 |
+
</tr>
|
304 |
+
<tr>
|
305 |
+
<th>
|
306 |
+
<label for="hosts-cookies-optout-<?php echo esc_attr( $domain_id ); ?>">
|
307 |
+
<?php esc_html_e( 'Opt Out Link', 'gdpr' ); ?>:
|
308 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Add a link with the third-party instructions on how to opt out of their cookies.', 'gdpr' ); ?></span>
|
309 |
+
<span data-tooltip="<?php esc_attr_e( 'Add a link with the third-party instructions on how to opt out of their cookies.', 'gdpr' ); ?>">
|
310 |
+
<span class="dashicons dashicons-info"></span>
|
311 |
+
</span>
|
312 |
+
</label>
|
313 |
+
</th>
|
314 |
+
<td>
|
315 |
+
<input type="text" name="gdpr_cookie_popup_content[<?php echo esc_attr( $cat_id ); ?>][domains][<?php echo esc_attr( $domain_id ); ?>][optout]" value="<?php echo esc_attr( $domain['optout'] ); ?>" id="hosts-cookies-optout-<?php echo esc_attr( $domain_id ); ?>" class="regular-text" />
|
316 |
+
<br>
|
317 |
+
<span class="description"><?php esc_html_e( 'Url with instructions on how to opt out.', 'gdpr' ); ?></span>
|
318 |
+
</td>
|
319 |
+
</tr>
|
320 |
+
</table>
|
321 |
+
</div>
|
322 |
+
</div>
|
323 |
+
<?php endforeach; ?>
|
324 |
+
<?php endif; ?>
|
325 |
+
</div>
|
326 |
+
</div><!-- .inside -->
|
327 |
+
</div><!-- .postbox -->
|
328 |
+
<?php endforeach; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
</div>
|
330 |
+
|
331 |
+
<hr>
|
332 |
+
<h2><?php esc_html_e( 'Consents', 'gdpr' ) ?></h2>
|
333 |
+
<input type="text" id="type-of-consent" class="regular-text" placeholder="<?php esc_attr_e( 'E.g. Privacy Policy or Cookie Policy', 'gdpr' ); ?>">
|
334 |
+
<button class="button button-primary add-consent"><?php esc_html_e( 'Add consent', 'gdpr' ); ?></button>
|
335 |
+
<div id="consent-tabs">
|
336 |
+
<?php if ( ! empty( $consent_types ) ) : ?>
|
337 |
+
<?php foreach ( $consent_types as $consent_id => $consent ) : ?>
|
338 |
+
<div class="postbox" id="consent-type-content-<?php echo esc_attr( $consent_id ); ?>">
|
339 |
+
<h2 class="hndle"><?php echo esc_html( $consent['name'] ); ?> <span>(id: <?php echo esc_html( $consent_id ); ?>)</span><button class="notice-dismiss" type="button" aria-label="<?php esc_attr_e( 'Unregister this consent.', 'gdpr' ) ?>"></button></h2>
|
340 |
+
<input type="hidden" name="gdpr_consent_types[<?php echo esc_attr( $consent_id ); ?>][name]" value="<?php echo esc_attr( $consent['name'] ); ?>">
|
341 |
+
<div class="inside">
|
342 |
+
<table class="form-table">
|
343 |
+
<tr>
|
344 |
+
<th>
|
345 |
+
<label for="consent-policy-page-<?php echo esc_attr( $consent_id ); ?>">
|
346 |
+
<?php esc_html_e( 'Policy Page', 'gdpr' ); ?>:
|
347 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This page will be tracked for changes and you will be prompted to ask users to re-consent to the new policy. Selecting a page will make this consent required.', 'gdpr' ); ?></span>
|
348 |
+
<span data-tooltip="<?php esc_attr_e( 'This page will be tracked for changes and you will be prompted to ask users to re-consent to the new policy. Selecting a page will make this consent required.', 'gdpr' ); ?>">
|
349 |
+
<span class="dashicons dashicons-info"></span>
|
350 |
+
</span>
|
351 |
+
</label>
|
352 |
+
</th>
|
353 |
+
<td>
|
354 |
+
<select name="gdpr_consent_types[<?php echo esc_attr( $consent_id ); ?>][policy-page]" id="consent-policy-page-<?php echo esc_attr( $consent_id ); ?>">
|
355 |
+
<option value=""></option>
|
356 |
+
<?php foreach ( $pages as $page ): ?>
|
357 |
+
<option value="<?php echo esc_attr( $page->ID ) ?>" <?php selected( $consent['policy-page'], $page->ID ); ?>><?php echo esc_html( $page->post_title ); ?></option>
|
358 |
+
<?php endforeach ?>
|
359 |
+
</select>
|
360 |
+
</td>
|
361 |
+
</tr>
|
362 |
+
<tr>
|
363 |
+
<th>
|
364 |
+
<label for="consent-description-<?php echo esc_attr( $consent_id ); ?>">
|
365 |
+
<?php esc_html_e( 'Long description', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
366 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This will show up at the privacy preferences center, under the name of the consent.', 'gdpr' ); ?></span>
|
367 |
+
<span data-tooltip="<?php esc_attr_e( 'This will show up at the privacy preferences center, under the name of the consent.', 'gdpr' ); ?>">
|
368 |
+
<span class="dashicons dashicons-info"></span>
|
369 |
+
</span>
|
370 |
+
</label>
|
371 |
+
</th>
|
372 |
+
<td><textarea name="gdpr_consent_types[<?php echo esc_attr( $consent_id ); ?>][description]" id="consent-description-<?php echo esc_attr( $consent_id ); ?>" cols="53" rows="3" required><?php echo esc_html( $consent['description'] ); ?></textarea></td>
|
373 |
+
</tr>
|
374 |
+
<tr>
|
375 |
+
<th>
|
376 |
+
<label for="consent-registration-<?php echo esc_attr( $consent_id ); ?>">
|
377 |
+
<?php esc_html_e( 'Short description', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
378 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This will show up at registration forms next to checkboxes.', 'gdpr' ); ?></span>
|
379 |
+
<span data-tooltip="<?php esc_attr_e( 'This will show up at registration forms next to checkboxes.', 'gdpr' ); ?>">
|
380 |
+
<span class="dashicons dashicons-info"></span>
|
381 |
+
</span>
|
382 |
+
</label>
|
383 |
+
</th>
|
384 |
+
<td><textarea name="gdpr_consent_types[<?php echo esc_attr( $consent_id ); ?>][registration]" id="consent-registration-<?php echo esc_attr( $consent_id ); ?>" cols="53" rows="3" required><?php echo esc_html( $consent['registration'] ); ?></textarea></td>
|
385 |
+
</tr>
|
386 |
+
</table>
|
387 |
+
</div><!-- .inside -->
|
388 |
+
</div><!-- .postbox -->
|
389 |
+
<?php endforeach ?>
|
390 |
+
<?php endif ?>
|
391 |
</div>
|
392 |
<?php
|
393 |
do_action( 'gdpr_extra_settings' );
|
admin/partials/templates/tmpl-consents.php
CHANGED
@@ -2,25 +2,50 @@
|
|
2 |
<div class="postbox" id="consent-type-content-{{data.key}}">
|
3 |
<h2 class="hndle">{{data.name}} <span>(id: {{data.key}})</span><button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php esc_html_e( 'Unregister this consent.', 'gdpr' ); ?></span></button></h2>
|
4 |
<input type="hidden" name="{{data.option_name}}[{{data.key}}][name]" value="{{data.name}}" />
|
5 |
-
<input type="hidden" name="{{data.option_name}}[{{data.key}}][id]" value="{{data.id}}" />
|
6 |
<div class="inside">
|
7 |
<table class="form-table">
|
8 |
<tr>
|
9 |
-
<th
|
10 |
-
|
11 |
-
|
12 |
-
<
|
13 |
-
<span
|
|
|
|
|
14 |
</label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
</td>
|
16 |
</tr>
|
17 |
<tr>
|
18 |
-
<th
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
</tr>
|
21 |
<tr>
|
22 |
-
<th
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
</tr>
|
25 |
</table>
|
26 |
</div><!-- .inside -->
|
2 |
<div class="postbox" id="consent-type-content-{{data.key}}">
|
3 |
<h2 class="hndle">{{data.name}} <span>(id: {{data.key}})</span><button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php esc_html_e( 'Unregister this consent.', 'gdpr' ); ?></span></button></h2>
|
4 |
<input type="hidden" name="{{data.option_name}}[{{data.key}}][name]" value="{{data.name}}" />
|
|
|
5 |
<div class="inside">
|
6 |
<table class="form-table">
|
7 |
<tr>
|
8 |
+
<th>
|
9 |
+
<label for="consent-policy-page-{{data.key}}">
|
10 |
+
<?php esc_html_e( 'Policy Page', 'gdpr' ); ?>:
|
11 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This page will be tracked for changes and you will be prompted to ask users to re-consent to the new policy. Selecting a page will make this consent required.', 'gdpr' ); ?></span>
|
12 |
+
<span data-tooltip="<?php esc_attr_e( 'This page will be tracked for changes and you will be prompted to ask users to re-consent to the new policy. Selecting a page will make this consent required.', 'gdpr' ); ?>">
|
13 |
+
<span class="dashicons dashicons-info"></span>
|
14 |
+
</span>
|
15 |
</label>
|
16 |
+
</th>
|
17 |
+
<td>
|
18 |
+
<select name="gdpr_consent_types[{{data.key}}][policy-page]" id="consent-policy-page-{{data.key}}">
|
19 |
+
<option value=""></option>
|
20 |
+
<?php foreach ( $pages as $page ): ?>
|
21 |
+
<option value="<?php echo esc_attr( $page->ID ) ?>"><?php echo esc_html( $page->post_title ); ?></option>
|
22 |
+
<?php endforeach ?>
|
23 |
+
</select>
|
24 |
</td>
|
25 |
</tr>
|
26 |
<tr>
|
27 |
+
<th>
|
28 |
+
<label for="consent-description-{{data.key}}">
|
29 |
+
<?php esc_html_e( 'Long description', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
30 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This will show up at the privacy preferences center, under the name of the consent.', 'gdpr' ); ?></span>
|
31 |
+
<span data-tooltip="<?php esc_attr_e( 'This will show up at the privacy preferences center, under the name of the consent.', 'gdpr' ); ?>">
|
32 |
+
<span class="dashicons dashicons-info"></span>
|
33 |
+
</span>
|
34 |
+
</label>
|
35 |
+
</th>
|
36 |
+
<td><textarea name="gdpr_consent_types[{{data.key}}][description]" id="consent-description-{{data.key}}" cols="53" rows="3" required></textarea></td>
|
37 |
</tr>
|
38 |
<tr>
|
39 |
+
<th>
|
40 |
+
<label for="consent-registration-{{data.key}}">
|
41 |
+
<?php esc_html_e( 'Short description', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
42 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'This will show up at registration forms next to checkboxes.', 'gdpr' ); ?></span>
|
43 |
+
<span data-tooltip="<?php esc_attr_e( 'This will show up at registration forms next to checkboxes.', 'gdpr' ); ?>">
|
44 |
+
<span class="dashicons dashicons-info"></span>
|
45 |
+
</span>
|
46 |
+
</label>
|
47 |
+
</th>
|
48 |
+
<td><textarea name="gdpr_consent_types[{{data.key}}][registration]" id="consent-registration-{{data.key}}" cols="53" rows="3" required></textarea></td>
|
49 |
</tr>
|
50 |
</table>
|
51 |
</div><!-- .inside -->
|
admin/partials/templates/tmpl-cookies.php
CHANGED
@@ -1,39 +1,86 @@
|
|
1 |
<script type="text/html" id="tmpl-cookie-tabs">
|
2 |
<div class="postbox" id="cookie-tab-content-{{data.key}}">
|
3 |
-
<h2 class="hndle">{{data.name}}
|
4 |
-
<input type="hidden" name="{{data.option_name}}[{{data.key}}][name]" value="{{data.name}}" />
|
5 |
<div class="inside">
|
6 |
<table class="form-table">
|
7 |
<tr>
|
8 |
-
<th
|
9 |
-
|
10 |
-
|
11 |
-
<
|
12 |
-
<span
|
|
|
|
|
13 |
</label>
|
|
|
|
|
|
|
14 |
</td>
|
15 |
</tr>
|
16 |
<tr>
|
17 |
-
<th
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
</tr>
|
20 |
<tr>
|
21 |
-
<th
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
<td>
|
23 |
-
<textarea cols="53" rows="3" name="
|
24 |
<br>
|
25 |
<span class="description"><?php esc_html_e( 'Comma separated list.', 'gdpr' ); ?></span>
|
26 |
</td>
|
27 |
</tr>
|
28 |
<tr>
|
29 |
-
<th
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
36 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
</table>
|
38 |
<div class="tab-hosts" data-tabid="{{data.key}}">
|
39 |
|
@@ -42,17 +89,16 @@
|
|
42 |
</div><!-- .postbox -->
|
43 |
</script>
|
44 |
|
45 |
-
|
46 |
<script type="text/html" id="tmpl-cookie-tabs-hosts">
|
47 |
<div class="postbox">
|
48 |
<h2 class="hndle">{{data.host_key}}<button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php esc_html_e( 'Remove this domain.', 'gdpr' ); ?></span></button></h2>
|
49 |
-
<input type="hidden" name="{{data.option_name}}[{{data.tab_key}}][
|
50 |
<div class="inside">
|
51 |
<table class="form-table">
|
52 |
<tr>
|
53 |
<th><label for="hosts-cookies-used-{{data.host_key}}"><?php esc_html_e( 'Cookies used', 'gdpr' ); ?></label></th>
|
54 |
<td>
|
55 |
-
<textarea cols="53" rows="3" name="{{data.option_name}}[{{data.tab_key}}][
|
56 |
<br>
|
57 |
<span class="description"><?php esc_html_e( 'Comma separated list.', 'gdpr' ); ?></span>
|
58 |
</td>
|
@@ -60,7 +106,7 @@
|
|
60 |
<tr>
|
61 |
<th><label for="hosts-cookies-optout-{{data.host_key}}"><?php esc_html_e( 'How to Opt Out', 'gdpr' ); ?></label></th>
|
62 |
<td>
|
63 |
-
<input type="text" name="{{data.option_name}}[{{data.tab_key}}][
|
64 |
<br>
|
65 |
<span class="description"><?php esc_html_e( 'Url with instructions on how to opt out.', 'gdpr' ); ?></span>
|
66 |
</td>
|
1 |
<script type="text/html" id="tmpl-cookie-tabs">
|
2 |
<div class="postbox" id="cookie-tab-content-{{data.key}}">
|
3 |
+
<h2 class="hndle">{{data.name}}</h2>
|
|
|
4 |
<div class="inside">
|
5 |
<table class="form-table">
|
6 |
<tr>
|
7 |
+
<th>
|
8 |
+
<label for="rename-{{data.key}}">
|
9 |
+
<?php esc_html_e( 'Category Name', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
10 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Change this value if you want to rename this category something different.', 'gdpr' ); ?></span>
|
11 |
+
<span data-tooltip="<?php esc_attr_e( 'Change this value if you want to rename this category something different.', 'gdpr' ); ?>">
|
12 |
+
<span class="dashicons dashicons-info"></span>
|
13 |
+
</span>
|
14 |
</label>
|
15 |
+
</th>
|
16 |
+
<td>
|
17 |
+
<input type="text" name="gdpr_cookie_popup_content[{{data.key}}][name]" value="{{data.name}}" required>
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
21 |
+
<th>
|
22 |
+
<label for="status-{{data.key}}">
|
23 |
+
<?php esc_html_e( 'Status', 'gdpr' ); ?>:<span class="gdpr-required">*</span>
|
24 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'Required cookies are cookies that cannot be opt out. They need to be created for the site to function properly. Status ON means that the cookie will be set after agreement. Status OFF means the user needs to check the checkbox to activate this category.', 'gdpr' ); ?></span>
|
25 |
+
<span data-tooltip="<?php esc_attr_e( 'Required cookies are cookies that cannot be opt out. They need to be created for the site to function properly. Status ON means that the cookie will be set after agreement. Status OFF means the user needs to check the checkbox to activate this category.', 'gdpr' ); ?>">
|
26 |
+
<span class="dashicons dashicons-info"></span>
|
27 |
+
</span>
|
28 |
+
</label>
|
29 |
+
</th>
|
30 |
+
<td>
|
31 |
+
<select name="gdpr_cookie_popup_content[{{data.key}}][status]" id="status-{{data.key}}" required>
|
32 |
+
<option value=""></option>
|
33 |
+
<option value="required"><?php esc_html_e( 'Required', 'gdpr' ); ?></option>
|
34 |
+
<option value="on"><?php esc_html_e( 'ON', 'gdpr' ); ?></option>
|
35 |
+
<option value="off"><?php esc_html_e( 'OFF', 'gdpr' ); ?></option>
|
36 |
+
</select>
|
37 |
+
</td>
|
38 |
</tr>
|
39 |
<tr>
|
40 |
+
<th>
|
41 |
+
<label for="cookies-used-{{data.key}}">
|
42 |
+
<?php esc_html_e( 'Cookies used', 'gdpr' ); ?>:
|
43 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'A comma separated list of cookies that your site is using that fit this category.', 'gdpr' ); ?></span>
|
44 |
+
<span data-tooltip="<?php esc_attr_e( 'A comma separated list of cookies that your site is using that fit this category.', 'gdpr' ); ?>">
|
45 |
+
<span class="dashicons dashicons-info"></span>
|
46 |
+
</span>
|
47 |
+
</label>
|
48 |
+
</th>
|
49 |
<td>
|
50 |
+
<textarea cols="53" rows="3" name="gdpr_cookie_popup_content[{{data.key}}][cookies_used]" id="cookies-used-{{data.key}}"></textarea>
|
51 |
<br>
|
52 |
<span class="description"><?php esc_html_e( 'Comma separated list.', 'gdpr' ); ?></span>
|
53 |
</td>
|
54 |
</tr>
|
55 |
<tr>
|
56 |
+
<th>
|
57 |
+
<label for="tab-how-we-use-{{data.key}}">
|
58 |
+
<?php esc_html_e( 'How are these used', 'gdpr' ); ?>:
|
59 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'A brief explanation on why you are requesting to use these cookies, what they are for and how you process them.', 'gdpr' ); ?></span>
|
60 |
+
<span data-tooltip="<?php esc_attr_e( 'A brief explanation on why you are requesting to use these cookies, what they are for and how you process them.', 'gdpr' ); ?>">
|
61 |
+
<span class="dashicons dashicons-info"></span>
|
62 |
+
</span>
|
63 |
+
</label>
|
64 |
+
</th>
|
65 |
+
<td><textarea name="gdpr_cookie_popup_content[{{data.key}}][how_we_use]" id="tab-how-we-use-{{data.key}}" cols="53" rows="3"></textarea></td>
|
66 |
</tr>
|
67 |
+
<tr>
|
68 |
+
<th>
|
69 |
+
<label for="hosts-{{data.key}}">
|
70 |
+
<?php esc_html_e( 'Third party domain', 'gdpr' ); ?>:
|
71 |
+
<span class="screen-reader-text"><?php esc_attr_e( 'E.g. youtube.com', 'gdpr' ); ?></span>
|
72 |
+
<span data-tooltip="<?php esc_attr_e( 'E.g. youtube.com', 'gdpr' ); ?>">
|
73 |
+
<span class="dashicons dashicons-info"></span>
|
74 |
+
</span>
|
75 |
+
</label>
|
76 |
+
</th>
|
77 |
+
<td>
|
78 |
+
<input type="text" id="hosts-{{data.key}}" class="regular-text" placeholder="<?php esc_attr_e( 'domain.com', 'gdpr' ); ?>" />
|
79 |
+
<button class="button button-primary add-host" data-tabid="{{data.key}}"><?php esc_html_e( 'Add', 'gdpr' ); ?></button>
|
80 |
+
<br>
|
81 |
+
<span class="description"><?php esc_html_e( 'Cookies that are set by a third party, like facebook.com.', 'gdpr' ); ?></span>
|
82 |
+
</td>
|
83 |
+
</tr>
|
84 |
</table>
|
85 |
<div class="tab-hosts" data-tabid="{{data.key}}">
|
86 |
|
89 |
</div><!-- .postbox -->
|
90 |
</script>
|
91 |
|
|
|
92 |
<script type="text/html" id="tmpl-cookie-tabs-hosts">
|
93 |
<div class="postbox">
|
94 |
<h2 class="hndle">{{data.host_key}}<button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php esc_html_e( 'Remove this domain.', 'gdpr' ); ?></span></button></h2>
|
95 |
+
<input type="hidden" name="{{data.option_name}}[{{data.tab_key}}][domains][{{data.host_key}}][name]" value="{{data.host_key}}" />
|
96 |
<div class="inside">
|
97 |
<table class="form-table">
|
98 |
<tr>
|
99 |
<th><label for="hosts-cookies-used-{{data.host_key}}"><?php esc_html_e( 'Cookies used', 'gdpr' ); ?></label></th>
|
100 |
<td>
|
101 |
+
<textarea cols="53" rows="3" name="{{data.option_name}}[{{data.tab_key}}][domains][{{data.host_key}}][cookies_used]" id="hosts-cookies-used-{{data.host_key}}" required></textarea>
|
102 |
<br>
|
103 |
<span class="description"><?php esc_html_e( 'Comma separated list.', 'gdpr' ); ?></span>
|
104 |
</td>
|
106 |
<tr>
|
107 |
<th><label for="hosts-cookies-optout-{{data.host_key}}"><?php esc_html_e( 'How to Opt Out', 'gdpr' ); ?></label></th>
|
108 |
<td>
|
109 |
+
<input type="text" name="{{data.option_name}}[{{data.tab_key}}][domains][{{data.host_key}}][optout]" id="hosts-cookies-optout-{{data.host_key}}" class="regular-text" required />
|
110 |
<br>
|
111 |
<span class="description"><?php esc_html_e( 'Url with instructions on how to opt out.', 'gdpr' ); ?></span>
|
112 |
</td>
|
admin/partials/tools.php
CHANGED
@@ -85,14 +85,14 @@ if ( isset( $_GET['type'], $_GET['key'] ) ) {
|
|
85 |
<th><?php esc_html_e( 'Nature of the personal data breach', 'gdpr' ) ?></th>
|
86 |
<td>
|
87 |
<textarea name="gdpr-data-breach-nature" class="large-text" rows="5" required></textarea>
|
88 |
-
<span class="description"><?php esc_html_e( 'Describe the nature of the personal data breach including where possible, the categories and approximate number of data subjects concerned and the categories and approximate number of personal data records concerned.', 'gdpr' ) ?></span>
|
89 |
</td>
|
90 |
</tr>
|
91 |
<tr>
|
92 |
<th><?php esc_html_e( 'Name and contact details of the data protection officer', 'gdpr' ) ?></th>
|
93 |
<td>
|
94 |
<textarea name="gdpr-name-contact-details-protection-officer" class="large-text" rows="5" required></textarea>
|
95 |
-
<span class="description"><?php esc_html_e( 'Communicate the name and contact details of the data protection officer or
|
96 |
</td>
|
97 |
</tr>
|
98 |
<tr>
|
85 |
<th><?php esc_html_e( 'Nature of the personal data breach', 'gdpr' ) ?></th>
|
86 |
<td>
|
87 |
<textarea name="gdpr-data-breach-nature" class="large-text" rows="5" required></textarea>
|
88 |
+
<span class="description"><?php esc_html_e( 'Describe the nature of the personal data breach including where possible, the categories and the approximate number of data subjects concerned and the categories and the approximate number of personal data records concerned.', 'gdpr' ) ?></span>
|
89 |
</td>
|
90 |
</tr>
|
91 |
<tr>
|
92 |
<th><?php esc_html_e( 'Name and contact details of the data protection officer', 'gdpr' ) ?></th>
|
93 |
<td>
|
94 |
<textarea name="gdpr-name-contact-details-protection-officer" class="large-text" rows="5" required></textarea>
|
95 |
+
<span class="description"><?php esc_html_e( 'Communicate the name and contact details of the data protection officer or another point of contact where more information can be obtained.', 'gdpr' ) ?></span>
|
96 |
</td>
|
97 |
</tr>
|
98 |
<tr>
|
assets/css/gdpr-admin.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.gdpr-settings-form #
|
1 |
+
[data-tooltip]{position:relative;z-index:2;cursor:pointer;display:inline-block;width:21px}[data-tooltip]:before,[data-tooltip]:after{visibility:hidden;opacity:0;pointer-events:none}[data-tooltip]:before{position:absolute;bottom:150%;left:50%;margin-bottom:5px;margin-left:-80px;padding:7px;width:160px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,0.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.2}[data-tooltip]:after{position:absolute;bottom:150%;left:50%;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,0.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}[data-tooltip]:hover:before,[data-tooltip]:hover:after,[data-tooltip]:focus:before,[data-tooltip]:focus:after{visibility:visible;opacity:1}.gdpr-required{color:#f00}.gdpr-settings-form #gdpr-cookie-categories,.gdpr-settings-form #consent-tabs{margin-top:20px}.gdpr-settings-form #gdpr-cookie-categories .hndle,.gdpr-settings-form #consent-tabs .hndle{font-size:16px;padding:8px 12px;margin:0;line-height:1.4}.gdpr-settings-form #gdpr-cookie-categories .hndle span,.gdpr-settings-form #consent-tabs .hndle span{font-size:12px}.policy-page-updated-notice .spinner{margin:13px 0}.policy-page-updated-notice form{display:inline-block}.policy-page-updated-notice form .button-secondary{vertical-align:baseline}.policy-page-updated-notice form .button-primary:active{vertical-align:baseline}.gdpr-pending-requests-badge{display:inline-block;vertical-align:text-bottom;margin:1px 0 0 2px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.gdpr-request-table .spinner,.gdpr-manual-email-lookup .spinner{float:none;display:none}.gdpr-manual-email-lookup .inside{margin-bottom:0}.gdpr-request-table td{vertical-align:middle}.gdpr-request-table form{display:inline-block}.gdpr-request-table .text-center{text-align:center}.gdpr-request-table tr.review>td{padding-top:0;padding-bottom:0}.gdpr-request-table tr.review table{margin-bottom:10px}.gdpr-switch{position:relative;display:inline-block;width:45px;height:24px}.gdpr-switch input{display:none}.gdpr-switch .gdpr-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider:before{position:absolute;content:"";height:16px;width:16px;left:4px;bottom:4px;background-color:white;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider.round{border-radius:34px}.gdpr-switch .gdpr-slider.round:before{border-radius:50%}.gdpr-switch input:checked+.gdpr-slider{background-color:#00b9eb}.gdpr-switch input:checked+.gdpr-slider:before{-webkit-transform:translateX(21px);-ms-transform:translateX(21px);transform:translateX(21px)}.gdpr-switch input:focus+.gdpr-slider{-webkit-box-shadow:0 0 1px #00b9eb;box-shadow:0 0 1px #00b9eb}#TB_ajaxContent pre{white-space:pre-wrap;word-wrap:break-word}.gdpr-hidden{display:none}.post-type-telemetry .page-title-action{display:none}.post-type-telemetry .row-actions{display:none}.post-type-telemetry .search-box{display:none}.post-type-telemetry .actions #filter-by-date,.post-type-telemetry .actions #post-query-submit,.post-type-telemetry .actions.bulkactions{display:none}.gdpr .not-full{display:inline-block}.gdpr .spinner{display:none;visibility:visible}.gdpr .gdpr-access-data-result h2 span{font-size:16px}#gdpr-cookie-categories .postbox .inside{margin:0 !important;padding:0 20px 20px 20px}#gdpr-cookie-categories .postbox .inside .form-table{margin-top:0}#gdpr-cookie-categories .postbox .inside .tab-hosts .postbox .inside{padding-bottom:0;background-color:#f9f9f9}@media screen and (max-width: 1024px){.tab-hosts .postbox{margin-top:15px}.tab-hosts .postbox .inside{padding:10px 20px 20px 20px !important}.form-table td{padding-right:0}.form-table td .button{margin-top:5px;margin-bottom:10px}.type-telemetry *{word-wrap:break-word !important}}@media screen and (max-width: 640px){.postbox{width:100%}.postbox .notice-dismiss{padding:8px}.inside .regular-text{width:100%}.inside .button{margin-top:5px}}
|
assets/css/gdpr-public.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.gdpr-noscroll{overflow:hidden;position:fixed;width:100%}.gdpr-hidden{display:none}.gdpr-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);z-index:99999999;display:none}.gdpr *{font-family:Helvetica, Arial, sans-serif !important;text-transform:none !important;letter-spacing:0 !important;color:#455561;background:none;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:none;border:none;margin:0;padding:0}.gdpr button,.gdpr input[type="submit"]{color:#000;font-weight:normal;font-size:14px;margin:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);line-height:1.5;display:block;min-width:auto;max-width:auto}.gdpr button:before,.gdpr button:after,.gdpr input[type="submit"]:before,.gdpr input[type="submit"]:after{display:inline-block;margin:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);top:auto;right:auto;bottom:auto;left:auto;background:none}.gdpr button:hover,.gdpr button:active,.gdpr button:focus,.gdpr input[type="submit"]:hover,.gdpr input[type="submit"]:active,.gdpr input[type="submit"]:focus{margin:0;border:none;-webkit-box-shadow:none;box-shadow:none}.gdpr img{width:100% !important}.gdpr.gdpr-privacy-bar{position:fixed;bottom:0;left:0;background:rgba(0,0,0,0.9);width:100%;color:#fff;z-index:9999999}.gdpr.gdpr-privacy-bar .gdpr-wrapper{padding:20px 40px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}}.gdpr.gdpr-privacy-bar .gdpr-wrapper:after{content:"";display:table;clear:both}.gdpr.gdpr-privacy-bar .gdpr-wrapper p{margin:0;font-size:14px;font-weight:normal}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:200px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content p{color:#ffffff}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content a{color:#fff;text-decoration:underline}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content{padding-right:0;padding-bottom:20px}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right button:first-of-type{margin-left:10px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right button:first-of-type{margin:0 0 10px 7px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right button:first-of-type:before{left:-7px}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right button:last-of-type{margin-right:0;margin-left:20px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right button:last-of-type{margin:0}}.gdpr.gdpr-privacy-bar .gdpr-preferences{font-weight:normal;font-size:14px;text-decoration:underline;position:relative;margin-left:9px;color:#fff;float:left}.gdpr.gdpr-privacy-bar .gdpr-preferences:before{content:'\276F';font-size:1.1em;font-weight:normal;padding-right:5px;color:#fff;position:absolute;left:-7px;top:10px}.gdpr.gdpr-privacy-bar .gdpr-preferences:hover,.gdpr.gdpr-privacy-bar .gdpr-preferences:active,.gdpr.gdpr-privacy-bar .gdpr-preferences:focus,.gdpr.gdpr-privacy-bar .gdpr-preferences:focus-within,.gdpr.gdpr-privacy-bar .gdpr-preferences:visited{background:none}.gdpr.gdpr-privacy-bar button{margin:0 5px;padding:9px 10px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar button{margin:0}}.gdpr.gdpr-privacy-bar .gdpr-agreement{position:relative;font-size:13px;font-weight:normal;padding:12px 36px 12px 76px;height:auto;line-height:1.4285714;white-space:normal;margin:0;border-width:1px;border-style:solid;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}.gdpr.gdpr-privacy-bar .gdpr-agreement:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-privacy-bar .gdpr-agreement:hover:before{font-size:26px;background:#fafafa;color:#00b9eb}.gdpr.gdpr-privacy-bar .gdpr-agreement:active,.gdpr.gdpr-privacy-bar .gdpr-agreement:focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-privacy-bar .gdpr-agreement:active:before,.gdpr.gdpr-privacy-bar .gdpr-agreement:focus:before{-webkit-box-shadow:inset 0 2px 0 #ccc;box-shadow:inset 0 2px 0 #ccc;vertical-align:top}.gdpr.gdpr-privacy-bar .gdpr-agreement:before{content:'\2713';top:-1px;bottom:-1px;left:-1px;position:absolute;width:42.5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;-webkit-transform:translateZ(0);transform:translateZ(0);text-shadow:none;text-decoration:none;font-size:13px;line-height:26px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-top-left-radius:3px;border-bottom-left-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;vertical-align:top;border-right:none}.gdpr.gdpr-privacy-preferences .gdpr-wrapper,.gdpr.gdpr-general-confirmation .gdpr-wrapper{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:999999999;width:100%;max-width:768px;height:100%;max-height:500px;overflow:hidden;display:none;border-radius:2.5px;padding:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form,.gdpr.gdpr-general-confirmation .gdpr-wrapper form{height:100%;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header{display:-webkit-box;display:-ms-flexbox;display:flex;height:75px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo{max-width:30%}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo a,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo a{padding:0;margin:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo a img,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo a img{display:block}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title{background:#23282d;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title h3,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title h3{margin:0 !important;padding:0 !important;text-align:center !important;color:#fff !important;font-weight:600 !important;font-size:22px !important}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title h3,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title h3{font-size:18px !important}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close{color:#fff;position:absolute;top:0;right:0;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;padding:15px 15px;line-height:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:hover:before,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:before,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:before{content:'\00D7';line-height:12.5px;font-size:25px;display:inline-block;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer{position:absolute;padding:0 20px 20px 20px;bottom:0;left:160px;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer{left:0;bottom:5px}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"],.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]{font-size:13px;font-weight:normal;line-height:26px;height:28px;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"]:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"]:active,.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"].focus,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"].focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span{font-size:13px;line-height:20px;color:#555d66;font-style:italic}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span a,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span a{color:#0073aa;-webkit-transition-property:border,background,color;-o-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;-o-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;text-decoration:underline}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span a:hover{color:#00a0d2}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu{display:none}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu{display:block}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button{width:100%;background-color:#191e23;color:#fff;font-size:14px;text-align:left;padding:15px;border-radius:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:hover{color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:hover:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:hover:after{border-top-color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:after{content:'';width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:7.5px solid #fff;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;right:15px;top:12px;position:absolute}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button.gdpr-active:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc( 100% - 75px);background:#f1f1f1}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{position:relative;height:calc( 100% - 119px)}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs{border:none !important;min-width:160px;max-width:160px;padding:0;margin:0;overflow-y:auto;background-color:#23282d;position:relative}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs{position:absolute;height:100%;width:100%;max-width:100%;display:none;z-index:1}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li{list-style:none}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a{display:block;width:100%;background:#23282d;color:#fff;font-size:14px;text-align:left;padding:8px;border-radius:0;position:relative}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a{padding:15px;line-height:1}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button:hover,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a:hover{background-color:#191e23;color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active{background-color:#0073aa}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:hover,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:hover{color:#fff}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after{right:0;border:8px solid transparent;content:'';height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f1f1f1;top:50%;margin-top:-8px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after{display:none}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs{position:relative;padding:8px 0;top:auto;left:auto;right:auto;bottom:auto;border:0;margin:0 0 0 0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button{background-color:transparent;font-size:13px;line-height:18px;padding:5px 8px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active{font-weight:600}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active:after{border:none;content:''}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content{width:100%;margin-bottom:68px;overflow-y:auto}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div{display:none;padding:20px 20px 0 20px;overflow-y:auto;font-size:13px;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header label,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header label{margin:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4{font-weight:600 !important;padding-right:10px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info{height:100%;overflow-y:auto;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-top:20px;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info>p,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info>p{margin-bottom:16px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info strong,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info strong{border-bottom:1px solid rgba(0,0,0,0.4);display:block}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used{font-family:Helvetica, Arial, sans-serif;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04);margin-bottom:10px;background-color:#fff;font-size:13px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used:first-of-type,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used:first-of-type{padding-top:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title{padding:10px;border-bottom:1px solid #e1e1e1;color:#32373c;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title p,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title p{margin:0;font-weight:600 !important}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title .gdpr-always-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title .gdpr-always-active{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 10px;min-height:24px;text-align:center;border-radius:50px;line-height:16px;background-color:#00b9eb;color:#fff;font-style:normal}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a{color:#0073aa}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a:hover{color:#00a0d2}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies{color:#555;background-color:#f9f9f9;padding:10px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies span,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies span{font-style:italic}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content .gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content .gdpr-active{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gdpr.gdpr-general-confirmation .gdpr-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:400px;min-height:250px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header{display:-webkit-box;display:-ms-flexbox;display:flex;height:75px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo{max-width:30%}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo a{padding:0;margin:0}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo a img{display:block}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title{background:#23282d;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title h3{margin:0 !important;padding:0 !important;text-align:center !important;color:#fff !important;font-weight:600 !important;font-size:22px !important}@media screen and (max-width: 640px){.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title h3{font-size:18px !important}}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close{color:#fff;position:absolute;top:0;right:0;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;padding:15px 15px;line-height:0}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close:before{content:'\00D7';line-height:12.5px;font-size:25px;display:inline-block;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer{background:#f1f1f1;padding:20px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button{font-size:13px;font-weight:normal;line-height:26px;height:28px;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;display:inline}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;text-shadow:none}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:focus{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);color:#23282d}.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{padding:20px 20px 0 20px;height:auto}.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content p{margin:0}.gdpr-switch{position:relative;display:inline-block;min-width:45px;height:24px;margin-bottom:0}.gdpr-switch input{display:none}.gdpr-switch .gdpr-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider:before{position:absolute;content:"";height:16px;width:16px;left:4px;bottom:4px;background-color:white;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider.round{border-radius:34px}.gdpr-switch .gdpr-slider.round:before{border-radius:50%}.gdpr-switch input:checked+.gdpr-slider{background-color:#00b9eb}.gdpr-switch input:checked+.gdpr-slider:before{-webkit-transform:translateX(21px);-ms-transform:translateX(21px);transform:translateX(21px)}.gdpr-switch input:focus+.gdpr-slider{-webkit-box-shadow:0 0 1px #00b9eb;box-shadow:0 0 1px #00b9eb}.gdpr-reconsent-modal{width:100%;height:100%;position:fixed;top:0;left:0;background:#fff;z-index:9999999}.gdpr-reconsent-modal .gdpr-reconsent-modal-content{width:90%;margin:0 auto;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}@media screen and (min-width: 640px){.gdpr-reconsent-modal .gdpr-reconsent-modal-content{width:50%}}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-privacy-viewer{height:50vh;width:100%;border:1px solid #cecece;padding:20px;overflow:auto}.gdpr-reconsent-modal .gdpr-reconsent-modal-content textarea{resize:none}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-buttons{text-align:center;margin:15px 0}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-buttons a{padding:10px 20px;display:inline-block;margin:0 10px;color:#fff;border-radius:5px}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-buttons a.gdpr-agree{background:#28a745}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-buttons a.gdpr-disagree{color:#455561;padding:0}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-loading{display:none;text-align:center;margin:15px 0}.gdpr-reconsent-modal .gdpr-reconsent-modal-content .gdpr-consent-loading .gdpr-loading{padding:10px 20px;display:inline-block;margin:0 10px}
|
1 |
+
.gdpr-noscroll{overflow:hidden;position:fixed;width:100%}.gdpr-hidden{display:none}.gdpr-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);z-index:99999999;display:none}.gdpr *{font-family:Helvetica, Arial, sans-serif !important;text-transform:none !important;letter-spacing:0 !important;color:#455561;background:none;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:none;border:none;margin:0;padding:0}.gdpr .h5{font-size:18px;font-weight:bold;color:#fff}.gdpr button,.gdpr input[type="submit"]{color:#000;font-weight:normal;font-size:14px;margin:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);line-height:1.5;display:block;min-width:auto;max-width:auto;cursor:pointer}.gdpr button:before,.gdpr button:after,.gdpr input[type="submit"]:before,.gdpr input[type="submit"]:after{display:inline-block;margin:0;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);top:auto;right:auto;bottom:auto;left:auto;background:none}.gdpr button:hover,.gdpr button:active,.gdpr button:focus,.gdpr input[type="submit"]:hover,.gdpr input[type="submit"]:active,.gdpr input[type="submit"]:focus{margin:0;border:none;-webkit-box-shadow:none;box-shadow:none}.gdpr img{width:100% !important}.gdpr .gdpr-contained-wrapper{max-width:600px;margin:0 auto;padding:20px 40px;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (max-width: 1024px){.gdpr .gdpr-contained-wrapper{padding:20px}}.gdpr.gdpr-privacy-bar,.gdpr.gdpr-reconsent-bar{position:fixed;bottom:0;left:0;background:rgba(0,0,0,0.9);width:100%;color:#fff;z-index:9999999}.gdpr.gdpr-privacy-bar .gdpr-wrapper,.gdpr.gdpr-reconsent-bar .gdpr-wrapper{padding:20px 40px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;align-items:center}@media screen and (min-width: 1440px){.gdpr.gdpr-privacy-bar .gdpr-wrapper,.gdpr.gdpr-reconsent-bar .gdpr-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.gdpr.gdpr-privacy-bar .gdpr-wrapper:after,.gdpr.gdpr-reconsent-bar .gdpr-wrapper:after{content:"";display:table;clear:both}.gdpr.gdpr-privacy-bar .gdpr-wrapper p,.gdpr.gdpr-reconsent-bar .gdpr-wrapper p{margin:0;font-size:14px;font-weight:normal}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 0 20px 0;text-align:center}@media screen and (min-width: 1440px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content{padding:0 100px 0 0;text-align:left}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content p,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content p{color:#ffffff;font-size:14px}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content{padding-right:0;padding-bottom:20px}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content .gdpr-policy-pages .gdpr-policy-pages-item:after,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content .gdpr-policy-pages .gdpr-policy-pages-item:after{content:',';margin-right:5px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-content .gdpr-policy-pages .gdpr-policy-pages-item:last-of-type:after,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-content .gdpr-policy-pages .gdpr-policy-pages-item:last-of-type:after{content:'';margin-right:0}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list{list-style:none;padding:0 20px 0 0;margin:0 20px 0 0;border-right:1px solid #808080}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list{padding:0 0 10px 0;margin:0 0 20px 0;border-right:none;border-bottom:1px solid #808080;text-align:center}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item{display:inline-block;margin:0 10px;padding-top:10px}@media screen and (max-width: 1024px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item{padding-top:0}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item *,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item *,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item *,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item *,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item *,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item *,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item *,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item *{float:left}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item input,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item input,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item input,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item input,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item input,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item input,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item input,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item input{margin-top:3px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item label,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item label,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item label,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item label,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item label,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item label,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item label,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item label{color:#fff;margin:0 5px;font-size:14px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item .gdpr-policy-link,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item .gdpr-policy-link,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item .gdpr-policy-link,.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item .gdpr-policy-link,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-cookie-categories-item .gdpr-policy-link,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories .gdpr-policy-list-item .gdpr-policy-link,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-cookie-categories-item .gdpr-policy-link,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-policy-list .gdpr-policy-list-item .gdpr-policy-link{color:#fff;font-size:14px;text-decoration:underline}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-cookie-categories{margin-bottom:5px}}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button{white-space:nowrap}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences{margin-left:10px;margin-right:20px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences{margin:0 0 10px 15px}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences:before,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-preferences:before{left:-7px}}.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-agreement,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-agreement{margin:0 10px;-ms-flex-item-align:center;align-self:center}@media screen and (min-width: 1440px){.gdpr.gdpr-privacy-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-agreement,.gdpr.gdpr-reconsent-bar .gdpr-wrapper .gdpr-right .gdpr-buttons button.gdpr-agreement{margin:0 0 0 10px}}.gdpr.gdpr-privacy-bar .gdpr-preferences,.gdpr.gdpr-reconsent-bar .gdpr-preferences{font-weight:normal;font-size:14px;text-decoration:underline;position:relative;margin-left:9px;color:#fff;float:left}.gdpr.gdpr-privacy-bar .gdpr-preferences:before,.gdpr.gdpr-reconsent-bar .gdpr-preferences:before{content:'\276F';font-size:1.1em;font-weight:normal;padding-right:5px;color:#fff;position:absolute;left:-7px;top:10px}.gdpr.gdpr-privacy-bar .gdpr-preferences:hover,.gdpr.gdpr-privacy-bar .gdpr-preferences:active,.gdpr.gdpr-privacy-bar .gdpr-preferences:focus,.gdpr.gdpr-privacy-bar .gdpr-preferences:focus-within,.gdpr.gdpr-privacy-bar .gdpr-preferences:visited,.gdpr.gdpr-reconsent-bar .gdpr-preferences:hover,.gdpr.gdpr-reconsent-bar .gdpr-preferences:active,.gdpr.gdpr-reconsent-bar .gdpr-preferences:focus,.gdpr.gdpr-reconsent-bar .gdpr-preferences:focus-within,.gdpr.gdpr-reconsent-bar .gdpr-preferences:visited{background:none}.gdpr.gdpr-privacy-bar button,.gdpr.gdpr-reconsent-bar button{margin:0 5px;padding:9px 10px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar button,.gdpr.gdpr-reconsent-bar button{margin:0}}.gdpr.gdpr-privacy-bar .gdpr-agreement,.gdpr.gdpr-reconsent-bar .gdpr-agreement{position:relative;font-size:13px;font-weight:normal;padding:12px 36px 12px 76px;height:auto;line-height:1.4285714;white-space:normal;margin:0;border-width:1px;border-style:solid;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-bar .gdpr-agreement,.gdpr.gdpr-reconsent-bar .gdpr-agreement{padding:7px 16px 7px 56px}}.gdpr.gdpr-privacy-bar .gdpr-agreement:hover,.gdpr.gdpr-reconsent-bar .gdpr-agreement:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-privacy-bar .gdpr-agreement:hover:before,.gdpr.gdpr-reconsent-bar .gdpr-agreement:hover:before{font-size:26px;background:#fafafa;color:#00b9eb}.gdpr.gdpr-privacy-bar .gdpr-agreement:active,.gdpr.gdpr-privacy-bar .gdpr-agreement:focus,.gdpr.gdpr-reconsent-bar .gdpr-agreement:active,.gdpr.gdpr-reconsent-bar .gdpr-agreement:focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-privacy-bar .gdpr-agreement:active:before,.gdpr.gdpr-privacy-bar .gdpr-agreement:focus:before,.gdpr.gdpr-reconsent-bar .gdpr-agreement:active:before,.gdpr.gdpr-reconsent-bar .gdpr-agreement:focus:before{-webkit-box-shadow:inset 0 2px 0 #ccc;box-shadow:inset 0 2px 0 #ccc;vertical-align:top}.gdpr.gdpr-privacy-bar .gdpr-agreement:before,.gdpr.gdpr-reconsent-bar .gdpr-agreement:before{content:'\2713';top:-1px;bottom:-1px;left:-1px;position:absolute;width:42.5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;-webkit-transform:translateZ(0);transform:translateZ(0);text-shadow:none;text-decoration:none;font-size:13px;line-height:26px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-top-left-radius:3px;border-bottom-left-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;vertical-align:top;border-right:none}.gdpr.gdpr-privacy-preferences .gdpr-wrapper,.gdpr.gdpr-general-confirmation .gdpr-wrapper{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:999999999;width:100%;max-width:768px;height:100%;max-height:500px;overflow:hidden;display:none;border-radius:2.5px;padding:15px;-webkit-box-sizing:border-box;box-sizing:border-box}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form,.gdpr.gdpr-general-confirmation .gdpr-wrapper form{height:100%;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header{display:-webkit-box;display:-ms-flexbox;display:flex;height:75px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo{max-width:30%}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo a,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo a{padding:0;margin:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .logo a img,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .logo a img{display:block}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title{background:#23282d;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title h3,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title h3{margin:0 !important;padding:0 !important;text-align:center !important;color:#fff !important;font-weight:600 !important;font-size:22px !important}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title h3,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title h3{font-size:18px !important}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close{color:#fff;position:absolute;top:0;right:0;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;padding:15px 15px;line-height:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:hover:before,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:before,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>header .gdpr-box-title .gdpr-close:before{content:'\00D7';line-height:12.5px;font-size:25px;display:inline-block;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer{position:absolute;padding:0 20px 20px 20px;bottom:0;left:160px;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer{left:0;bottom:5px}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"],.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]{font-size:13px;font-weight:normal;line-height:26px;height:28px;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"]:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"]:active,.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer input[type="submit"].focus,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"]:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer input[type="submit"].focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span{font-size:13px;line-height:20px;color:#555d66;font-style:italic}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span a,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span a{color:#0073aa;-webkit-transition-property:border,background,color;-o-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;-o-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;text-decoration:underline}.gdpr.gdpr-privacy-preferences .gdpr-wrapper form>footer span a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper form>footer span a:hover{color:#00a0d2}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu{display:none}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu{display:block}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button{width:100%;background-color:#191e23;color:#fff;font-size:14px;text-align:left;padding:15px;border-radius:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:hover{color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:hover:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:hover:after{border-top-color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button:after{content:'';width:0;height:0;border-left:7.5px solid transparent;border-right:7.5px solid transparent;border-top:7.5px solid #fff;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s;right:15px;top:12px;position:absolute}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-mobile-menu button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-mobile-menu button.gdpr-active:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc( 100% - 75px);background:#f1f1f1}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{position:relative;height:calc( 100% - 119px)}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-policies li a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-policies li a{font-style:italic;font-size:12px !important;color:#ababab !important}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs{border:none !important;min-width:160px;max-width:160px;padding:0;margin:0;overflow-y:auto;background-color:#23282d;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs{position:absolute;height:100%;width:100%;max-width:100%;display:none;z-index:1}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li{list-style:none}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a{display:block;width:100%;background:#23282d;color:#fff;font-size:14px;text-align:left;text-decoration:none;padding:8px;border-radius:0;position:relative}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a{padding:15px;line-height:1}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button:hover,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a:hover{background-color:#191e23;color:#00b9eb}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active{background-color:#0073aa}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:hover,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:hover{color:#fff}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after{right:0;border:8px solid transparent;content:'';height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f1f1f1;top:50%;margin-top:-8px}@media screen and (max-width: 640px){.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li a.gdpr-active:after{display:none}}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs{position:relative;padding:8px 0;top:auto;left:auto;right:auto;bottom:auto;border:0;margin:0 0 0 0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button{background-color:transparent;font-size:13px;line-height:18px;padding:5px 8px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active{font-weight:600}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active:after,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tabs li .gdpr-subtabs li button.gdpr-active:after{border:none;content:''}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content{width:100%;margin-bottom:68px;overflow-y:auto}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div{display:none;padding:20px 20px 0 20px;overflow-y:auto;font-size:13px;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header label,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header label{margin:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div header h4{font-weight:600 !important;padding-right:10px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info{height:100%;overflow-y:auto;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-top:20px;position:relative}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info>p,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info>p{margin-bottom:16px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info strong,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info strong{border-bottom:1px solid rgba(0,0,0,0.4);display:block}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used{font-family:Helvetica, Arial, sans-serif;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.04);box-shadow:0 1px 1px rgba(0,0,0,0.04);margin-bottom:10px;background-color:#fff;font-size:13px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used:first-of-type,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used:first-of-type{padding-top:0}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title{padding:10px;border-bottom:1px solid #e1e1e1;color:#32373c;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title p,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title p{margin:0;font-weight:600 !important}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title .gdpr-always-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title .gdpr-always-active{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 10px;min-height:24px;text-align:center;border-radius:50px;line-height:16px;background-color:#00b9eb;color:#fff;font-style:normal}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a{color:#0073aa}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a:hover,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookie-title a:hover{color:#00a0d2}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies{color:#555;background-color:#f9f9f9;padding:10px}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies span,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content>div .gdpr-info .gdpr-cookies-used .gdpr-cookies span{font-style:italic}.gdpr.gdpr-privacy-preferences .gdpr-wrapper .gdpr-content .gdpr-tab-content .gdpr-active,.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content .gdpr-tab-content .gdpr-active{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gdpr.gdpr-general-confirmation .gdpr-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:400px;min-height:250px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header{display:-webkit-box;display:-ms-flexbox;display:flex;height:75px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo{max-width:30%}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo a{padding:0;margin:0}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .logo a img{display:block}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title{background:#23282d;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title h3{margin:0 !important;padding:0 !important;text-align:center !important;color:#fff !important;font-weight:600 !important;font-size:22px !important}@media screen and (max-width: 640px){.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title h3{font-size:18px !important}}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close{color:#fff;position:absolute;top:0;right:0;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;padding:15px 15px;line-height:0}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.gdpr.gdpr-general-confirmation .gdpr-wrapper>header .gdpr-box-title .gdpr-close:before{content:'\00D7';line-height:12.5px;font-size:25px;display:inline-block;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer{background:#f1f1f1;padding:20px}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button{font-size:13px;font-weight:normal;line-height:26px;height:28px;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;display:inline}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button:hover{background:#008ec2;border-color:#006799}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.focus{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;text-shadow:none}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:active,.gdpr.gdpr-general-confirmation .gdpr-wrapper>footer button.gdpr-cancel:focus{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);color:#23282d}.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content{padding:20px 20px 0 20px;height:auto}.gdpr.gdpr-general-confirmation .gdpr-wrapper .gdpr-content p{margin:0}.gdpr-switch{position:relative;display:inline-block;min-width:45px;height:24px;margin-bottom:0}.gdpr-switch input{position:absolute;left:-999em}.gdpr-switch .gdpr-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider:before{position:absolute;content:"";height:16px;width:16px;left:4px;bottom:4px;background-color:white;-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.gdpr-switch .gdpr-slider.round{border-radius:34px}.gdpr-switch .gdpr-slider.round:before{border-radius:50%}.gdpr-switch input:checked+.gdpr-slider{background-color:#00b9eb}.gdpr-switch input:checked+.gdpr-slider:before{-webkit-transform:translateX(21px);-ms-transform:translateX(21px);transform:translateX(21px)}.gdpr-switch input:focus+.gdpr-slider{-webkit-box-shadow:0 0 1px #00b9eb;box-shadow:0 0 1px #00b9eb}
|
assets/js/gdpr-admin.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t){"use strict";t(function(){function a(t){t=(t=t.replace(/^\s+|\s+$/g,"")).toLowerCase();for(var a="àáäâèéëêìíïîòóöôùúüûñç·/_,:;",e=0,n=a.length;e<n;e++)t=t.replace(new RegExp(a.charAt(e),"g"),"aaaaeeeeiiiioooouuuunc------".charAt(e));return t=t.replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}t(document).on("click",".gdpr-settings-form .notice-dismiss",function(){t(this).parent().parent().remove()}),t(".add-
|
1 |
+
!function(t){"use strict";t(function(){function a(t){t=(t=t.replace(/^\s+|\s+$/g,"")).toLowerCase();for(var a="àáäâèéëêìíïîòóöôùúüûñç·/_,:;",e=0,n=a.length;e<n;e++)t=t.replace(new RegExp(a.charAt(e),"g"),"aaaaeeeeiiiioooouuuunc------".charAt(e));return t=t.replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")}t(document).on("click",".gdpr-settings-form .notice-dismiss",function(){t(this).parent().parent().remove()}),t(".add-consent").click(function(e){e.preventDefault();var n=t("#type-of-consent");if(""!==n.val()){var i=a(n.val()),s=n.val(),d=wp.template("consents");t("#consent-tabs").append(d({key:i,name:s,option_name:"gdpr_consent_types"})),n.val("")}}),t("#consent-tabs, #tabs").sortable(),t(".add-tab").click(function(e){e.preventDefault();var n=t("#cookie-tabs");if(""!==n.val()){var i=a(n.val()),s=n.val(),d=wp.template("cookie-tabs");t("#gdpr-cookie-categories").append(d({key:i,name:s})),n.val("")}}),t(document).on("click",".add-host",function(a){a.preventDefault();var e=t(this).siblings("input");if(""!==e.val()){var n=t(this).data("tabid"),i=e.val().toLowerCase().replace(" ","-"),s=wp.template("cookie-tabs-hosts");t('.tab-hosts[data-tabid="'+n+'"]').append(s({host_key:i,tab_key:n,option_name:"gdpr_cookie_popup_content"})),e.val("")}}),t(document).on("click","#tabs .notice-dismiss",function(a){a.preventDefault(),t(this).closest(".postbox").remove()}),t(document).on("click",".gdpr-request-table .gdpr-review",function(a){a.preventDefault();var e=t(this).data("index");t("tr[data-index="+e+"] div").slideToggle()}),t(document).on("click",".gdpr .nav-tab-wrapper a",function(a){var e=t(this).attr("href");if(e=e.replace("#",""),t(this).addClass("nav-tab-active"),t(this).siblings().removeClass("nav-tab-active"),t(".gdpr .gdpr-tab").addClass("hidden"),t(".gdpr .gdpr-tab[data-id="+e+"]").removeClass("hidden"),-1!==location.search.indexOf("page=gdpr-settings")){var n=t('.gdpr form input[name="_wp_http_referer"]'),i=n.val().split("#")[0];n.val(i+"#"+e)}});var e=window.location.hash;if(e){if(t('.gdpr .nav-tab-wrapper a[href="'+e+'"]').addClass("nav-tab-active"),t('.gdpr .gdpr-tab[data-id="'+e.replace("#","")+'"]').removeClass("hidden"),-1!==location.search.indexOf("page=gdpr-settings")){var n=t('.gdpr form input[name="_wp_http_referer"]'),i=n.val().split("#")[0];n.val(i+e)}}else t(".gdpr .nav-tab-wrapper a:eq(0)").addClass("nav-tab-active"),t(".gdpr .gdpr-tab:eq(0)").removeClass("hidden");t(document).on("change",".gdpr-reassign",function(){0!=t(this).val()?(t(this).closest("tr").find("td:last .button-primary").attr("disabled",!1),t(this).closest("tr").find('td:last input[name="reassign_to"]').val(t(this).val())):(t(this).closest("tr").find("td:last .button-primary").attr("disabled",!0),t(this).closest("tr").find('td:last input[name="reassign_to"]').val(""))}),t(document).on("submit",".gdpr-reassign-content",function(a){a.preventDefault();var e=t(this).find('input[name="user_email"]').val(),n=t(this).find('input[name="reassign_to"]').val(),i=t(this).find('input[name="post_type"]').val(),s=t(this).find('input[name="post_count"]').val(),d=t(this).find('input[name="gdpr_reassign_content_nonce"]').val(),o=t(this).find(".button-primary"),r=t(this).find(".spinner"),p=t(this).find("p.hidden");n&&(o.addClass("hidden"),r.addClass("is-active"),r.css("display","block"),t.post(ajaxurl,{action:"gdpr_reassign_content",user_email:e,reassign_to:n,post_type:i,post_count:s,nonce:d},function(t){r.removeClass("is-active"),r.hide(),p.removeClass("hidden"),t.success||p.text(t.data)}))}),t(document).on("submit",".gdpr-anonymize-comments",function(a){a.preventDefault();var e=t(this).find('input[name="user_email"]').val(),n=t(this).find('input[name="comment_count"]').val(),i=t(this).find('input[name="gdpr_anonymize_comments_nonce"]').val(),s=t(this).find(".button-primary"),d=t(this).find(".spinner"),o=t(this).find("p.hidden");s.addClass("hidden"),d.addClass("is-active"),d.css("display","block"),t.post(ajaxurl,{action:"gdpr_anonymize_comments",user_email:e,comment_count:n,nonce:i},function(t){d.removeClass("is-active"),d.hide(),o.removeClass("hidden"),t.success||o.text(t.data)})}),t(document).on("submit",".gdpr-access-data-lookup",function(a){a.preventDefault();var e=t(this).find('input[name="user_email"]'),n=e.val(),i=t(this).find('input[name="gdpr_access_data_nonce"]').val(),s=t(this).find(".button-primary"),d=t(this).find(".spinner"),o=t(".gdpr-access-data-result");s.addClass("hidden"),d.show(),o.remove(),e.val(""),t.post(ajaxurl,{action:"gdpr_access_data",nonce:i,email:n},function(a){if(s.removeClass("hidden"),d.hide(),a.success){var e=wp.template("access-data-result-success");t('.gdpr div[data-id="access"]').append(e({result:a.data.result,user_email:a.data.user_email}))}else{e=wp.template("access-data-result-error");t('.gdpr div[data-id="access"]').append(e())}})}),t(document).on("submit",".gdpr-audit-log-lookup",function(a){a.preventDefault();var e=t(this).find('input[name="user_email"]'),n=e.val(),i=t(this).find('input[name="token"]'),s=i.val(),d=t(this).find('input[name="gdpr_audit_log_nonce"]').val(),o=t(this).find(".button-primary"),r=t(this).find(".spinner"),p=t(".gdpr-audit-log-result");o.addClass("hidden"),r.show(),p.remove(),e.val(""),i.val(""),t.post(ajaxurl,{action:"gdpr_audit_log",nonce:d,email:n,token:s},function(a){if(o.removeClass("hidden"),r.hide(),a.success){var e=wp.template("audit-log-result-success");t('.gdpr div[data-id="audit-log"]').append(e({result:a.data}))}else{e=wp.template("audit-log-result-error");t('.gdpr div[data-id="audit-log"]').append(e())}})}),t(document).on("click",'.frm-export-data input[type="submit"]',function(a){a.preventDefault();var e=t(this).parents("form"),n=t(this).val(),i=e.find("#gdpr_export_data_nonce").val(),s=e.find('input[name="user_email"]').val(),d=n.toLowerCase();t.post(ajaxurl,{action:"gdpr_generate_data_export",nonce:i,type:n,email:s},function(a){a.success&&t("<a />",{href:"data:text/plain;charset=utf-8,"+encodeURIComponent(a.data),download:s+"."+d,text:"click"}).hide().appendTo("body")[0].click()})}),t(document).on("submit",".frm-policy-updated",function(a){a.preventDefault();var e=t(this).find('input[name="action"]').val(),n=t(this).find('input[name="policy_id"]').val(),i=t(this).find('input[name="policy_name"]').val(),s=t(this).find('[id$="nonce"]').val(),d=t(this).parent().find(".spinner"),o=t(this);d.addClass("is-active"),t.post(ajaxurl,{action:e,nonce:s,policy_id:n,policy_name:i},function(t){d.removeClass("is-active"),o.parent().fadeOut()})})})}(jQuery);
|
assets/js/gdpr-public.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){"use strict";var r=location.search,
|
1 |
+
!function(e){"use strict";var r=location.search,t=location.protocol+"//"+location.host+location.pathname;function n(r,t,n){n=void 0!==n,e(".gdpr-general-confirmation .gdpr-box-title h3").html(r),e(".gdpr-general-confirmation .gdpr-content p").html(t),n?(e(".gdpr-general-confirmation").addClass("gdpr-delete-confirmation"),e(".gdpr-general-confirmation footer").html('<button class="gdpr-delete-account">'+GDPR.i18n.continue+'</button> <button class="gdpr-cancel">'+GDPR.i18n.cancel+"</button>")):e(".gdpr-general-confirmation footer").html('<button class="gdpr-ok">'+GDPR.i18n.ok+"</button>"),e(".gdpr-overlay").fadeIn(),e("body").addClass("gdpr-noscroll"),e(".gdpr.gdpr-general-confirmation .gdpr-wrapper").css({display:"flex"}).hide().fadeIn()}window.has_consent=function(e){if(Cookies.get("gdpr[consent_types]")&&JSON.parse(Cookies.get("gdpr[consent_types]")).indexOf(e)>-1)return!0;return!1},window.is_allowed_cookie=function(e){if(Cookies.get("gdpr[allowed_cookies]")&&JSON.parse(Cookies.get("gdpr[allowed_cookies]")).indexOf(e)>-1)return!0;return!1},e(function(){-1!==r.indexOf("notify=1")&&(window.history.replaceState({},document.title,t),e("body").addClass("gdpr-notification")),e(document).on("submit",".gdpr-privacy-preferences-frm",function(r){r.preventDefault();e(this);var t=e(this).serialize();e.post(GDPR.ajaxurl,t,function(r){r.success?(Cookies.set("gdpr[privacy_bar]",1,{expires:365}),GDPR.refresh?window.location.reload():(e(".gdpr-overlay").fadeOut(),e("body").removeClass("gdpr-noscroll"),e(".gdpr.gdpr-privacy-preferences .gdpr-wrapper").fadeOut(),e(".gdpr-privacy-bar").fadeOut())):n(r.data.title,r.data.content)})}),e(document).on("submit",".gdpr-request-form",function(r){r.preventDefault();e(this),e(this).find('input[name="type"]').val();var t=e(this).serialize();e.post(GDPR.ajaxurl,t,function(e){n(e.data.title,e.data.content)})}),e(document).on("change",".gdpr-cookie-category",function(){var r=e(this).data("category"),t=e(this).prop("checked");e('[data-category="'+r+'"]').prop("checked",t)}),Cookies.get("gdpr[privacy_bar]")||0==e(".gdpr-reconsent-bar").length&&e(".gdpr.gdpr-privacy-bar").delay(1e3).slideDown(600),e(document).on("click",".gdpr.gdpr-privacy-bar .gdpr-agreement",function(){e(".gdpr-privacy-preferences-frm").submit()}),e(document).on("click",".gdpr.gdpr-reconsent-bar .gdpr-agreement",function(){var r=[];e('.gdpr-policy-list input[type="hidden"]').each(function(){r.push(e(this).val())}),e.post(GDPR.ajaxurl,{action:"agree_with_new_policies",nonce:e(this).data("nonce"),consents:r},function(r){r.success?GDPR.refresh?window.location.reload():(e(".gdpr-reconsent-bar").slideUp(600),Cookies.get("gdpr[privacy_bar]")||e(".gdpr.gdpr-privacy-bar").delay(1e3).slideDown(600)):n(response.data.title,response.data.content)})}),e(document).on("click",".gdpr-preferences",function(r){r.preventDefault();e(this).data("type");e(".gdpr-overlay").fadeIn(),e("body").addClass("gdpr-noscroll"),e(".gdpr.gdpr-privacy-preferences .gdpr-wrapper").fadeIn()}),e(document).on("click",".gdpr.gdpr-privacy-preferences .gdpr-close, .gdpr-overlay",function(){e(".gdpr-overlay").fadeOut(),e("body").removeClass("gdpr-noscroll"),e(".gdpr.gdpr-privacy-preferences .gdpr-wrapper").fadeOut()}),e(document).on("click",".gdpr.gdpr-privacy-preferences .gdpr-tabs button",function(){var r="."+e(this).data("target");e(".gdpr.gdpr-privacy-preferences .gdpr-tab-content > div").removeClass("gdpr-active"),e(".gdpr.gdpr-privacy-preferences .gdpr-tab-content "+r).addClass("gdpr-active"),e(".gdpr.gdpr-privacy-preferences .gdpr-tabs").hasClass("gdpr-mobile-expanded")&&(e(".gdpr.gdpr-privacy-preferences .gdpr-mobile-menu button").removeClass("gdpr-active"),e(".gdpr.gdpr-privacy-preferences .gdpr-tabs").toggle()),e(".gdpr.gdpr-privacy-preferences .gdpr-tabs button").removeClass("gdpr-active"),e(".gdpr-subtabs li button").removeClass("gdpr-active"),e(this).hasClass("gdpr-tab-button")?(e(this).addClass("gdpr-active"),e(this).hasClass("gdpr-cookie-settings")&&e(".gdpr-subtabs").find("li button").first().addClass("gdpr-active")):(e(".gdpr-cookie-settings").addClass("gdpr-active"),e(this).addClass("gdpr-active"))}),e(document).on("click",".gdpr.gdpr-privacy-preferences .gdpr-mobile-menu button",function(r){e(this).toggleClass("gdpr-active"),e(".gdpr.gdpr-privacy-preferences .gdpr-tabs").toggle().addClass("gdpr-mobile-expanded")}),e(window).resize(function(){e(window).width()>640&&e(".gdpr.gdpr-privacy-preferences .gdpr-tabs").hasClass("gdpr-mobile-expanded")&&(e(".gdpr.gdpr-privacy-preferences .gdpr-mobile-menu button").removeClass("gdpr-active"),e(".gdpr.gdpr-privacy-preferences .gdpr-tabs").removeClass("gdpr-mobile-expanded").removeAttr("style"))}),e("form.gdpr-add-to-deletion-requests").on("submit",function(r){e(this).hasClass("confirmed")||(r.preventDefault(),e(".gdpr-overlay").fadeIn(),e("body").addClass("gdpr-noscroll"),e(".gdpr.gdpr-delete-confirmation .gdpr-wrapper").css({display:"flex"}).hide().fadeIn())}),e(document).on("click",".gdpr.gdpr-delete-confirmation button.gdpr-delete-account",function(){e("form.gdpr-add-to-deletion-requests").addClass("confirmed"),e('form.gdpr-add-to-deletion-requests.confirmed input[type="submit"]').click(),e(".gdpr-overlay").fadeOut(),e("body").removeClass("gdpr-noscroll"),e(".gdpr.gdpr-delete-confirmation .gdpr-wrapper").fadeOut()}),e("body").hasClass("gdpr-notification")&&(e(".gdpr-overlay").fadeIn(),e("body").addClass("gdpr-noscroll"),e(".gdpr.gdpr-general-confirmation .gdpr-wrapper").css({display:"flex"}).hide().fadeIn()),e(document).on("click",".gdpr.gdpr-general-confirmation button.gdpr-ok",function(){e(".gdpr-overlay").fadeOut(),e("body").removeClass("gdpr-noscroll"),e(".gdpr.gdpr-general-confirmation .gdpr-wrapper").fadeOut()}),e(document).on("click",".gdpr-disagree",function(r){e(".gdpr-overlay").fadeIn(),e("body").addClass("gdpr-noscroll"),e(".gdpr.gdpr-disagree-confirmation .gdpr-wrapper").css({display:"flex"}).hide().fadeIn()}),e(document).on("click",".gdpr-disagree-confirm",function(r){r.preventDefault(),e(".gdpr-overlay").fadeOut(),e(".gdpr.gdpr-disagree-confirmation .gdpr-wrapper").fadeOut(),e(".gdpr-consent-buttons").fadeOut(300,function(){e(".gdpr-updating").html(GDPR.i18n.aborting),e(".gdpr-consent-loading").fadeIn(300)});var t=0;setInterval(function(){e(".gdpr-ellipsis").html();t<3?(e(".gdpr-ellipsis").append("."),t++):(e(".gdpr-ellipsis").html(""),t=0)},600);e.post(GDPR.ajaxurl,{action:"disagree_with_terms",nonce:e(this).data("nonce")},function(e){e.success&&location.reload()})})})}(jQuery),function(e){var r=!1;if("function"==typeof define&&define.amd&&(define(e),r=!0),"object"==typeof exports&&(module.exports=e(),r=!0),!r){var t=window.Cookies,n=window.Cookies=e();n.noConflict=function(){return window.Cookies=t,n}}}(function(){function e(){for(var e=0,r={};e<arguments.length;e++){var t=arguments[e];for(var n in t)r[n]=t[n]}return r}return function r(t){function n(r,o,d){var a;if("undefined"!=typeof document){if(arguments.length>1){if("number"==typeof(d=e({path:"/"},n.defaults,d)).expires){var p=new Date;p.setMilliseconds(p.getMilliseconds()+864e5*d.expires),d.expires=p}d.expires=d.expires?d.expires.toUTCString():"";try{a=JSON.stringify(o),/^[\{\[]/.test(a)&&(o=a)}catch(e){}o=t.write?t.write(o,r):encodeURIComponent(String(o)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),r=(r=(r=encodeURIComponent(String(r))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var i="";for(var s in d)d[s]&&(i+="; "+s,!0!==d[s]&&(i+="="+d[s]));return document.cookie=r+"="+o+i}r||(a={});for(var c=document.cookie?document.cookie.split("; "):[],g=/(%[0-9A-Z]{2})+/g,l=0;l<c.length;l++){var f=c[l].split("="),u=f.slice(1).join("=");this.json||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var m=f[0].replace(g,decodeURIComponent);if(u=t.read?t.read(u,m):t(u,m)||u.replace(g,decodeURIComponent),this.json)try{u=JSON.parse(u)}catch(e){}if(r===m){a=u;break}r||(a[m]=u)}catch(e){}}return a}}return n.set=n,n.get=function(e){return n.call(n,e)},n.getJSON=function(){return n.apply({json:!0},[].slice.call(arguments))},n.defaults={},n.remove=function(r,t){n(r,"",e(t,{expires:-1}))},n.withConverter=r,n}(function(){})});
|
gdpr.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* Plugin Name: GDPR
|
17 |
* Plugin URI: https://trewknowledge.com
|
18 |
* Description: This plugin is meant to assist a Controller, Data Processor, and Data Protection Officer (DPO) with efforts to meet the obligations and rights enacted under the GDPR.
|
19 |
-
* Version:
|
20 |
* Author: Trew Knowledge
|
21 |
* Author URI: https://trewknowledge.com
|
22 |
* License: GPL-2.0+
|
@@ -35,7 +35,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
35 |
* Start at version 1.0.0 and use SemVer - https://semver.org
|
36 |
* Rename this for your plugin and update it as you release new versions.
|
37 |
*/
|
38 |
-
define( 'GDPR_VERSION', '
|
39 |
|
40 |
/**
|
41 |
* The code that runs during plugin activation.
|
16 |
* Plugin Name: GDPR
|
17 |
* Plugin URI: https://trewknowledge.com
|
18 |
* Description: This plugin is meant to assist a Controller, Data Processor, and Data Protection Officer (DPO) with efforts to meet the obligations and rights enacted under the GDPR.
|
19 |
+
* Version: 2.0.0
|
20 |
* Author: Trew Knowledge
|
21 |
* Author URI: https://trewknowledge.com
|
22 |
* License: GPL-2.0+
|
35 |
* Start at version 1.0.0 and use SemVer - https://semver.org
|
36 |
* Rename this for your plugin and update it as you release new versions.
|
37 |
*/
|
38 |
+
define( 'GDPR_VERSION', '2.0.0' );
|
39 |
|
40 |
/**
|
41 |
* The code that runs during plugin activation.
|
includes/class-gdpr-activator.php
CHANGED
@@ -39,6 +39,35 @@ class GDPR_Activator {
|
|
39 |
add_option( 'gdpr_recaptcha_secret_key', '' );
|
40 |
add_option( 'gdpr_add_consent_checkboxes_registration', true );
|
41 |
add_option( 'gdpr_add_consent_checkboxes_checkout', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
|
44 |
}
|
39 |
add_option( 'gdpr_recaptcha_secret_key', '' );
|
40 |
add_option( 'gdpr_add_consent_checkboxes_registration', true );
|
41 |
add_option( 'gdpr_add_consent_checkboxes_checkout', true );
|
42 |
+
add_option( 'gdpr_cookie_popup_content', array(
|
43 |
+
'necessary' => array(
|
44 |
+
'name' => 'Necessary',
|
45 |
+
'status' => 'required',
|
46 |
+
'cookies_used' => '',
|
47 |
+
'how_we_use' => '',
|
48 |
+
),
|
49 |
+
'advertising' => array(
|
50 |
+
'name' => 'Advertising',
|
51 |
+
'status' => 'on',
|
52 |
+
'cookies_used' => '',
|
53 |
+
'how_we_use' => '',
|
54 |
+
),
|
55 |
+
'analytics' => array(
|
56 |
+
'name' => 'Analytics',
|
57 |
+
'status' => 'on',
|
58 |
+
'cookies_used' => '',
|
59 |
+
'how_we_use' => '',
|
60 |
+
),
|
61 |
+
'other' => array(
|
62 |
+
'name' => 'Other',
|
63 |
+
'status' => 'on',
|
64 |
+
'cookies_used' => '',
|
65 |
+
'how_we_use' => '',
|
66 |
+
),
|
67 |
+
) );
|
68 |
+
add_option( 'gdpr_refresh_after_preferences_update', true );
|
69 |
+
add_option( 'gdpr_enable_privacy_bar', true );
|
70 |
+
add_option( 'gdpr_display_cookie_categories_in_bar', false );
|
71 |
}
|
72 |
|
73 |
}
|
includes/class-gdpr-help.php
CHANGED
@@ -55,7 +55,7 @@ class GDPR_Help {
|
|
55 |
|
56 |
$erasure_help = '<h2>' . esc_html__( 'Erasure', 'gdpr' ) . '</h2>' .
|
57 |
'<p>' . esc_html__( 'Users may request to be deleted from the site. If they don\'t have any content published on the site (including comments) they will be removed from the site automatically. Otherwise, they will show up at this review table where you can reassign or delete their published content and anonymize his comments.', 'gdpr' ) . '</p>' .
|
58 |
-
'<p>' . esc_html__( '
|
59 |
get_current_screen()->add_help_tab( array(
|
60 |
'id' => 'erasure',
|
61 |
'title' => esc_html__( 'Erasures', 'gdpr' ),
|
@@ -125,7 +125,7 @@ class GDPR_Help {
|
|
125 |
) );
|
126 |
|
127 |
$cookies_settings_help = sprintf( '<h2>' . esc_html__( 'Cookie Management', 'gdpr' ) . '</h2>' .
|
128 |
-
'<p>' . esc_html__( 'Fill out every information you can about the cookies your site uses. Set the cookies that you set under Cookies Used and cookies used and set by third parties under the
|
129 |
/* translators: the function */
|
130 |
'<p>' . esc_html__( 'You must ask your developer to wrap the code that sets the cookies with our helper function %s.', 'gdpr' ) . '</p>' .
|
131 |
'<p>' . esc_html__( 'Some services like Google Analytics provide a way to opt out from their code with an extra parameter to their snippet.', 'gdpr' ) . '</p>' .
|
55 |
|
56 |
$erasure_help = '<h2>' . esc_html__( 'Erasure', 'gdpr' ) . '</h2>' .
|
57 |
'<p>' . esc_html__( 'Users may request to be deleted from the site. If they don\'t have any content published on the site (including comments) they will be removed from the site automatically. Otherwise, they will show up at this review table where you can reassign or delete their published content and anonymize his comments.', 'gdpr' ) . '</p>' .
|
58 |
+
'<p>' . esc_html__( 'User may request their data to be deleted. The controller has, according to GDPR, 30 days to fulfill the request. On some occasions, you can ask to extend this time limit. When the request has been resolved the user will receive a notification that their account has been closed.', 'gdpr' ) . '</p>';
|
59 |
get_current_screen()->add_help_tab( array(
|
60 |
'id' => 'erasure',
|
61 |
'title' => esc_html__( 'Erasures', 'gdpr' ),
|
125 |
) );
|
126 |
|
127 |
$cookies_settings_help = sprintf( '<h2>' . esc_html__( 'Cookie Management', 'gdpr' ) . '</h2>' .
|
128 |
+
'<p>' . esc_html__( 'Fill out every information you can about the cookies your site uses. Set the cookies that you set under Cookies Used and cookies used and set by third parties under the Third party domains.', 'gdpr' ) . '</p>' .
|
129 |
/* translators: the function */
|
130 |
'<p>' . esc_html__( 'You must ask your developer to wrap the code that sets the cookies with our helper function %s.', 'gdpr' ) . '</p>' .
|
131 |
'<p>' . esc_html__( 'Some services like Google Analytics provide a way to opt out from their code with an extra parameter to their snippet.', 'gdpr' ) . '</p>' .
|
includes/class-gdpr.php
CHANGED
@@ -187,13 +187,16 @@ class GDPR {
|
|
187 |
add_action( 'woocommerce_checkout_update_user_meta', array( $plugin_admin, 'woocommerce_checkout_save_consent' ), 10, 2 );
|
188 |
add_filter( 'woocommerce_checkout_fields', array( $plugin_admin, 'woocommerce_consent_checkboxes' ) );
|
189 |
}
|
|
|
|
|
190 |
add_action( 'show_user_profile', array( $plugin_admin, 'edit_user_profile' ) );
|
191 |
add_action( 'personal_options_update', array( $plugin_admin, 'user_profile_update' ) );
|
192 |
-
add_action( 'admin_notices', array( $plugin_admin, '
|
193 |
-
add_action( 'admin_notices', array( $plugin_admin, '
|
194 |
-
add_action( '
|
195 |
-
add_action( '
|
196 |
-
add_action( '
|
|
|
197 |
add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_styles' ) );
|
198 |
add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_scripts' ) );
|
199 |
add_action( 'admin_menu', array( $plugin_admin, 'add_menu' ) );
|
@@ -265,12 +268,14 @@ class GDPR {
|
|
265 |
add_action( 'wp_footer', array( $plugin_public, 'confirmation_screens' ) );
|
266 |
add_action( 'wp_ajax_disagree_with_terms', array( $plugin_public, 'logout' ) );
|
267 |
add_action( 'wp_ajax_agree_with_terms', array( $plugin_public, 'agree_with_terms' ) );
|
268 |
-
add_action( '
|
269 |
-
add_action( '
|
|
|
|
|
270 |
|
271 |
add_action( 'wp', array( $requests_public, 'request_confirmed' ) );
|
272 |
-
add_action( '
|
273 |
-
add_action( '
|
274 |
}
|
275 |
|
276 |
/**
|
@@ -315,7 +320,7 @@ class GDPR {
|
|
315 |
* @since 1.2.0
|
316 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
317 |
*/
|
318 |
-
public static function get_consent_checkboxes() {
|
319 |
$consent_types = get_option( 'gdpr_consent_types', array() );
|
320 |
$sent_extras = ( isset( $_POST['user_consents'] ) ) ? $_POST['user_consents'] : array();
|
321 |
$allowed_html = array(
|
@@ -326,9 +331,15 @@ class GDPR {
|
|
326 |
),
|
327 |
);
|
328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
ob_start();
|
330 |
foreach ( $consent_types as $key => $consent ) {
|
331 |
-
$required = ( isset( $consent['
|
332 |
$checked = ( isset( $sent_extras[ $key ] ) ) ? checked( $sent_extras[ $key ], 1, false ) : '';
|
333 |
echo '<p>' .
|
334 |
'<input type="checkbox" name="user_consents[' . esc_attr( $key ) . ']" id="' . esc_attr( $key ) . '-consent" value="1" ' . $required . ' ' . $checked . '>' .
|
@@ -344,8 +355,8 @@ class GDPR {
|
|
344 |
* @since 1.1.4
|
345 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
346 |
*/
|
347 |
-
public static function consent_checkboxes() {
|
348 |
-
echo self::get_consent_checkboxes();
|
349 |
}
|
350 |
|
351 |
/**
|
@@ -468,8 +479,10 @@ class GDPR {
|
|
468 |
|
469 |
default: // XML
|
470 |
$dom = new DomDocument( '1.0', 'ISO-8859-1' );
|
|
|
|
|
471 |
$personal_info = $dom->createElement( 'Personal_Information' );
|
472 |
-
$
|
473 |
$personal_info->appendChild( $dom->createElement( 'Username', $user->user_login ) );
|
474 |
$personal_info->appendChild( $dom->createElement( 'First_Name', $user->first_name ) );
|
475 |
$personal_info->appendChild( $dom->createElement( 'Last_Name', $user->last_name ) );
|
@@ -481,7 +494,7 @@ class GDPR {
|
|
481 |
|
482 |
if ( ! empty( $user_consents ) ) {
|
483 |
$consents = $dom->createElement( 'Consents' );
|
484 |
-
$
|
485 |
foreach ( $user_consents as $consent_item ) {
|
486 |
$consents->appendChild( $dom->createElement( 'consent', $consent_item ) );
|
487 |
}
|
@@ -489,7 +502,7 @@ class GDPR {
|
|
489 |
|
490 |
if ( ! empty( $comments ) ) {
|
491 |
$comments_node = $dom->createElement( 'Comments' );
|
492 |
-
$
|
493 |
foreach ( $comments as $k => $v ) {
|
494 |
$single_comment = $dom->createElement( 'Comment' );
|
495 |
$comments_node->appendChild( $single_comment );
|
@@ -504,20 +517,23 @@ class GDPR {
|
|
504 |
}
|
505 |
|
506 |
$meta_data = $dom->createElement( 'Metadata' );
|
507 |
-
$
|
508 |
|
509 |
foreach ( $usermeta as $k => $v ) {
|
510 |
$k = is_numeric( substr( $k, 0, 1 ) ) ? '_' . $k : $k;
|
511 |
$key = $dom->createElement( htmlspecialchars( $k ) );
|
512 |
$meta_data->appendChild( $key );
|
513 |
foreach ( $v as $value ) {
|
|
|
|
|
|
|
514 |
$key->appendChild( $dom->createElement( 'item', htmlspecialchars( $value ) ) );
|
515 |
}
|
516 |
}
|
517 |
|
518 |
if ( $extra_content ) {
|
519 |
$extra = $dom->createElement( $extra_content['name'] );
|
520 |
-
$
|
521 |
foreach ( $extra_content['content'] as $key => $obj ) {
|
522 |
$item = $extra->appendChild( $dom->createElement( 'item' ) );
|
523 |
foreach ( $obj as $k => $value ) {
|
@@ -571,7 +587,7 @@ class GDPR {
|
|
571 |
* @return void
|
572 |
*/
|
573 |
public static function save_consent( $user_id, $consent ) {
|
574 |
-
$registered_consent = get_option( 'gdpr_consent_types', array(
|
575 |
$consent_ids = array_keys( $registered_consent );
|
576 |
$user = get_user_by( 'ID', $user_id );
|
577 |
$consent = sanitize_text_field( wp_unslash( $consent ) );
|
187 |
add_action( 'woocommerce_checkout_update_user_meta', array( $plugin_admin, 'woocommerce_checkout_save_consent' ), 10, 2 );
|
188 |
add_filter( 'woocommerce_checkout_fields', array( $plugin_admin, 'woocommerce_consent_checkboxes' ) );
|
189 |
}
|
190 |
+
add_filter( 'manage_users_custom_column', array( $plugin_admin, 'add_consents_to_consents_column' ), 10, 3 );
|
191 |
+
add_filter( 'manage_users_columns', array( $plugin_admin, 'add_consents_column_to_user_table' ) );
|
192 |
add_action( 'show_user_profile', array( $plugin_admin, 'edit_user_profile' ) );
|
193 |
add_action( 'personal_options_update', array( $plugin_admin, 'user_profile_update' ) );
|
194 |
+
add_action( 'admin_notices', array( $plugin_admin, 'policy_updated_notice' ) );
|
195 |
+
add_action( 'admin_notices', array( $plugin_admin, 'review_settings_after_v2_notice' ) );
|
196 |
+
add_action( 'upgrader_process_complete', array( $plugin_admin, 'upgrade_completed' ), 10, 2 );
|
197 |
+
add_action( 'wp_ajax_ignore_policy_update', array( $plugin_admin, 'ignore_policy_update' ) );
|
198 |
+
add_action( 'wp_ajax_seek_consent', array( $plugin_admin, 'seek_consent' ) );
|
199 |
+
add_action( 'publish_page', array( $plugin_admin, 'policy_updated' ), 10, 2 );
|
200 |
add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_styles' ) );
|
201 |
add_action( 'admin_enqueue_scripts', array( $plugin_admin, 'enqueue_scripts' ) );
|
202 |
add_action( 'admin_menu', array( $plugin_admin, 'add_menu' ) );
|
268 |
add_action( 'wp_footer', array( $plugin_public, 'confirmation_screens' ) );
|
269 |
add_action( 'wp_ajax_disagree_with_terms', array( $plugin_public, 'logout' ) );
|
270 |
add_action( 'wp_ajax_agree_with_terms', array( $plugin_public, 'agree_with_terms' ) );
|
271 |
+
add_action( 'wp_ajax_gdpr_update_privacy_preferences', array( $plugin_public, 'update_privacy_preferences' ) );
|
272 |
+
add_action( 'wp_ajax_nopriv_gdpr_update_privacy_preferences', array( $plugin_public, 'update_privacy_preferences' ) );
|
273 |
+
add_action( 'wp_ajax_agree_with_new_policies', array( $plugin_public, 'agree_with_new_policies' ) );
|
274 |
+
add_action( 'wp_ajax_nopriv_agree_with_new_policies', array( $plugin_public, 'agree_with_new_policies' ) );
|
275 |
|
276 |
add_action( 'wp', array( $requests_public, 'request_confirmed' ) );
|
277 |
+
add_action( 'wp_ajax_gdpr_send_request_email', array( $requests_public, 'send_request_email' ) );
|
278 |
+
add_action( 'wp_ajax_nopriv_gdpr_send_request_email', array( $requests_public, 'send_request_email' ) );
|
279 |
}
|
280 |
|
281 |
/**
|
320 |
* @since 1.2.0
|
321 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
322 |
*/
|
323 |
+
public static function get_consent_checkboxes( $consent_key = false ) {
|
324 |
$consent_types = get_option( 'gdpr_consent_types', array() );
|
325 |
$sent_extras = ( isset( $_POST['user_consents'] ) ) ? $_POST['user_consents'] : array();
|
326 |
$allowed_html = array(
|
331 |
),
|
332 |
);
|
333 |
|
334 |
+
if ( $consent_key ) {
|
335 |
+
$consent_types = array_filter( $consent_types, function( $key ) use ( $consent_key ) {
|
336 |
+
return $key === $consent_key;
|
337 |
+
}, ARRAY_FILTER_USE_KEY );
|
338 |
+
}
|
339 |
+
|
340 |
ob_start();
|
341 |
foreach ( $consent_types as $key => $consent ) {
|
342 |
+
$required = ( isset( $consent['policy-page'] ) && $consent['policy-page'] ) ? 'required' : '';
|
343 |
$checked = ( isset( $sent_extras[ $key ] ) ) ? checked( $sent_extras[ $key ], 1, false ) : '';
|
344 |
echo '<p>' .
|
345 |
'<input type="checkbox" name="user_consents[' . esc_attr( $key ) . ']" id="' . esc_attr( $key ) . '-consent" value="1" ' . $required . ' ' . $checked . '>' .
|
355 |
* @since 1.1.4
|
356 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
357 |
*/
|
358 |
+
public static function consent_checkboxes( $consent_key = false ) {
|
359 |
+
echo self::get_consent_checkboxes( $consent_key );
|
360 |
}
|
361 |
|
362 |
/**
|
479 |
|
480 |
default: // XML
|
481 |
$dom = new DomDocument( '1.0', 'ISO-8859-1' );
|
482 |
+
$data_wrapper = $dom->createElement( 'Data' );
|
483 |
+
$dom->appendChild( $data_wrapper );
|
484 |
$personal_info = $dom->createElement( 'Personal_Information' );
|
485 |
+
$data_wrapper->appendChild( $personal_info );
|
486 |
$personal_info->appendChild( $dom->createElement( 'Username', $user->user_login ) );
|
487 |
$personal_info->appendChild( $dom->createElement( 'First_Name', $user->first_name ) );
|
488 |
$personal_info->appendChild( $dom->createElement( 'Last_Name', $user->last_name ) );
|
494 |
|
495 |
if ( ! empty( $user_consents ) ) {
|
496 |
$consents = $dom->createElement( 'Consents' );
|
497 |
+
$data_wrapper->appendChild( $consents );
|
498 |
foreach ( $user_consents as $consent_item ) {
|
499 |
$consents->appendChild( $dom->createElement( 'consent', $consent_item ) );
|
500 |
}
|
502 |
|
503 |
if ( ! empty( $comments ) ) {
|
504 |
$comments_node = $dom->createElement( 'Comments' );
|
505 |
+
$data_wrapper->appendChild( $comments_node );
|
506 |
foreach ( $comments as $k => $v ) {
|
507 |
$single_comment = $dom->createElement( 'Comment' );
|
508 |
$comments_node->appendChild( $single_comment );
|
517 |
}
|
518 |
|
519 |
$meta_data = $dom->createElement( 'Metadata' );
|
520 |
+
$data_wrapper->appendChild( $meta_data );
|
521 |
|
522 |
foreach ( $usermeta as $k => $v ) {
|
523 |
$k = is_numeric( substr( $k, 0, 1 ) ) ? '_' . $k : $k;
|
524 |
$key = $dom->createElement( htmlspecialchars( $k ) );
|
525 |
$meta_data->appendChild( $key );
|
526 |
foreach ( $v as $value ) {
|
527 |
+
if ( is_serialized( $value ) ) {
|
528 |
+
$value = maybe_unserialize( $value );
|
529 |
+
}
|
530 |
$key->appendChild( $dom->createElement( 'item', htmlspecialchars( $value ) ) );
|
531 |
}
|
532 |
}
|
533 |
|
534 |
if ( $extra_content ) {
|
535 |
$extra = $dom->createElement( $extra_content['name'] );
|
536 |
+
$data_wrapper->appendChild( $extra );
|
537 |
foreach ( $extra_content['content'] as $key => $obj ) {
|
538 |
$item = $extra->appendChild( $dom->createElement( 'item' ) );
|
539 |
foreach ( $obj as $k => $value ) {
|
587 |
* @return void
|
588 |
*/
|
589 |
public static function save_consent( $user_id, $consent ) {
|
590 |
+
$registered_consent = get_option( 'gdpr_consent_types', array() );
|
591 |
$consent_ids = array_keys( $registered_consent );
|
592 |
$user = get_user_by( 'ID', $user_id );
|
593 |
$consent = sanitize_text_field( wp_unslash( $consent ) );
|
includes/helper-functions.php
CHANGED
@@ -59,6 +59,14 @@ function gdpr_request_form_shortcode( $atts ) {
|
|
59 |
|
60 |
add_shortcode( 'gdpr_request_form', 'gdpr_request_form_shortcode' );
|
61 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
/**
|
63 |
* Checks if a cookie is allowed
|
64 |
* @since 1.0.0
|
@@ -118,3 +126,7 @@ function has_consent( $consent ) {
|
|
118 |
|
119 |
return false;
|
120 |
}
|
|
|
|
|
|
|
|
59 |
|
60 |
add_shortcode( 'gdpr_request_form', 'gdpr_request_form_shortcode' );
|
61 |
|
62 |
+
function gdpr_get_consent_checkboxes( $atts ) {
|
63 |
+
$atts = shortcode_atts( array(
|
64 |
+
'id' => false,
|
65 |
+
), $atts, 'gdpr_consent_checkboxes' );
|
66 |
+
|
67 |
+
return GDPR::get_consent_checkboxes( $atts['id'] );
|
68 |
+
}
|
69 |
+
|
70 |
/**
|
71 |
* Checks if a cookie is allowed
|
72 |
* @since 1.0.0
|
126 |
|
127 |
return false;
|
128 |
}
|
129 |
+
|
130 |
+
function is_dnt() {
|
131 |
+
return ( isset( $_SERVER['HTTP_DNT'] ) && $_SERVER['HTTP_DNT'] === '1' );
|
132 |
+
}
|
languages/gdpr.pot
CHANGED
@@ -25,143 +25,144 @@ msgstr ""
|
|
25 |
msgid "Tools"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: admin/class-gdpr-admin.php:130
|
29 |
msgid "Settings"
|
30 |
msgstr ""
|
31 |
|
32 |
-
#: admin/class-gdpr-admin.php:
|
33 |
-
msgid "General"
|
34 |
-
msgstr ""
|
35 |
-
|
36 |
-
#: admin/class-gdpr-admin.php:272, admin/partials/settings.php:168
|
37 |
-
msgid "Cookies"
|
38 |
-
msgstr ""
|
39 |
-
|
40 |
-
#: admin/class-gdpr-admin.php:273, admin/partials/settings.php:248
|
41 |
-
msgid "Consents"
|
42 |
-
msgstr ""
|
43 |
-
|
44 |
-
#: admin/class-gdpr-admin.php:304, includes/class-gdpr-help.php:38, includes/class-gdpr-help.php:43, admin/partials/requests.php:32
|
45 |
msgid "Rectify Data"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: admin/class-gdpr-admin.php:
|
49 |
msgid "Complaint"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: admin/class-gdpr-admin.php:
|
53 |
msgid "Erasure"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: admin/class-gdpr-admin.php:
|
57 |
msgid "Access Data"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: admin/class-gdpr-admin.php:
|
61 |
msgid "Data Breach"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: admin/class-gdpr-admin.php:
|
65 |
msgid "Audit Log"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: admin/class-gdpr-admin.php:
|
69 |
msgid "Consent Given"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: admin/class-gdpr-admin.php:
|
73 |
msgid "Consent ID"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: admin/class-gdpr-admin.php:
|
77 |
msgid "Comments"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: admin/class-gdpr-admin.php:
|
81 |
msgid "Comment Field"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: admin/class-gdpr-admin.php:
|
85 |
msgid "Comment Data"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: admin/class-gdpr-admin.php:
|
89 |
msgid "Metadata"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: admin/class-gdpr-admin.php:
|
93 |
msgid "Name"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: admin/class-gdpr-admin.php:
|
97 |
msgid "Value"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: admin/class-gdpr-admin.php:
|
101 |
msgid "No logs found for this email."
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: admin/class-gdpr-admin.php:
|
105 |
-
msgid "
|
|
|
|
|
|
|
|
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: admin/class-gdpr-admin.php:
|
109 |
-
msgid "
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: admin/class-gdpr-admin.php:
|
113 |
-
msgid "
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: admin/class-gdpr-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
msgid "Ask for consent"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: admin/class-gdpr-admin.php:
|
121 |
msgid "Ignore"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: admin/class-gdpr-admin.php:
|
125 |
msgid "We could not verify the the security token. Please try again."
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: admin/class-gdpr-admin.php:
|
129 |
msgid "One or more required fields are missing. Please try again."
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: admin/class-gdpr-admin.php:
|
133 |
msgid "Data breach notification has been initialized. An email confirmation has been sent to the website controller."
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: admin/class-gdpr-admin.php:
|
137 |
msgid "ERROR"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: admin/class-gdpr-admin.php:
|
141 |
msgid "is a required consent"
|
142 |
msgstr ""
|
143 |
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
#: admin/class-gdpr-admin.php:739
|
149 |
-
msgid "Users will have to consent to the updated privacy policy on login."
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: admin/class-gdpr-admin.php:
|
153 |
msgid "Consent Management"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: admin/class-gdpr-admin.php:
|
157 |
msgid "Profile Updated. These are the user consents after the save:"
|
158 |
msgstr ""
|
159 |
|
|
|
|
|
|
|
|
|
160 |
#: admin/class-gdpr-requests-admin.php:30, admin/class-gdpr-requests-admin.php:155, admin/class-gdpr-requests-admin.php:203, admin/class-gdpr-requests-admin.php:240
|
161 |
msgid "We could not verify the user email or the security token. Please try again."
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: admin/class-gdpr-requests-admin.php:37, admin/class-gdpr-requests-admin.php:286, admin/class-gdpr-requests-admin.php:331, public/partials/confirmation-screens.php:
|
165 |
msgid "User not found."
|
166 |
msgstr ""
|
167 |
|
@@ -216,7 +217,7 @@ msgstr ""
|
|
216 |
msgid "User %s was deleted from the site."
|
217 |
msgstr ""
|
218 |
|
219 |
-
#: admin/class-gdpr-requests-admin.php:278, admin/class-gdpr-requests-admin.php:317, public/class-gdpr-requests-public.php:
|
220 |
msgid "We could not verify the security token. Please try again."
|
221 |
msgstr ""
|
222 |
|
@@ -383,7 +384,7 @@ msgid "Users may request to be deleted from the site. If they don't have any con
|
|
383 |
msgstr ""
|
384 |
|
385 |
#: includes/class-gdpr-help.php:58
|
386 |
-
msgid "
|
387 |
msgstr ""
|
388 |
|
389 |
#: includes/class-gdpr-help.php:61
|
@@ -447,7 +448,7 @@ msgid "Cookie Management"
|
|
447 |
msgstr ""
|
448 |
|
449 |
#: includes/class-gdpr-help.php:128
|
450 |
-
msgid "Fill out every information you can about the cookies your site uses. Set the cookies that you set under Cookies Used and cookies used and set by third parties under the
|
451 |
msgstr ""
|
452 |
|
453 |
#: includes/class-gdpr-help.php:130
|
@@ -518,65 +519,93 @@ msgstr ""
|
|
518 |
msgid "User request expired. Removing %s user_meta."
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: includes/class-gdpr.php:
|
522 |
msgid "User registered to the site."
|
523 |
msgstr ""
|
524 |
|
525 |
#. translators: Name of consent
|
526 |
-
#: includes/class-gdpr.php:
|
527 |
msgid "User gave explicit consent to %s"
|
528 |
msgstr ""
|
529 |
|
530 |
-
#: includes/helper-functions.php:26, public/partials/privacy-bar.php:
|
531 |
msgid "Privacy Preferences"
|
532 |
msgstr ""
|
533 |
|
534 |
-
#: public/class-gdpr-public.php:
|
535 |
msgid "Aborting"
|
536 |
msgstr ""
|
537 |
|
538 |
-
#: public/class-gdpr-public.php:
|
539 |
-
msgid "
|
540 |
msgstr ""
|
541 |
|
542 |
-
#: public/class-gdpr-public.php:
|
543 |
-
msgid "
|
544 |
msgstr ""
|
545 |
|
546 |
-
#: public/class-gdpr-public.php:
|
547 |
-
msgid "
|
|
|
|
|
|
|
|
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: public/class-gdpr-public.php:
|
551 |
-
msgid "
|
|
|
|
|
|
|
|
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: public/class-gdpr-requests-public.php:
|
555 |
msgid "Invalid type of request. Please try again."
|
556 |
msgstr ""
|
557 |
|
558 |
-
#: public/class-gdpr-requests-public.php:
|
559 |
msgid "Please verify that you are not a robot."
|
560 |
msgstr ""
|
561 |
|
562 |
-
#: public/class-gdpr-requests-public.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
563 |
msgid "User confirmed a request to be deleted."
|
564 |
msgstr ""
|
565 |
|
566 |
-
#: public/class-gdpr-requests-public.php:
|
567 |
msgid "Content was found for that user."
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: public/class-gdpr-requests-public.php:
|
571 |
msgid "User added to the erasure review table."
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: public/class-gdpr-requests-public.php:
|
575 |
msgid "User placed a request for rectification or a complaint."
|
576 |
msgstr ""
|
577 |
|
578 |
#. translators: File format. Can be XML or JSON
|
579 |
-
#: public/class-gdpr-requests-public.php:
|
580 |
msgid "User downloaded all their data in %s format."
|
581 |
msgstr ""
|
582 |
|
@@ -668,204 +697,284 @@ msgstr ""
|
|
668 |
msgid "Anonymize"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: admin/partials/settings.php:
|
672 |
-
msgid "
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: admin/partials/settings.php:
|
676 |
-
msgid "
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: admin/partials/settings.php:
|
680 |
-
msgid "
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
684 |
msgid "User deletion"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
688 |
msgid "Send all deletion requests to the review table."
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
692 |
msgid "Disable CSS"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: admin/partials/settings.php:
|
696 |
msgid "Make sure you know what you are doing before checking this."
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: admin/partials/settings.php:
|
700 |
msgid "Enable the Telemetry Tracker"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
704 |
msgid "Toggles the Telemetry Tracker On/Off. (experimental)"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: admin/partials/settings.php:
|
708 |
msgid "Privacy Center"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: admin/partials/settings.php:
|
712 |
msgid "This section handles the privacy bar and some of the privacy preferences window."
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: admin/partials/settings.php:
|
716 |
msgid "Important:"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: admin/partials/settings.php:
|
720 |
msgid "If the privacy banner text is not filled out, the privacy banner will not show up. Even if you registered your cookies."
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: admin/partials/settings.php:
|
724 |
-
msgid "Privacy
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
msgid "Privacy Excerpt"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
732 |
msgid "This will appear in the consent section of the privacy preference window."
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: admin/partials/settings.php:
|
736 |
msgid "Request Forms reCAPTCHA"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: admin/partials/settings.php:
|
740 |
msgid "To prevent spam attacks, you have the option to enable reCAPTCHA. Configure below your keys to make it work with our request forms."
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: admin/partials/settings.php:
|
744 |
msgid "You can find the necessary information %s."
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: admin/partials/settings.php:
|
748 |
msgid "here"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: admin/partials/settings.php:
|
752 |
msgid "Enable reCAPTCHA"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: admin/partials/settings.php:
|
756 |
msgid "Site Key"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: admin/partials/settings.php:
|
760 |
msgid "Secret Key"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: admin/partials/settings.php:
|
764 |
msgid "WooCommerce"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: admin/partials/settings.php:
|
768 |
msgid "Add consent checkboxes to the registration page"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: admin/partials/settings.php:
|
772 |
msgid "Add consent checkboxes to the checkout registration form"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
776 |
msgid "Category name"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: admin/partials/settings.php:
|
780 |
msgid "Add tab"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: admin/partials/settings.php:
|
784 |
msgid "Remove this tab."
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: admin/partials/settings.php:
|
788 |
-
msgid "
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: admin/partials/settings.php:
|
792 |
-
msgid "
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: admin/partials/settings.php:
|
796 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: admin/partials/settings.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
800 |
msgid "Comma separated list."
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: admin/partials/settings.php:
|
804 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: admin/partials/settings.php:
|
808 |
msgid "Add"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: admin/partials/settings.php:
|
812 |
msgid "Cookies that are set by a third party, like facebook.com."
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: admin/partials/settings.php:
|
816 |
msgid "Remove this domain."
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: admin/partials/settings.php:
|
820 |
-
msgid "
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: admin/partials/settings.php:
|
824 |
-
msgid "
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: admin/partials/settings.php:
|
828 |
-
msgid "
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: admin/partials/settings.php:
|
832 |
-
msgid "
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: admin/partials/settings.php:
|
836 |
-
msgid "
|
837 |
msgstr ""
|
838 |
|
839 |
-
#: admin/partials/settings.php:
|
840 |
-
msgid "
|
841 |
msgstr ""
|
842 |
|
843 |
-
#: admin/partials/settings.php:
|
844 |
msgid "Unregister this consent."
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: admin/partials/settings.php:
|
848 |
-
msgid "
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: admin/partials/settings.php:
|
852 |
-
msgid "
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: admin/partials/settings.php:
|
856 |
-
msgid "
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: admin/partials/settings.php:
|
860 |
-
msgid "
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: admin/partials/settings.php:
|
864 |
-
msgid "
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: admin/partials/settings.php:
|
868 |
-
msgid "
|
869 |
msgstr ""
|
870 |
|
871 |
#: admin/partials/tools.php:32
|
@@ -893,7 +1002,7 @@ msgid "Nature of the personal data breach"
|
|
893 |
msgstr ""
|
894 |
|
895 |
#: admin/partials/tools.php:88
|
896 |
-
msgid "Describe the nature of the personal data breach including where possible, the categories and approximate number of data subjects concerned and the categories and approximate number of personal data records concerned."
|
897 |
msgstr ""
|
898 |
|
899 |
#: admin/partials/tools.php:92
|
@@ -901,7 +1010,7 @@ msgid "Name and contact details of the data protection officer"
|
|
901 |
msgstr ""
|
902 |
|
903 |
#: admin/partials/tools.php:95
|
904 |
-
msgid "Communicate the name and contact details of the data protection officer or
|
905 |
msgstr ""
|
906 |
|
907 |
#: admin/partials/tools.php:99
|
@@ -932,52 +1041,36 @@ msgstr ""
|
|
932 |
msgid "Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?"
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: public/partials/confirmation-screens.php:
|
936 |
-
msgid "Cancel"
|
937 |
-
msgstr ""
|
938 |
-
|
939 |
-
#: public/partials/confirmation-screens.php:34
|
940 |
-
msgid "Error!"
|
941 |
-
msgstr ""
|
942 |
-
|
943 |
-
#: public/partials/confirmation-screens.php:36
|
944 |
msgid "Your account"
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: public/partials/confirmation-screens.php:
|
948 |
msgid "Your account has been closed. We are sorry to see you go."
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: public/partials/confirmation-screens.php:
|
952 |
msgid "Your request has been received and is being reviewed. You will receive an email when we are done."
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: public/partials/confirmation-screens.php:
|
956 |
-
msgid "
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: public/partials/confirmation-screens.php:
|
960 |
-
msgid "We
|
961 |
msgstr ""
|
962 |
|
963 |
#: public/partials/confirmation-screens.php:51
|
964 |
-
msgid "
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: public/partials/confirmation-screens.php:
|
968 |
-
msgid "
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: public/partials/confirmation-screens.php:
|
972 |
-
msgid "
|
973 |
-
msgstr ""
|
974 |
-
|
975 |
-
#: public/partials/confirmation-screens.php:58
|
976 |
-
msgid "Your request has been received. We will be in touch soon."
|
977 |
-
msgstr ""
|
978 |
-
|
979 |
-
#: public/partials/confirmation-screens.php:61
|
980 |
-
msgid "There was a problem with your request. Please try again later."
|
981 |
msgstr ""
|
982 |
|
983 |
#: public/partials/delete-form.php:22
|
@@ -996,60 +1089,28 @@ msgstr ""
|
|
996 |
msgid "Options"
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: public/partials/privacy-preferences-modal.php:
|
1000 |
msgid "Cookie Settings"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: public/partials/privacy-preferences-modal.php:84
|
1004 |
-
msgid "Cookies Used"
|
1005 |
-
msgstr ""
|
1006 |
-
|
1007 |
#: public/partials/privacy-preferences-modal.php:101
|
1008 |
-
msgid "
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: public/partials/privacy-preferences-modal.php:
|
1012 |
msgid "Opt Out"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: public/partials/privacy-preferences-modal.php:
|
1016 |
msgid "Save Preferences"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: public/partials/
|
1020 |
-
msgid "
|
1021 |
-
msgstr ""
|
1022 |
-
|
1023 |
-
#: public/partials/reconsent-modal.php:3
|
1024 |
-
msgid "Our Privacy Policy has been updated."
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: public/partials/reconsent-
|
1028 |
-
msgid "
|
1029 |
-
msgstr ""
|
1030 |
-
|
1031 |
-
#: public/partials/reconsent-modal.php:9
|
1032 |
-
msgid "Agree"
|
1033 |
-
msgstr ""
|
1034 |
-
|
1035 |
-
#: public/partials/reconsent-modal.php:10
|
1036 |
-
msgid "Disagree"
|
1037 |
-
msgstr ""
|
1038 |
-
|
1039 |
-
#: public/partials/reconsent-modal.php:13
|
1040 |
-
msgid "Updating"
|
1041 |
-
msgstr ""
|
1042 |
-
|
1043 |
-
#: public/partials/reconsent-modal.php:22
|
1044 |
-
msgid "Are you sure?"
|
1045 |
-
msgstr ""
|
1046 |
-
|
1047 |
-
#: public/partials/reconsent-modal.php:27
|
1048 |
-
msgid "By disagreeing you will no longer have access to our site and will be logged out."
|
1049 |
-
msgstr ""
|
1050 |
-
|
1051 |
-
#: public/partials/reconsent-modal.php:30
|
1052 |
-
msgid "Continue"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
#: templates/email/complaint-request.php:4
|
@@ -1218,12 +1279,32 @@ msgid ""
|
|
1218 |
"If you have any problems or questions, don't hesitate to contact us."
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: admin/partials/templates/tmpl-cookies.php:
|
1222 |
-
msgid "
|
|
|
|
|
|
|
|
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
#: admin/partials/templates/tmpl-cookies.php:
|
1226 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1227 |
msgstr ""
|
1228 |
|
1229 |
#: admin/partials/templates/tmpl-tools.php:3, admin/partials/templates/tmpl-tools.php:23
|
25 |
msgid "Tools"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: admin/class-gdpr-admin.php:130
|
29 |
msgid "Settings"
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: admin/class-gdpr-admin.php:296, includes/class-gdpr-help.php:38, includes/class-gdpr-help.php:43, admin/partials/requests.php:32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
msgid "Rectify Data"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: admin/class-gdpr-admin.php:300
|
37 |
msgid "Complaint"
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: admin/class-gdpr-admin.php:304, includes/class-gdpr-help.php:56
|
41 |
msgid "Erasure"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: admin/class-gdpr-admin.php:321, includes/class-gdpr-help.php:81, includes/class-gdpr-help.php:85, admin/partials/tools.php:55
|
45 |
msgid "Access Data"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: admin/class-gdpr-admin.php:322, includes/class-gdpr-help.php:95, admin/partials/tools.php:72
|
49 |
msgid "Data Breach"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: admin/class-gdpr-admin.php:323, includes/class-gdpr-help.php:99, includes/class-gdpr-help.php:106, admin/partials/tools.php:117
|
53 |
msgid "Audit Log"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: admin/class-gdpr-admin.php:395
|
57 |
msgid "Consent Given"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: admin/class-gdpr-admin.php:399
|
61 |
msgid "Consent ID"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: admin/class-gdpr-admin.php:411, admin/partials/requests.php:275
|
65 |
msgid "Comments"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: admin/class-gdpr-admin.php:416
|
69 |
msgid "Comment Field"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: admin/class-gdpr-admin.php:417
|
73 |
msgid "Comment Data"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: admin/class-gdpr-admin.php:453
|
77 |
msgid "Metadata"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: admin/class-gdpr-admin.php:457
|
81 |
msgid "Name"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: admin/class-gdpr-admin.php:458
|
85 |
msgid "Value"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: admin/class-gdpr-admin.php:507
|
89 |
msgid "No logs found for this email."
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: admin/class-gdpr-admin.php:519
|
93 |
+
msgid "Review your settings"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin/class-gdpr-admin.php:520
|
97 |
+
msgid "We have added a few new options which must be reviewed before continuing to use the plugin."
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: admin/class-gdpr-admin.php:521
|
101 |
+
msgid "For cookies, we have added a status which allows you to set them as ON, OFF or Required. For consents, we moved the policy selector into each consent. All policies can now be tracked through this."
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: admin/class-gdpr-admin.php:522
|
105 |
+
msgid "Please keep in mind the plugin might not work as intended until these settings are reviewed."
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: admin/class-gdpr-admin.php:557
|
109 |
+
msgid "Your %s page has been updated."
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: admin/class-gdpr-admin.php:559
|
113 |
+
msgid "In case this was not a small typo fix, you must ask users for explicit consent again."
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: admin/class-gdpr-admin.php:568
|
117 |
msgid "Ask for consent"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: admin/class-gdpr-admin.php:577
|
121 |
msgid "Ignore"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: admin/class-gdpr-admin.php:592, admin/class-gdpr-admin.php:731, admin/class-gdpr-admin.php:796, public/class-gdpr-public.php:196, public/class-gdpr-public.php:293, public/class-gdpr-public.php:352
|
125 |
msgid "We could not verify the the security token. Please try again."
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: admin/class-gdpr-admin.php:604
|
129 |
msgid "One or more required fields are missing. Please try again."
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: admin/class-gdpr-admin.php:651
|
133 |
msgid "Data breach notification has been initialized. An email confirmation has been sent to the website controller."
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: admin/class-gdpr-admin.php:714
|
137 |
msgid "ERROR"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: admin/class-gdpr-admin.php:716
|
141 |
msgid "is a required consent"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#. translators: 1: The name of the policy that was updated.
|
145 |
+
#: admin/class-gdpr-admin.php:749
|
146 |
+
msgid "%1$s has been updated. Removing the %1$s consent and requesting new consent."
|
|
|
|
|
|
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: admin/class-gdpr-admin.php:819, includes/class-gdpr-help.php:161, public/partials/privacy-preferences-modal.php:32, public/partials/privacy-preferences-modal.php:63
|
150 |
msgid "Consent Management"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: admin/class-gdpr-admin.php:856
|
154 |
msgid "Profile Updated. These are the user consents after the save:"
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: admin/class-gdpr-admin.php:929, admin/partials/settings.php:332
|
158 |
+
msgid "Consents"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
#: admin/class-gdpr-requests-admin.php:30, admin/class-gdpr-requests-admin.php:155, admin/class-gdpr-requests-admin.php:203, admin/class-gdpr-requests-admin.php:240
|
162 |
msgid "We could not verify the user email or the security token. Please try again."
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: admin/class-gdpr-requests-admin.php:37, admin/class-gdpr-requests-admin.php:286, admin/class-gdpr-requests-admin.php:331, public/class-gdpr-requests-public.php:121, public/partials/confirmation-screens.php:55
|
166 |
msgid "User not found."
|
167 |
msgstr ""
|
168 |
|
217 |
msgid "User %s was deleted from the site."
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: admin/class-gdpr-requests-admin.php:278, admin/class-gdpr-requests-admin.php:317, public/class-gdpr-requests-public.php:82
|
221 |
msgid "We could not verify the security token. Please try again."
|
222 |
msgstr ""
|
223 |
|
384 |
msgstr ""
|
385 |
|
386 |
#: includes/class-gdpr-help.php:58
|
387 |
+
msgid "User may request their data to be deleted. The controller has, according to GDPR, 30 days to fulfill the request. On some occasions, you can ask to extend this time limit. When the request has been resolved the user will receive a notification that their account has been closed."
|
388 |
msgstr ""
|
389 |
|
390 |
#: includes/class-gdpr-help.php:61
|
448 |
msgstr ""
|
449 |
|
450 |
#: includes/class-gdpr-help.php:128
|
451 |
+
msgid "Fill out every information you can about the cookies your site uses. Set the cookies that you set under Cookies Used and cookies used and set by third parties under the Third party domains."
|
452 |
msgstr ""
|
453 |
|
454 |
#: includes/class-gdpr-help.php:130
|
519 |
msgid "User request expired. Removing %s user_meta."
|
520 |
msgstr ""
|
521 |
|
522 |
+
#: includes/class-gdpr.php:304
|
523 |
msgid "User registered to the site."
|
524 |
msgstr ""
|
525 |
|
526 |
#. translators: Name of consent
|
527 |
+
#: includes/class-gdpr.php:311
|
528 |
msgid "User gave explicit consent to %s"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: includes/helper-functions.php:26, public/partials/privacy-bar.php:36
|
532 |
msgid "Privacy Preferences"
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: public/class-gdpr-public.php:125
|
536 |
msgid "Aborting"
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: public/class-gdpr-public.php:126
|
540 |
+
msgid "Continue"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: public/class-gdpr-public.php:127, public/partials/confirmation-screens.php:27
|
544 |
+
msgid "Cancel"
|
545 |
msgstr ""
|
546 |
|
547 |
+
#: public/class-gdpr-public.php:128, public/partials/confirmation-screens.php:79
|
548 |
+
msgid "OK"
|
549 |
+
msgstr ""
|
550 |
+
|
551 |
+
#: public/class-gdpr-public.php:145, public/partials/reconsent-bar.php:31
|
552 |
+
msgid "I Agree"
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: public/class-gdpr-public.php:196, public/class-gdpr-public.php:352, public/class-gdpr-requests-public.php:78, public/class-gdpr-requests-public.php:82, public/class-gdpr-requests-public.php:92, public/class-gdpr-requests-public.php:105, public/class-gdpr-requests-public.php:121, public/class-gdpr-requests-public.php:144, public/class-gdpr-requests-public.php:152, public/class-gdpr-requests-public.php:198, public/partials/confirmation-screens.php:50, public/partials/confirmation-screens.php:54, public/partials/confirmation-screens.php:58, public/partials/confirmation-screens.php:62
|
556 |
+
msgid "Error!"
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
#: public/class-gdpr-public.php:232
|
560 |
+
msgid "User updated their privacy preferences. These are the new approved cookies and consent preferences:"
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: public/class-gdpr-requests-public.php:78
|
564 |
msgid "Invalid type of request. Please try again."
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: public/class-gdpr-requests-public.php:92, public/class-gdpr-requests-public.php:105
|
568 |
msgid "Please verify that you are not a robot."
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: public/class-gdpr-requests-public.php:144
|
572 |
+
msgid "We can't delete this user."
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: public/class-gdpr-requests-public.php:152
|
576 |
+
msgid "Required information is missing from the form."
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: public/class-gdpr-requests-public.php:196
|
580 |
+
msgid "Email confirmation"
|
581 |
+
msgstr ""
|
582 |
+
|
583 |
+
#: public/class-gdpr-requests-public.php:196
|
584 |
+
msgid "We've sent you a confirmation email."
|
585 |
+
msgstr ""
|
586 |
+
|
587 |
+
#: public/class-gdpr-requests-public.php:198
|
588 |
+
msgid "There was a problem with your request. Please try again later."
|
589 |
+
msgstr ""
|
590 |
+
|
591 |
+
#: public/class-gdpr-requests-public.php:275
|
592 |
msgid "User confirmed a request to be deleted."
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: public/class-gdpr-requests-public.php:277
|
596 |
msgid "Content was found for that user."
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: public/class-gdpr-requests-public.php:279
|
600 |
msgid "User added to the erasure review table."
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: public/class-gdpr-requests-public.php:313
|
604 |
msgid "User placed a request for rectification or a complaint."
|
605 |
msgstr ""
|
606 |
|
607 |
#. translators: File format. Can be XML or JSON
|
608 |
+
#: public/class-gdpr-requests-public.php:330
|
609 |
msgid "User downloaded all their data in %s format."
|
610 |
msgstr ""
|
611 |
|
697 |
msgid "Anonymize"
|
698 |
msgstr ""
|
699 |
|
700 |
+
#: admin/partials/settings.php:2
|
701 |
+
msgid "GDPR Settings"
|
702 |
msgstr ""
|
703 |
|
704 |
+
#: admin/partials/settings.php:14
|
705 |
+
msgid "Outgoing email limit"
|
706 |
msgstr ""
|
707 |
|
708 |
+
#: admin/partials/settings.php:15, admin/partials/settings.php:16
|
709 |
+
msgid "This is the hourly outgoing email limit set by your server."
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: admin/partials/settings.php:23
|
713 |
+
msgid "Emails/hour"
|
714 |
+
msgstr ""
|
715 |
+
|
716 |
+
#: admin/partials/settings.php:28
|
717 |
msgid "User deletion"
|
718 |
msgstr ""
|
719 |
|
720 |
+
#: admin/partials/settings.php:29, admin/partials/settings.php:30
|
721 |
+
msgid "Useful if you need to remove the user from third-party services."
|
722 |
+
msgstr ""
|
723 |
+
|
724 |
+
#: admin/partials/settings.php:36
|
725 |
msgid "Send all deletion requests to the review table."
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: admin/partials/settings.php:41
|
729 |
+
msgid "Refresh page after updating preferences"
|
730 |
+
msgstr ""
|
731 |
+
|
732 |
+
#: admin/partials/settings.php:46
|
733 |
+
msgid "Useful for landing pages or to track a visit with Google Analytics."
|
734 |
+
msgstr ""
|
735 |
+
|
736 |
+
#: admin/partials/settings.php:51
|
737 |
msgid "Disable CSS"
|
738 |
msgstr ""
|
739 |
|
740 |
+
#: admin/partials/settings.php:55
|
741 |
msgid "Make sure you know what you are doing before checking this."
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: admin/partials/settings.php:60
|
745 |
msgid "Enable the Telemetry Tracker"
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: admin/partials/settings.php:61, admin/partials/settings.php:62
|
749 |
+
msgid "This tracks data that is being sent to outside servers."
|
750 |
+
msgstr ""
|
751 |
+
|
752 |
+
#: admin/partials/settings.php:68
|
753 |
msgid "Toggles the Telemetry Tracker On/Off. (experimental)"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: admin/partials/settings.php:74
|
757 |
msgid "Privacy Center"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: admin/partials/settings.php:76
|
761 |
msgid "This section handles the privacy bar and some of the privacy preferences window."
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: admin/partials/settings.php:77
|
765 |
msgid "Important:"
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: admin/partials/settings.php:77
|
769 |
msgid "If the privacy banner text is not filled out, the privacy banner will not show up. Even if you registered your cookies."
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: admin/partials/settings.php:82
|
773 |
+
msgid "Enable the Privacy Bar"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: admin/partials/settings.php:86
|
777 |
+
msgid "Toggles the Privacy Bar On/Off."
|
778 |
+
msgstr ""
|
779 |
+
|
780 |
+
#: admin/partials/settings.php:91
|
781 |
+
msgid "Display the cookie categories in the privacy bar"
|
782 |
+
msgstr ""
|
783 |
+
|
784 |
+
#: admin/partials/settings.php:100
|
785 |
+
msgid "Privacy Bar Content"
|
786 |
+
msgstr ""
|
787 |
+
|
788 |
+
#: admin/partials/settings.php:101, admin/partials/settings.php:102
|
789 |
+
msgid "This is required if you want the privacy bar to show up."
|
790 |
+
msgstr ""
|
791 |
+
|
792 |
+
#: admin/partials/settings.php:113
|
793 |
msgid "Privacy Excerpt"
|
794 |
msgstr ""
|
795 |
|
796 |
+
#: admin/partials/settings.php:114, admin/partials/settings.php:115
|
797 |
+
msgid "This show up in the privacy preferences window."
|
798 |
+
msgstr ""
|
799 |
+
|
800 |
+
#: admin/partials/settings.php:122
|
801 |
msgid "This will appear in the consent section of the privacy preference window."
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: admin/partials/settings.php:128
|
805 |
msgid "Request Forms reCAPTCHA"
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: admin/partials/settings.php:129
|
809 |
msgid "To prevent spam attacks, you have the option to enable reCAPTCHA. Configure below your keys to make it work with our request forms."
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: admin/partials/settings.php:133
|
813 |
msgid "You can find the necessary information %s."
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: admin/partials/settings.php:134
|
817 |
msgid "here"
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: admin/partials/settings.php:140
|
821 |
msgid "Enable reCAPTCHA"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: admin/partials/settings.php:149
|
825 |
msgid "Site Key"
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: admin/partials/settings.php:158
|
829 |
msgid "Secret Key"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: admin/partials/settings.php:169
|
833 |
msgid "WooCommerce"
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: admin/partials/settings.php:174
|
837 |
msgid "Add consent checkboxes to the registration page"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: admin/partials/settings.php:183
|
841 |
msgid "Add consent checkboxes to the checkout registration form"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: admin/partials/settings.php:195
|
845 |
+
msgid "Cookies"
|
846 |
+
msgstr ""
|
847 |
+
|
848 |
+
#: admin/partials/settings.php:196
|
849 |
msgid "Category name"
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: admin/partials/settings.php:197
|
853 |
msgid "Add tab"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: admin/partials/settings.php:201
|
857 |
msgid "Remove this tab."
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: admin/partials/settings.php:207, admin/partials/templates/tmpl-cookies.php:9
|
861 |
+
msgid "Category Name"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/partials/settings.php:208, admin/partials/settings.php:209
|
865 |
+
msgid "Change this value if you want to name it something different."
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/partials/settings.php:221, admin/partials/templates/tmpl-cookies.php:23
|
869 |
+
msgid "Status"
|
870 |
+
msgstr ""
|
871 |
+
|
872 |
+
#: admin/partials/settings.php:222, admin/partials/settings.php:223
|
873 |
+
msgid "Required cookies are cookies that cannot be opted out of and need to be created for the site to function properly. The ON status means that the cookie preference for this category will be enabled by default. The OFF status means the user needs to manually turn these cookies on to opt into these cookies."
|
874 |
+
msgstr ""
|
875 |
+
|
876 |
+
#: admin/partials/settings.php:231, public/partials/privacy-preferences-modal.php:73, public/partials/privacy-preferences-modal.php:118, admin/partials/templates/tmpl-cookies.php:33
|
877 |
+
msgid "Required"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: admin/partials/settings.php:232, admin/partials/templates/tmpl-cookies.php:34
|
881 |
+
msgid "ON"
|
882 |
+
msgstr ""
|
883 |
+
|
884 |
+
#: admin/partials/settings.php:233, admin/partials/templates/tmpl-cookies.php:35
|
885 |
+
msgid "OFF"
|
886 |
+
msgstr ""
|
887 |
+
|
888 |
+
#: admin/partials/settings.php:240, admin/partials/settings.php:293, admin/partials/templates/tmpl-cookies.php:42, admin/partials/templates/tmpl-cookies.php:99
|
889 |
+
msgid "Cookies used"
|
890 |
+
msgstr ""
|
891 |
+
|
892 |
+
#: admin/partials/settings.php:241, admin/partials/settings.php:242
|
893 |
+
msgid "A comma-separated list of cookies that your site is using that fit this category."
|
894 |
+
msgstr ""
|
895 |
+
|
896 |
+
#: admin/partials/settings.php:250, admin/partials/templates/tmpl-cookies.php:52, admin/partials/templates/tmpl-cookies.php:103
|
897 |
msgid "Comma separated list."
|
898 |
msgstr ""
|
899 |
|
900 |
+
#: admin/partials/settings.php:256, admin/partials/templates/tmpl-cookies.php:58
|
901 |
+
msgid "How are these used"
|
902 |
+
msgstr ""
|
903 |
+
|
904 |
+
#: admin/partials/settings.php:257, admin/partials/settings.php:258
|
905 |
+
msgid "A brief explanation of why you are requesting to use these cookies, what they are for, and how you process them."
|
906 |
+
msgstr ""
|
907 |
+
|
908 |
+
#: admin/partials/settings.php:268, admin/partials/templates/tmpl-cookies.php:70
|
909 |
+
msgid "Third party domain"
|
910 |
+
msgstr ""
|
911 |
+
|
912 |
+
#: admin/partials/settings.php:269, admin/partials/settings.php:270
|
913 |
+
msgid "E.g. facebook.com"
|
914 |
msgstr ""
|
915 |
|
916 |
+
#: admin/partials/settings.php:277, admin/partials/templates/tmpl-cookies.php:79
|
917 |
msgid "Add"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: admin/partials/settings.php:279, admin/partials/templates/tmpl-cookies.php:81
|
921 |
msgid "Cookies that are set by a third party, like facebook.com."
|
922 |
msgstr ""
|
923 |
|
924 |
+
#: admin/partials/settings.php:287, admin/partials/templates/tmpl-cookies.php:94
|
925 |
msgid "Remove this domain."
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: admin/partials/settings.php:294, admin/partials/settings.php:295
|
929 |
+
msgid "A comma separated list of cookies that your site is using from this third-party provider."
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: admin/partials/settings.php:307
|
933 |
+
msgid "Opt Out Link"
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: admin/partials/settings.php:308, admin/partials/settings.php:309
|
937 |
+
msgid "Add a link with the third-party instructions on how to opt out of their cookies."
|
938 |
msgstr ""
|
939 |
|
940 |
+
#: admin/partials/settings.php:317, admin/partials/templates/tmpl-cookies.php:111
|
941 |
+
msgid "Url with instructions on how to opt out."
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: admin/partials/settings.php:333
|
945 |
+
msgid "E.g. Privacy Policy or Cookie Policy"
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: admin/partials/settings.php:334
|
949 |
+
msgid "Add consent"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: admin/partials/settings.php:339, admin/partials/templates/tmpl-consents.php:3
|
953 |
msgid "Unregister this consent."
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: admin/partials/settings.php:346, admin/partials/templates/tmpl-consents.php:10
|
957 |
+
msgid "Policy Page"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: admin/partials/settings.php:347, admin/partials/settings.php:348, admin/partials/templates/tmpl-consents.php:11, admin/partials/templates/tmpl-consents.php:12
|
961 |
+
msgid "This page will be tracked for changes and you will be prompted to ask users to re-consent to the new policy. Selecting a page will make this consent required."
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: admin/partials/settings.php:365, admin/partials/templates/tmpl-consents.php:29
|
965 |
+
msgid "Long description"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: admin/partials/settings.php:366, admin/partials/settings.php:367, admin/partials/templates/tmpl-consents.php:30, admin/partials/templates/tmpl-consents.php:31
|
969 |
+
msgid "This will show up at the privacy preferences center, under the name of the consent."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: admin/partials/settings.php:377, admin/partials/templates/tmpl-consents.php:41
|
973 |
+
msgid "Short description"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: admin/partials/settings.php:378, admin/partials/settings.php:379, admin/partials/templates/tmpl-consents.php:42, admin/partials/templates/tmpl-consents.php:43
|
977 |
+
msgid "This will show up at registration forms next to checkboxes."
|
978 |
msgstr ""
|
979 |
|
980 |
#: admin/partials/tools.php:32
|
1002 |
msgstr ""
|
1003 |
|
1004 |
#: admin/partials/tools.php:88
|
1005 |
+
msgid "Describe the nature of the personal data breach including where possible, the categories and the approximate number of data subjects concerned and the categories and the approximate number of personal data records concerned."
|
1006 |
msgstr ""
|
1007 |
|
1008 |
#: admin/partials/tools.php:92
|
1010 |
msgstr ""
|
1011 |
|
1012 |
#: admin/partials/tools.php:95
|
1013 |
+
msgid "Communicate the name and contact details of the data protection officer or another point of contact where more information can be obtained."
|
1014 |
msgstr ""
|
1015 |
|
1016 |
#: admin/partials/tools.php:99
|
1041 |
msgid "Your account will be closed and all data will be permanently deleted and cannot be recovered. Are you sure?"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
+
#: public/partials/confirmation-screens.php:38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1045 |
msgid "Your account"
|
1046 |
msgstr ""
|
1047 |
|
1048 |
+
#: public/partials/confirmation-screens.php:40
|
1049 |
msgid "Your account has been closed. We are sorry to see you go."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
+
#: public/partials/confirmation-screens.php:42
|
1053 |
msgid "Your request has been received and is being reviewed. You will receive an email when we are done."
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: public/partials/confirmation-screens.php:46
|
1057 |
+
msgid "Request Received"
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: public/partials/confirmation-screens.php:47
|
1061 |
+
msgid "Your request has been received. We will be in touch soon."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
#: public/partials/confirmation-screens.php:51
|
1065 |
+
msgid "Malformed request confirmation link!"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: public/partials/confirmation-screens.php:59
|
1069 |
+
msgid "We could not confirm the request key. It may be expired."
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: public/partials/confirmation-screens.php:63
|
1073 |
+
msgid "The key used does not match the request key we have stored."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1074 |
msgstr ""
|
1075 |
|
1076 |
#: public/partials/delete-form.php:22
|
1089 |
msgid "Options"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: public/partials/privacy-preferences-modal.php:35
|
1093 |
msgid "Cookie Settings"
|
1094 |
msgstr ""
|
1095 |
|
|
|
|
|
|
|
|
|
1096 |
#: public/partials/privacy-preferences-modal.php:101
|
1097 |
+
msgid "Cookies Used"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: public/partials/privacy-preferences-modal.php:137
|
1101 |
msgid "Opt Out"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
+
#: public/partials/privacy-preferences-modal.php:152
|
1105 |
msgid "Save Preferences"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: public/partials/reconsent-bar.php:18
|
1109 |
+
msgid "Some of our policies have been updated. Please make sure to select the \"View\" link next each item in order to view changes before agreeing."
|
|
|
|
|
|
|
|
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: public/partials/reconsent-bar.php:26
|
1113 |
+
msgid "View"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1114 |
msgstr ""
|
1115 |
|
1116 |
#: templates/email/complaint-request.php:4
|
1279 |
"If you have any problems or questions, don't hesitate to contact us."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
+
#: admin/partials/templates/tmpl-cookies.php:10, admin/partials/templates/tmpl-cookies.php:11
|
1283 |
+
msgid "Change this value if you want to rename this category something different."
|
1284 |
+
msgstr ""
|
1285 |
+
|
1286 |
+
#: admin/partials/templates/tmpl-cookies.php:24, admin/partials/templates/tmpl-cookies.php:25
|
1287 |
+
msgid "Required cookies are cookies that cannot be opt out. They need to be created for the site to function properly. Status ON means that the cookie will be set after agreement. Status OFF means the user needs to check the checkbox to activate this category."
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: admin/partials/templates/tmpl-cookies.php:43, admin/partials/templates/tmpl-cookies.php:44
|
1291 |
+
msgid "A comma separated list of cookies that your site is using that fit this category."
|
1292 |
+
msgstr ""
|
1293 |
+
|
1294 |
+
#: admin/partials/templates/tmpl-cookies.php:59, admin/partials/templates/tmpl-cookies.php:60
|
1295 |
+
msgid "A brief explanation on why you are requesting to use these cookies, what they are for and how you process them."
|
1296 |
+
msgstr ""
|
1297 |
+
|
1298 |
+
#: admin/partials/templates/tmpl-cookies.php:71, admin/partials/templates/tmpl-cookies.php:72
|
1299 |
+
msgid "E.g. youtube.com"
|
1300 |
+
msgstr ""
|
1301 |
+
|
1302 |
+
#: admin/partials/templates/tmpl-cookies.php:78
|
1303 |
+
msgid "domain.com"
|
1304 |
+
msgstr ""
|
1305 |
+
|
1306 |
+
#: admin/partials/templates/tmpl-cookies.php:107
|
1307 |
+
msgid "How to Opt Out"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
#: admin/partials/templates/tmpl-tools.php:3, admin/partials/templates/tmpl-tools.php:23
|
public/class-gdpr-public.php
CHANGED
@@ -121,9 +121,14 @@ class GDPR_Public {
|
|
121 |
wp_enqueue_script( $this->plugin_name, plugin_dir_url( dirname( __FILE__ ) ) . 'assets/js/gdpr-public.js', array( 'jquery' ), $this->version, false );
|
122 |
wp_localize_script( $this->plugin_name, 'GDPR', array(
|
123 |
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
124 |
-
'
|
|
|
|
|
|
|
|
|
|
|
125 |
'is_user_logged_in' => is_user_logged_in(),
|
126 |
-
'
|
127 |
) );
|
128 |
}
|
129 |
|
@@ -133,11 +138,13 @@ class GDPR_Public {
|
|
133 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
134 |
*/
|
135 |
public function privacy_bar() {
|
136 |
-
$
|
137 |
-
$
|
138 |
-
$
|
|
|
|
|
139 |
|
140 |
-
if ( empty( $content ) ) {
|
141 |
return;
|
142 |
}
|
143 |
|
@@ -152,7 +159,6 @@ class GDPR_Public {
|
|
152 |
public function privacy_preferences_modal() {
|
153 |
$cookie_privacy_excerpt = get_option( 'gdpr_cookie_privacy_excerpt', '' );
|
154 |
$consent_types = get_option( 'gdpr_consent_types', array() );
|
155 |
-
$privacy_policy_page = get_option( 'gdpr_privacy_policy_page', 0 );
|
156 |
$approved_cookies = isset( $_COOKIE['gdpr']['allowed_cookies'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['allowed_cookies'] ) ) : array();
|
157 |
$user_consents = isset( $_COOKIE['gdpr']['consent_types'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['consent_types'] ) ) : array();
|
158 |
$tabs = get_option( 'gdpr_cookie_popup_content', array() );
|
@@ -181,19 +187,15 @@ class GDPR_Public {
|
|
181 |
/**
|
182 |
* Update the user allowed cookies and types of consent.
|
183 |
* If the user is logged in, we also save consent to user meta.
|
184 |
-
*
|
|
|
185 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
186 |
*/
|
187 |
public function update_privacy_preferences() {
|
188 |
-
if ( ! isset( $_POST['update-privacy-preferences-nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['update-privacy-preferences-nonce'] ), 'gdpr-
|
189 |
-
|
190 |
-
}
|
191 |
-
|
192 |
-
if ( ! isset( $_POST['user_consents'] ) ) {
|
193 |
-
wp_die( esc_html__( "You need to at least consent to our Privacy Policy.", 'gdpr' ) );
|
194 |
}
|
195 |
-
|
196 |
-
$consents = array_map( 'sanitize_text_field', (array) $_POST['user_consents'] );
|
197 |
$cookies = isset( $_POST['approved_cookies'] ) ? array_map( 'sanitize_text_field', (array) $_POST['approved_cookies'] ) : array();
|
198 |
$all_cookies = isset( $_POST['all_cookies'] ) ? array_map( 'sanitize_text_field', (array) json_decode( wp_unslash( $_POST['all_cookies'] ) ) ) : array();
|
199 |
|
@@ -245,8 +247,7 @@ class GDPR_Public {
|
|
245 |
|
246 |
}
|
247 |
|
248 |
-
|
249 |
-
exit;
|
250 |
}
|
251 |
|
252 |
/**
|
@@ -256,20 +257,30 @@ class GDPR_Public {
|
|
256 |
* @return bool Whether the user consented or not.
|
257 |
*/
|
258 |
public function is_consent_needed() {
|
259 |
-
$
|
260 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
return;
|
262 |
}
|
263 |
|
264 |
-
$
|
265 |
-
$user = wp_get_current_user();
|
266 |
$user_consents = get_user_meta( $user->ID, 'gdpr_consents' );
|
267 |
|
268 |
-
|
|
|
|
|
|
|
|
|
269 |
return;
|
270 |
}
|
271 |
|
272 |
-
include plugin_dir_path( __FILE__ ) . 'partials/reconsent-
|
273 |
}
|
274 |
|
275 |
/**
|
@@ -286,26 +297,6 @@ class GDPR_Public {
|
|
286 |
wp_send_json_success();
|
287 |
}
|
288 |
|
289 |
-
/**
|
290 |
-
* The user agreed with the privacy policy terms when prompted.
|
291 |
-
* @since 1.0.0
|
292 |
-
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
293 |
-
*/
|
294 |
-
public function agree_with_terms() {
|
295 |
-
if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['nonce'] ) ), 'gdpr-user_agree_with_terms' ) ) {
|
296 |
-
wp_send_json_error( esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) );
|
297 |
-
}
|
298 |
-
|
299 |
-
$user = wp_get_current_user();
|
300 |
-
$user_consents = get_user_meta( $user->ID, 'gdpr_consents' );
|
301 |
-
$user_consents[] = 'privacy-policy';
|
302 |
-
$user_consents = array_unique( $user_consents );
|
303 |
-
add_user_meta( $user->ID, 'gdpr_consents', 'privacy-policy' );
|
304 |
-
setcookie( "gdpr[consent_types]", json_encode( $user_consents ), time() + YEAR_IN_SECONDS, "/" );
|
305 |
-
GDPR_Audit_Log::log( $user->ID, esc_html__( 'User consented to the Privacy Policies.', 'gdpr' ) );
|
306 |
-
wp_send_json_success();
|
307 |
-
}
|
308 |
-
|
309 |
public function set_plugin_cookies() {
|
310 |
$user_id = get_current_user_id();
|
311 |
|
@@ -336,7 +327,7 @@ class GDPR_Public {
|
|
336 |
$cookies = array();
|
337 |
if ( ! empty( $registered_cookies ) ) {
|
338 |
$required_cookies = array_filter( $registered_cookies, function( $item ) {
|
339 |
-
return $item['
|
340 |
});
|
341 |
if ( ! empty( $required_cookies ) ) {
|
342 |
foreach ( $required_cookies as $category ) {
|
@@ -356,4 +347,20 @@ class GDPR_Public {
|
|
356 |
}
|
357 |
}
|
358 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
}
|
121 |
wp_enqueue_script( $this->plugin_name, plugin_dir_url( dirname( __FILE__ ) ) . 'assets/js/gdpr-public.js', array( 'jquery' ), $this->version, false );
|
122 |
wp_localize_script( $this->plugin_name, 'GDPR', array(
|
123 |
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
124 |
+
'i18n' => array(
|
125 |
+
'aborting' => esc_html__( 'Aborting', 'gdpr' ),
|
126 |
+
'continue' => esc_html__( 'Continue', 'gdpr' ),
|
127 |
+
'cancel' => esc_html__( 'Cancel', 'gdpr' ),
|
128 |
+
'ok' => esc_html__( 'OK', 'gdpr' ),
|
129 |
+
),
|
130 |
'is_user_logged_in' => is_user_logged_in(),
|
131 |
+
'refresh' => get_option( 'gdpr_refresh_after_preferences_update', true ),
|
132 |
) );
|
133 |
}
|
134 |
|
138 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
139 |
*/
|
140 |
public function privacy_bar() {
|
141 |
+
$privacy_bar_enabled = get_option( 'gdpr_enable_privacy_bar', true );
|
142 |
+
$content = get_option( 'gdpr_cookie_banner_content', '' );
|
143 |
+
$registered_cookies = get_option( 'gdpr_cookie_popup_content', array() );
|
144 |
+
$show_cookie_cat_checkboxes = get_option( 'gdpr_display_cookie_categories_in_bar', false );
|
145 |
+
$button_text = apply_filters( 'gdpr_privacy_bar_button_text', esc_html__( 'I Agree', 'gdpr' ) );
|
146 |
|
147 |
+
if ( empty( $content ) || ! $privacy_bar_enabled ) {
|
148 |
return;
|
149 |
}
|
150 |
|
159 |
public function privacy_preferences_modal() {
|
160 |
$cookie_privacy_excerpt = get_option( 'gdpr_cookie_privacy_excerpt', '' );
|
161 |
$consent_types = get_option( 'gdpr_consent_types', array() );
|
|
|
162 |
$approved_cookies = isset( $_COOKIE['gdpr']['allowed_cookies'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['allowed_cookies'] ) ) : array();
|
163 |
$user_consents = isset( $_COOKIE['gdpr']['consent_types'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['consent_types'] ) ) : array();
|
164 |
$tabs = get_option( 'gdpr_cookie_popup_content', array() );
|
187 |
/**
|
188 |
* Update the user allowed cookies and types of consent.
|
189 |
* If the user is logged in, we also save consent to user meta.
|
190 |
+
* Ajax version of a previous function.
|
191 |
+
* @since 2.0.0
|
192 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
193 |
*/
|
194 |
public function update_privacy_preferences() {
|
195 |
+
if ( ! isset( $_POST['update-privacy-preferences-nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['update-privacy-preferences-nonce'] ), 'gdpr-update-privacy-preferences' ) ) {
|
196 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) ) );
|
|
|
|
|
|
|
|
|
197 |
}
|
198 |
+
$consents = isset( $_POST['user_consents'] ) ? array_map( 'sanitize_text_field', (array) $_POST['user_consents'] ) : array();
|
|
|
199 |
$cookies = isset( $_POST['approved_cookies'] ) ? array_map( 'sanitize_text_field', (array) $_POST['approved_cookies'] ) : array();
|
200 |
$all_cookies = isset( $_POST['all_cookies'] ) ? array_map( 'sanitize_text_field', (array) json_decode( wp_unslash( $_POST['all_cookies'] ) ) ) : array();
|
201 |
|
247 |
|
248 |
}
|
249 |
|
250 |
+
wp_send_json_success();
|
|
|
251 |
}
|
252 |
|
253 |
/**
|
257 |
* @return bool Whether the user consented or not.
|
258 |
*/
|
259 |
public function is_consent_needed() {
|
260 |
+
$consents = get_option( 'gdpr_consent_types', array() );
|
261 |
+
if ( empty( $consents ) || ! is_array( $consents ) ) {
|
262 |
+
return;
|
263 |
+
}
|
264 |
+
$required_consents = array_filter( $consents, function( $consent ) {
|
265 |
+
return ! empty( $consent['policy-page'] );
|
266 |
+
} );
|
267 |
+
|
268 |
+
if ( ! $required_consents || ! is_user_logged_in() ) {
|
269 |
return;
|
270 |
}
|
271 |
|
272 |
+
$user = wp_get_current_user();
|
|
|
273 |
$user_consents = get_user_meta( $user->ID, 'gdpr_consents' );
|
274 |
|
275 |
+
$updated_consents = array_filter( $required_consents, function( $consent, $consent_id ) use ( $user_consents ) {
|
276 |
+
return ! in_array( $consent_id, $user_consents );
|
277 |
+
}, ARRAY_FILTER_USE_BOTH );
|
278 |
+
|
279 |
+
if ( empty( $updated_consents ) ) {
|
280 |
return;
|
281 |
}
|
282 |
|
283 |
+
include plugin_dir_path( __FILE__ ) . 'partials/reconsent-bar.php';
|
284 |
}
|
285 |
|
286 |
/**
|
297 |
wp_send_json_success();
|
298 |
}
|
299 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
public function set_plugin_cookies() {
|
301 |
$user_id = get_current_user_id();
|
302 |
|
327 |
$cookies = array();
|
328 |
if ( ! empty( $registered_cookies ) ) {
|
329 |
$required_cookies = array_filter( $registered_cookies, function( $item ) {
|
330 |
+
return 'required' === $item['status'];
|
331 |
});
|
332 |
if ( ! empty( $required_cookies ) ) {
|
333 |
foreach ( $required_cookies as $category ) {
|
347 |
}
|
348 |
}
|
349 |
|
350 |
+
public function agree_with_new_policies() {
|
351 |
+
if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'gdpr-agree-with-new-policies' ) ) {
|
352 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'We could not verify the the security token. Please try again.', 'gdpr' ) ) );
|
353 |
+
}
|
354 |
+
$consents = isset( $_POST['consents'] ) ? array_map( 'sanitize_text_field', (array) $_POST['consents'] ) : array();
|
355 |
+
$user_id = get_current_user_id();
|
356 |
+
|
357 |
+
foreach ( $consents as $consent ) {
|
358 |
+
error_log($consent);
|
359 |
+
error_log($user_id);
|
360 |
+
add_user_meta( $user_id, 'gdpr_consents', $consent );
|
361 |
+
}
|
362 |
+
|
363 |
+
wp_send_json_success();
|
364 |
+
}
|
365 |
+
|
366 |
}
|
public/class-gdpr-requests-public.php
CHANGED
@@ -69,16 +69,17 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
69 |
|
70 |
/**
|
71 |
* Sends an email to the end user so it can confirm his request.
|
72 |
-
*
|
|
|
73 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
74 |
*/
|
75 |
public function send_request_email() {
|
76 |
if ( ! isset( $_POST['type'] ) || ! in_array( $_POST['type'], parent::$allowed_types ) ) {
|
77 |
-
|
78 |
}
|
79 |
|
80 |
if ( ! isset( $_POST['gdpr_request_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['gdpr_request_nonce'] ), 'gdpr-add-to-requests' ) ) {
|
81 |
-
|
82 |
}
|
83 |
|
84 |
$use_recaptcha = get_option( 'gdpr_use_recaptcha', false );
|
@@ -88,7 +89,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
88 |
|
89 |
if ( $site_key && $secret_key ) {
|
90 |
if ( ! isset( $_POST['g-recaptcha-response'] ) || ! $_POST['g-recaptcha-response'] ) {
|
91 |
-
|
92 |
}
|
93 |
|
94 |
$response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', array(
|
@@ -101,7 +102,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
101 |
$recaptcha_result = wp_remote_retrieve_body( $response );
|
102 |
$recaptcha_result = json_decode( $recaptcha_result );
|
103 |
if ( ! $recaptcha_result || ! $recaptcha_result->success ) {
|
104 |
-
|
105 |
}
|
106 |
|
107 |
}
|
@@ -116,6 +117,10 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
116 |
$user = isset( $_POST['user_email'] ) ? get_user_by( 'email', sanitize_email( $_POST['user_email'] ) ) : null;
|
117 |
}
|
118 |
|
|
|
|
|
|
|
|
|
119 |
$email_args = array(
|
120 |
'forgot_password_url' => add_query_arg(
|
121 |
array(
|
@@ -127,40 +132,16 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
127 |
),
|
128 |
);
|
129 |
|
|
|
|
|
130 |
switch ( $type ) {
|
131 |
case 'delete':
|
132 |
-
if ( ! $user instanceof WP_User ) {
|
133 |
-
wp_safe_redirect(
|
134 |
-
esc_url_raw(
|
135 |
-
add_query_arg(
|
136 |
-
array(
|
137 |
-
'notify' => 1,
|
138 |
-
'user-not-found' => 1,
|
139 |
-
),
|
140 |
-
wp_get_referer()
|
141 |
-
)
|
142 |
-
)
|
143 |
-
);
|
144 |
-
exit;
|
145 |
-
}
|
146 |
-
|
147 |
if ( in_array( 'administrator', $user->roles ) ) {
|
148 |
$admins_query = new WP_User_Query( array(
|
149 |
'role' => 'Administrator',
|
150 |
) );
|
151 |
if ( 1 === $admins_query->get_total() ) {
|
152 |
-
|
153 |
-
esc_url_raw(
|
154 |
-
add_query_arg(
|
155 |
-
array(
|
156 |
-
'notify' => 1,
|
157 |
-
'cannot-delete' => 1,
|
158 |
-
),
|
159 |
-
wp_get_referer()
|
160 |
-
)
|
161 |
-
)
|
162 |
-
);
|
163 |
-
exit;
|
164 |
}
|
165 |
}
|
166 |
break;
|
@@ -168,37 +149,10 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
168 |
case 'rectify':
|
169 |
case 'complaint':
|
170 |
if ( ! $data ) {
|
171 |
-
|
172 |
-
esc_url_raw(
|
173 |
-
add_query_arg(
|
174 |
-
array(
|
175 |
-
'notify' => 1,
|
176 |
-
'required-information-missing' => 1,
|
177 |
-
),
|
178 |
-
wp_get_referer()
|
179 |
-
)
|
180 |
-
)
|
181 |
-
);
|
182 |
-
exit;
|
183 |
}
|
184 |
$email_args['data'] = $data;
|
185 |
break;
|
186 |
-
case 'export-data':
|
187 |
-
if ( ! $user instanceof WP_User ) {
|
188 |
-
wp_safe_redirect(
|
189 |
-
esc_url_raw(
|
190 |
-
add_query_arg(
|
191 |
-
array(
|
192 |
-
'notify' => 1,
|
193 |
-
'user-not-found' => 1,
|
194 |
-
),
|
195 |
-
wp_get_referer()
|
196 |
-
)
|
197 |
-
)
|
198 |
-
);
|
199 |
-
exit;
|
200 |
-
}
|
201 |
-
break;
|
202 |
}
|
203 |
|
204 |
$key = parent::add_to_requests( $user->user_email, $type, $data );
|
@@ -239,31 +193,9 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
239 |
"{$type}-request",
|
240 |
$email_args
|
241 |
) ) {
|
242 |
-
|
243 |
-
esc_url_raw(
|
244 |
-
add_query_arg(
|
245 |
-
array(
|
246 |
-
'notify' => 1,
|
247 |
-
'email-sent' => 1,
|
248 |
-
),
|
249 |
-
wp_get_referer()
|
250 |
-
)
|
251 |
-
)
|
252 |
-
);
|
253 |
-
exit;
|
254 |
} else {
|
255 |
-
|
256 |
-
esc_url_raw(
|
257 |
-
add_query_arg(
|
258 |
-
array(
|
259 |
-
'notify' => 1,
|
260 |
-
'error' => 1,
|
261 |
-
),
|
262 |
-
wp_get_referer()
|
263 |
-
)
|
264 |
-
)
|
265 |
-
);
|
266 |
-
exit;
|
267 |
}
|
268 |
}
|
269 |
|
@@ -274,7 +206,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
274 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
275 |
*/
|
276 |
public function request_confirmed() {
|
277 |
-
if (
|
278 |
return;
|
279 |
}
|
280 |
|
@@ -285,15 +217,50 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
285 |
|
286 |
$user = get_user_by( 'email', $email );
|
287 |
if ( ! $user instanceof WP_User ) {
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
}
|
290 |
|
291 |
$meta_key = get_user_meta( $user->ID, self::$plugin_name . "_{$type}_key", true );
|
292 |
if ( empty( $meta_key ) ) {
|
293 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
}
|
295 |
|
296 |
-
if ( $key
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
$notification_email_args = array(
|
298 |
'type' => $type,
|
299 |
'review_url' => add_query_arg( array( 'page' => 'gdpr-requests#' . $type ), admin_url() ),
|
@@ -315,7 +282,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
315 |
add_query_arg(
|
316 |
array(
|
317 |
'user-deleted' => 0,
|
318 |
-
'notify'
|
319 |
),
|
320 |
home_url()
|
321 |
)
|
@@ -329,7 +296,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
329 |
add_query_arg(
|
330 |
array(
|
331 |
'user-deleted' => 1,
|
332 |
-
'notify'
|
333 |
),
|
334 |
home_url()
|
335 |
)
|
@@ -349,7 +316,7 @@ class GDPR_Requests_Public extends GDPR_Requests {
|
|
349 |
add_query_arg(
|
350 |
array(
|
351 |
'request-confirmed' => 1,
|
352 |
-
'notify'
|
353 |
),
|
354 |
home_url()
|
355 |
)
|
69 |
|
70 |
/**
|
71 |
* Sends an email to the end user so it can confirm his request.
|
72 |
+
* Ajax Version of a previous function
|
73 |
+
* @since 2.0.0
|
74 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
75 |
*/
|
76 |
public function send_request_email() {
|
77 |
if ( ! isset( $_POST['type'] ) || ! in_array( $_POST['type'], parent::$allowed_types ) ) {
|
78 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'Invalid type of request. Please try again.', 'gdpr' ) ) );
|
79 |
}
|
80 |
|
81 |
if ( ! isset( $_POST['gdpr_request_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['gdpr_request_nonce'] ), 'gdpr-add-to-requests' ) ) {
|
82 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'We could not verify the security token. Please try again.', 'gdpr' ) ) );
|
83 |
}
|
84 |
|
85 |
$use_recaptcha = get_option( 'gdpr_use_recaptcha', false );
|
89 |
|
90 |
if ( $site_key && $secret_key ) {
|
91 |
if ( ! isset( $_POST['g-recaptcha-response'] ) || ! $_POST['g-recaptcha-response'] ) {
|
92 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'Please verify that you are not a robot.', 'gdpr' ) ) );
|
93 |
}
|
94 |
|
95 |
$response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', array(
|
102 |
$recaptcha_result = wp_remote_retrieve_body( $response );
|
103 |
$recaptcha_result = json_decode( $recaptcha_result );
|
104 |
if ( ! $recaptcha_result || ! $recaptcha_result->success ) {
|
105 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'Please verify that you are not a robot.', 'gdpr' ) ) );
|
106 |
}
|
107 |
|
108 |
}
|
117 |
$user = isset( $_POST['user_email'] ) ? get_user_by( 'email', sanitize_email( $_POST['user_email'] ) ) : null;
|
118 |
}
|
119 |
|
120 |
+
if ( ! $user instanceof WP_User ) {
|
121 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'User not found.', 'gdpr' ) ) );
|
122 |
+
}
|
123 |
+
|
124 |
$email_args = array(
|
125 |
'forgot_password_url' => add_query_arg(
|
126 |
array(
|
132 |
),
|
133 |
);
|
134 |
|
135 |
+
$email_args['forgot_password_url'] = apply_filters( 'gdpr_forgot_password_url', $email_args['forgot_password_url'] );
|
136 |
+
|
137 |
switch ( $type ) {
|
138 |
case 'delete':
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
if ( in_array( 'administrator', $user->roles ) ) {
|
140 |
$admins_query = new WP_User_Query( array(
|
141 |
'role' => 'Administrator',
|
142 |
) );
|
143 |
if ( 1 === $admins_query->get_total() ) {
|
144 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'We can\'t delete this user.', 'gdpr' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
}
|
146 |
}
|
147 |
break;
|
149 |
case 'rectify':
|
150 |
case 'complaint':
|
151 |
if ( ! $data ) {
|
152 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'Required information is missing from the form.', 'gdpr' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
}
|
154 |
$email_args['data'] = $data;
|
155 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
157 |
|
158 |
$key = parent::add_to_requests( $user->user_email, $type, $data );
|
193 |
"{$type}-request",
|
194 |
$email_args
|
195 |
) ) {
|
196 |
+
wp_send_json_success( array( 'title' => esc_html__( 'Email confirmation', 'gdpr' ), 'content' => esc_html__( 'We\'ve sent you a confirmation email.', 'gdpr' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
} else {
|
198 |
+
wp_send_json_error( array( 'title' => esc_html__( 'Error!', 'gdpr' ), 'content' => esc_html__( 'There was a problem with your request. Please try again later.', 'gdpr' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
}
|
200 |
}
|
201 |
|
206 |
* @author Fernando Claussen <fernandoclaussen@gmail.com>
|
207 |
*/
|
208 |
public function request_confirmed() {
|
209 |
+
if ( is_admin() || ! isset( $_GET['type'], $_GET['key'], $_GET['email'] ) ) {
|
210 |
return;
|
211 |
}
|
212 |
|
217 |
|
218 |
$user = get_user_by( 'email', $email );
|
219 |
if ( ! $user instanceof WP_User ) {
|
220 |
+
wp_safe_redirect(
|
221 |
+
esc_url_raw(
|
222 |
+
add_query_arg(
|
223 |
+
array(
|
224 |
+
'user-not-found' => 1,
|
225 |
+
'notify' => 1,
|
226 |
+
),
|
227 |
+
home_url()
|
228 |
+
)
|
229 |
+
)
|
230 |
+
);
|
231 |
+
exit;
|
232 |
}
|
233 |
|
234 |
$meta_key = get_user_meta( $user->ID, self::$plugin_name . "_{$type}_key", true );
|
235 |
if ( empty( $meta_key ) ) {
|
236 |
+
wp_safe_redirect(
|
237 |
+
esc_url_raw(
|
238 |
+
add_query_arg(
|
239 |
+
array(
|
240 |
+
'request-key-not-found' => 1,
|
241 |
+
'notify' => 1,
|
242 |
+
),
|
243 |
+
home_url()
|
244 |
+
)
|
245 |
+
)
|
246 |
+
);
|
247 |
+
exit;
|
248 |
}
|
249 |
|
250 |
+
if ( $key !== $meta_key ) {
|
251 |
+
wp_safe_redirect(
|
252 |
+
esc_url_raw(
|
253 |
+
add_query_arg(
|
254 |
+
array(
|
255 |
+
'request-key-not-match' => 1,
|
256 |
+
'notify' => 1,
|
257 |
+
),
|
258 |
+
home_url()
|
259 |
+
)
|
260 |
+
)
|
261 |
+
);
|
262 |
+
exit;
|
263 |
+
} else {
|
264 |
$notification_email_args = array(
|
265 |
'type' => $type,
|
266 |
'review_url' => add_query_arg( array( 'page' => 'gdpr-requests#' . $type ), admin_url() ),
|
282 |
add_query_arg(
|
283 |
array(
|
284 |
'user-deleted' => 0,
|
285 |
+
'notify' => 1,
|
286 |
),
|
287 |
home_url()
|
288 |
)
|
296 |
add_query_arg(
|
297 |
array(
|
298 |
'user-deleted' => 1,
|
299 |
+
'notify' => 1,
|
300 |
),
|
301 |
home_url()
|
302 |
)
|
316 |
add_query_arg(
|
317 |
array(
|
318 |
'request-confirmed' => 1,
|
319 |
+
'notify' => 1,
|
320 |
),
|
321 |
home_url()
|
322 |
)
|
public/partials/complaint-form.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
<form class="gdpr-add-to-complaint-requests"
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="complaint">
|
5 |
<?php if ( ! is_user_logged_in() ): ?>
|
6 |
<input type="email" name="user_email" placeholder="user@domain.com" required>
|
7 |
<?php endif ?>
|
8 |
-
<textarea name="data" rows="5" required></textarea>
|
9 |
|
10 |
<?php GDPR_Public::add_recaptcha(); ?>
|
11 |
<?php $submit_button_text = apply_filters( "gdpr_complaint_request_form_submit_text", esc_attr__( 'Submit', 'gdpr' ) ); ?>
|
1 |
+
<form class="gdpr-request-form gdpr-add-to-complaint-requests" method="post">
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="complaint">
|
5 |
<?php if ( ! is_user_logged_in() ): ?>
|
6 |
<input type="email" name="user_email" placeholder="user@domain.com" required>
|
7 |
<?php endif ?>
|
8 |
+
<textarea name="data" rows="5" required placeholder="<?php echo esc_attr( 'Type your complaint here', 'gdpr' ); ?>"></textarea>
|
9 |
|
10 |
<?php GDPR_Public::add_recaptcha(); ?>
|
11 |
<?php $submit_button_text = apply_filters( "gdpr_complaint_request_form_submit_text", esc_attr__( 'Submit', 'gdpr' ) ); ?>
|
public/partials/confirmation-screens.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
*/
|
12 |
?>
|
13 |
|
14 |
-
<div class="gdpr gdpr-general-confirmation gdpr-delete-confirmation">
|
15 |
<div class="gdpr-wrapper">
|
16 |
<header>
|
17 |
<div class="gdpr-box-title">
|
@@ -27,11 +27,13 @@
|
|
27 |
<button class="gdpr-cancel"><?php esc_html_e( 'Cancel', 'gdpr' ); ?></button>
|
28 |
</footer>
|
29 |
</div>
|
30 |
-
</div>
|
31 |
|
32 |
-
<?php
|
|
|
|
|
|
|
33 |
<?php
|
34 |
-
$title = __( 'Error!', 'gdpr' );
|
35 |
if ( isset( $_GET['user-deleted'] ) ) {
|
36 |
$title = __( 'Your account', 'gdpr' );
|
37 |
if ( $_GET['user-deleted'] ) {
|
@@ -40,41 +42,41 @@
|
|
40 |
$text = __( 'Your request has been received and is being reviewed. You will receive an email when we are done.', 'gdpr' );
|
41 |
}
|
42 |
}
|
43 |
-
if ( isset( $_GET['email-sent'] ) && $_GET['email-sent'] ) {
|
44 |
-
$title = __( 'Email confirmation', 'gdpr' );
|
45 |
-
$text = __( 'We\'ve sent you a confirmation email.', 'gdpr' );
|
46 |
-
}
|
47 |
-
if ( isset( $_GET['user-not-found'] ) && $_GET['user-not-found'] ) {
|
48 |
-
$text = __( 'User not found.', 'gdpr' );
|
49 |
-
}
|
50 |
-
if ( isset( $_GET['cannot-delete'] ) && $_GET['cannot-delete'] ) {
|
51 |
-
$text = __( 'We can\'t delete this user.', 'gdpr' );
|
52 |
-
}
|
53 |
-
if ( isset( $_GET['required-information-missing'] ) && $_GET['required-information-missing'] ) {
|
54 |
-
$text = __( 'Required information is missing from the form.', 'gdpr' );
|
55 |
-
}
|
56 |
if ( isset( $_GET['request-confirmed'] ) && $_GET['request-confirmed'] ) {
|
57 |
$title = __( 'Request Received', 'gdpr' );
|
58 |
$text = __( 'Your request has been received. We will be in touch soon.', 'gdpr' );
|
59 |
}
|
60 |
-
if ( isset( $_GET['
|
61 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
?>
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
</header>
|
72 |
-
<div class="gdpr-content">
|
73 |
-
<p><?php echo esc_html( $text ); ?></p>
|
74 |
</div>
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
</div>
|
|
|
|
|
|
|
79 |
</div>
|
80 |
-
|
11 |
*/
|
12 |
?>
|
13 |
|
14 |
+
<!-- <div class="gdpr gdpr-general-confirmation gdpr-delete-confirmation">
|
15 |
<div class="gdpr-wrapper">
|
16 |
<header>
|
17 |
<div class="gdpr-box-title">
|
27 |
<button class="gdpr-cancel"><?php esc_html_e( 'Cancel', 'gdpr' ); ?></button>
|
28 |
</footer>
|
29 |
</div>
|
30 |
+
</div> -->
|
31 |
|
32 |
+
<?php
|
33 |
+
$title = '';
|
34 |
+
$text = '';
|
35 |
+
if ( isset( $_GET['notify'] ) && $_GET['notify'] ) : ?>
|
36 |
<?php
|
|
|
37 |
if ( isset( $_GET['user-deleted'] ) ) {
|
38 |
$title = __( 'Your account', 'gdpr' );
|
39 |
if ( $_GET['user-deleted'] ) {
|
42 |
$text = __( 'Your request has been received and is being reviewed. You will receive an email when we are done.', 'gdpr' );
|
43 |
}
|
44 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
if ( isset( $_GET['request-confirmed'] ) && $_GET['request-confirmed'] ) {
|
46 |
$title = __( 'Request Received', 'gdpr' );
|
47 |
$text = __( 'Your request has been received. We will be in touch soon.', 'gdpr' );
|
48 |
}
|
49 |
+
if ( isset( $_GET['malformed-confirmation-link'] ) && $_GET['malformed-confirmation-link'] ) {
|
50 |
+
$title = __( 'Error!', 'gdpr' );
|
51 |
+
$text = __( 'Malformed request confirmation link!', 'gdpr' );
|
52 |
+
}
|
53 |
+
if ( isset( $_GET['user-not-found'] ) && $_GET['user-not-found'] ) {
|
54 |
+
$title = __( 'Error!', 'gdpr' );
|
55 |
+
$text = __( 'User not found.', 'gdpr' );
|
56 |
+
}
|
57 |
+
if ( isset( $_GET['request-key-not-found'] ) && $_GET['request-key-not-found'] ) {
|
58 |
+
$title = __( 'Error!', 'gdpr' );
|
59 |
+
$text = __( 'We could not confirm the request key. It may be expired.', 'gdpr' );
|
60 |
+
}
|
61 |
+
if ( isset( $_GET['request-key-not-match'] ) && $_GET['request-key-not-match'] ) {
|
62 |
+
$title = __( 'Error!', 'gdpr' );
|
63 |
+
$text = __( 'The key used does not match the request key we have stored.', 'gdpr' );
|
64 |
}
|
65 |
?>
|
66 |
+
<?php endif ?>
|
67 |
+
<div class="gdpr gdpr-general-confirmation">
|
68 |
+
<div class="gdpr-wrapper">
|
69 |
+
<header>
|
70 |
+
<div class="gdpr-box-title">
|
71 |
+
<h3><?php echo esc_attr( $title ); ?></h3>
|
72 |
+
<span class="gdpr-close"></span>
|
|
|
|
|
|
|
73 |
</div>
|
74 |
+
</header>
|
75 |
+
<div class="gdpr-content">
|
76 |
+
<p><?php echo esc_html( $text ); ?></p>
|
77 |
</div>
|
78 |
+
<footer>
|
79 |
+
<button class="gdpr-ok"><?php esc_html_e( 'OK', 'gdpr' ) ?></button>
|
80 |
+
</footer>
|
81 |
</div>
|
82 |
+
</div>
|
public/partials/delete-form.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
*/
|
12 |
?>
|
13 |
|
14 |
-
<form class="gdpr-add-to-deletion-requests"
|
15 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
16 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
17 |
<input type="hidden" name="type" value="delete">
|
11 |
*/
|
12 |
?>
|
13 |
|
14 |
+
<form class="gdpr-request-form gdpr-add-to-deletion-requests" method="post">
|
15 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
16 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
17 |
<input type="hidden" name="type" value="delete">
|
public/partials/export-data-form.php
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<form class="gdpr-export-data-form"
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="export-data">
|
1 |
+
<form class="gdpr-request-form gdpr-export-data-form" method="post">
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="export-data">
|
public/partials/privacy-bar.php
CHANGED
@@ -15,13 +15,29 @@
|
|
15 |
<div class="gdpr gdpr-privacy-bar" style="display:none;">
|
16 |
<div class="gdpr-wrapper">
|
17 |
<div class="gdpr-content">
|
18 |
-
<p>
|
19 |
-
<?php echo nl2br( wp_kses_post( $content ) ); ?>
|
20 |
-
</p>
|
21 |
</div>
|
22 |
<div class="gdpr-right">
|
23 |
-
<
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
</div>
|
26 |
</div>
|
27 |
</div>
|
15 |
<div class="gdpr gdpr-privacy-bar" style="display:none;">
|
16 |
<div class="gdpr-wrapper">
|
17 |
<div class="gdpr-content">
|
18 |
+
<p><?php echo nl2br( wp_kses_post( $content ) ); ?></p>
|
|
|
|
|
19 |
</div>
|
20 |
<div class="gdpr-right">
|
21 |
+
<ul class="gdpr-cookie-categories">
|
22 |
+
<?php if ( $show_cookie_cat_checkboxes ): ?>
|
23 |
+
<?php foreach ( $registered_cookies as $cookie_cat_id => $cookie_cat ) : ?>
|
24 |
+
<?php
|
25 |
+
$enabled = ( 'off' === $cookie_cat['status'] ) ? false : true;
|
26 |
+
if ( empty( $cookie_cat['cookies_used'] ) ) {
|
27 |
+
continue;
|
28 |
+
}
|
29 |
+
?>
|
30 |
+
<li class="gdpr-cookie-categories-item">
|
31 |
+
<input type="checkbox" id="gdpr-cookie-category-<?php echo esc_attr( $cookie_cat_id ); ?>" class="gdpr-cookie-category" data-category="<?php echo esc_attr( $cookie_cat_id ); ?>" name="allowed_cookie_categories" value="<?php echo esc_attr( $cookie_cat['name'] ); ?>" <?php checked( $enabled, true ); ?> <?php echo ( 'required' === $cookie_cat['status'] ) ? 'disabled' : ''; ?>>
|
32 |
+
<label for="gdpr-cookie-category-<?php echo esc_attr( $cookie_cat_id ); ?>"><?php echo esc_html( $cookie_cat['name'] ); ?></label>
|
33 |
+
</li>
|
34 |
+
<?php endforeach ?>
|
35 |
+
<?php endif ?>
|
36 |
+
</ul>
|
37 |
+
<div class="gdpr-buttons">
|
38 |
+
<button class="gdpr-preferences" type="button"><?php esc_html_e( 'Privacy Preferences', 'gdpr' ); ?></button>
|
39 |
+
<button class="gdpr-agreement" type="button"><?php echo esc_html( $button_text ); ?></button>
|
40 |
+
</div>
|
41 |
</div>
|
42 |
</div>
|
43 |
</div>
|
public/partials/privacy-preferences-modal.php
CHANGED
@@ -14,9 +14,9 @@
|
|
14 |
|
15 |
<div class="gdpr gdpr-privacy-preferences">
|
16 |
<div class="gdpr-wrapper">
|
17 |
-
<form method="post" class="gdpr-privacy-preferences-frm"
|
18 |
<input type="hidden" name="action" value="gdpr_update_privacy_preferences">
|
19 |
-
<?php wp_nonce_field( 'gdpr-
|
20 |
<header>
|
21 |
<div class="gdpr-box-title">
|
22 |
<h3><?php esc_html_e( 'Privacy Preference Center', 'gdpr' ); ?></h3>
|
@@ -27,21 +27,36 @@
|
|
27 |
<button type="button"><?php esc_html_e( 'Options', 'gdpr' ); ?></button>
|
28 |
</div>
|
29 |
<div class="gdpr-content">
|
30 |
-
<
|
31 |
-
<
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
<
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
<div class="gdpr-tab-content">
|
46 |
<div class="gdpr-consent-management gdpr-active">
|
47 |
<header>
|
@@ -49,25 +64,27 @@
|
|
49 |
</header>
|
50 |
<div class="gdpr-info">
|
51 |
<p><?php echo nl2br( esc_html( $cookie_privacy_excerpt ) ); ?></p>
|
52 |
-
<?php
|
53 |
-
|
54 |
-
<div class="gdpr-
|
55 |
-
<
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
<
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
<
|
|
|
|
|
68 |
</div>
|
69 |
-
|
70 |
-
<?php
|
71 |
</div>
|
72 |
</div>
|
73 |
<?php $all_cookies = array(); ?>
|
@@ -84,7 +101,7 @@
|
|
84 |
<p><?php esc_html_e( 'Cookies Used', 'gdpr' ); ?></p>
|
85 |
<?php
|
86 |
$site_cookies = array();
|
87 |
-
$enabled = false;
|
88 |
$cookies_used = explode( ',', $tab['cookies_used'] );
|
89 |
$approved_cookies = isset( $_COOKIE['gdpr']['allowed_cookies'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['allowed_cookies'] ) ) : array();
|
90 |
foreach ( $cookies_used as $cookie ) {
|
@@ -97,12 +114,12 @@
|
|
97 |
}
|
98 |
}
|
99 |
?>
|
100 |
-
<?php if ( $tab['
|
101 |
-
<span class="gdpr-always-active"><?php esc_html_e( '
|
102 |
-
<input type="hidden" name="approved_cookies[]" value="<?php echo esc_attr( json_encode( $site_cookies ) ) ?>"
|
103 |
<?php else: ?>
|
104 |
<label class="gdpr-switch">
|
105 |
-
<input type="checkbox" name="approved_cookies[]" value="<?php echo esc_attr( json_encode( $site_cookies ) ) ?>" <?php checked( $enabled, true ); ?>>
|
106 |
<span class="gdpr-slider round"></span>
|
107 |
</label>
|
108 |
<?php endif; ?>
|
@@ -133,9 +150,6 @@
|
|
133 |
</div>
|
134 |
<footer>
|
135 |
<input type="submit" value="<?php esc_attr_e( 'Save Preferences', 'gdpr' ); ?>">
|
136 |
-
<?php if ( $privacy_policy_page ) : ?>
|
137 |
-
<span><a href="<?php echo esc_url( get_permalink( $privacy_policy_page ) ); ?>" target="_blank"><?php esc_html_e( 'More Information', 'gdpr' ); ?></a></span>
|
138 |
-
<?php endif ?>
|
139 |
</footer>
|
140 |
</form>
|
141 |
</div>
|
14 |
|
15 |
<div class="gdpr gdpr-privacy-preferences">
|
16 |
<div class="gdpr-wrapper">
|
17 |
+
<form method="post" class="gdpr-privacy-preferences-frm">
|
18 |
<input type="hidden" name="action" value="gdpr_update_privacy_preferences">
|
19 |
+
<?php wp_nonce_field( 'gdpr-update-privacy-preferences', 'update-privacy-preferences-nonce' ); ?>
|
20 |
<header>
|
21 |
<div class="gdpr-box-title">
|
22 |
<h3><?php esc_html_e( 'Privacy Preference Center', 'gdpr' ); ?></h3>
|
27 |
<button type="button"><?php esc_html_e( 'Options', 'gdpr' ); ?></button>
|
28 |
</div>
|
29 |
<div class="gdpr-content">
|
30 |
+
<div class="gdpr-tabs">
|
31 |
+
<ul class="">
|
32 |
+
<li><button type="button" class="gdpr-tab-button gdpr-active" data-target="gdpr-consent-management"><?php esc_html_e( 'Consent Management', 'gdpr' ); ?></button></li>
|
33 |
+
<?php reset( $tabs ); ?>
|
34 |
+
<?php if ( ! empty( $tabs ) ): ?>
|
35 |
+
<li><button type="button" class="gdpr-tab-button gdpr-cookie-settings" data-target="<?php echo esc_attr( key( $tabs ) ); ?>"><?php esc_html_e( 'Cookie Settings', 'gdpr' ); ?></button>
|
36 |
+
<ul class="gdpr-subtabs">
|
37 |
+
<?php
|
38 |
+
foreach ( $tabs as $key => $tab ) {
|
39 |
+
if ( empty( $tab['cookies_used'] ) ) {
|
40 |
+
continue;
|
41 |
+
}
|
42 |
+
echo '<li><button type="button" data-target="' . esc_attr( $key ) . '" ' . '>' . esc_html( $tab['name'] ) . '</button></li>';
|
43 |
+
}
|
44 |
+
?>
|
45 |
+
</ul>
|
46 |
+
</li>
|
47 |
+
<?php endif ?>
|
48 |
+
</ul>
|
49 |
+
<ul class="gdpr-policies">
|
50 |
+
<?php if ( ! empty( $consent_types ) ): ?>
|
51 |
+
<?php foreach ( $consent_types as $consent_key => $type ) : ?>
|
52 |
+
<?php if ( ! $type['policy-page'] ) {
|
53 |
+
continue;
|
54 |
+
} ?>
|
55 |
+
<li><a href="<?php echo esc_url( get_permalink( $type['policy-page'] ) ); ?>" target="_blank"><?php echo esc_html( $type['name'] ); ?></a></li>
|
56 |
+
<?php endforeach; ?>
|
57 |
+
<?php endif; ?>
|
58 |
+
</ul>
|
59 |
+
</div>
|
60 |
<div class="gdpr-tab-content">
|
61 |
<div class="gdpr-consent-management gdpr-active">
|
62 |
<header>
|
64 |
</header>
|
65 |
<div class="gdpr-info">
|
66 |
<p><?php echo nl2br( esc_html( $cookie_privacy_excerpt ) ); ?></p>
|
67 |
+
<?php if ( ! empty( $consent_types ) ): ?>
|
68 |
+
<?php foreach ( $consent_types as $consent_key => $type ) : ?>
|
69 |
+
<div class="gdpr-cookies-used">
|
70 |
+
<div class="gdpr-cookie-title">
|
71 |
+
<p><?php echo esc_html( $type['name'] ); ?></p>
|
72 |
+
<?php if ( $type['policy-page'] ) : ?>
|
73 |
+
<span class="gdpr-always-active"><?php esc_html_e( 'Required', 'gdpr' ); ?></span>
|
74 |
+
<input type="hidden" name="user_consents[]" value="<?php echo esc_attr( $consent_key ); ?>" checked style="display:none;">
|
75 |
+
<?php else : ?>
|
76 |
+
<label class="gdpr-switch">
|
77 |
+
<input type="checkbox" name="user_consents[]" value="<?php echo esc_attr( $consent_key ); ?>" <?php echo ! empty( $user_consents ) ? checked( in_array( $consent_key, $user_consents, true ), 1, false ) : 'checked'; ?>>
|
78 |
+
<span class="gdpr-slider round"></span>
|
79 |
+
</label>
|
80 |
+
<?php endif; ?>
|
81 |
+
</div>
|
82 |
+
<div class="gdpr-cookies">
|
83 |
+
<span><?php echo wp_kses( $type['description'], $this->allowed_html ); ?></span>
|
84 |
+
</div>
|
85 |
</div>
|
86 |
+
<?php endforeach; ?>
|
87 |
+
<?php endif ?>
|
88 |
</div>
|
89 |
</div>
|
90 |
<?php $all_cookies = array(); ?>
|
101 |
<p><?php esc_html_e( 'Cookies Used', 'gdpr' ); ?></p>
|
102 |
<?php
|
103 |
$site_cookies = array();
|
104 |
+
$enabled = ( 'off' === $tab['status'] ) ? false : true;
|
105 |
$cookies_used = explode( ',', $tab['cookies_used'] );
|
106 |
$approved_cookies = isset( $_COOKIE['gdpr']['allowed_cookies'] ) ? json_decode( wp_unslash( $_COOKIE['gdpr']['allowed_cookies'] ) ) : array();
|
107 |
foreach ( $cookies_used as $cookie ) {
|
114 |
}
|
115 |
}
|
116 |
?>
|
117 |
+
<?php if ( 'required' === $tab['status'] ) : ?>
|
118 |
+
<span class="gdpr-always-active"><?php esc_html_e( 'Required', 'gdpr' ); ?></span>
|
119 |
+
<input type="hidden" name="approved_cookies[]" value="<?php echo esc_attr( json_encode( $site_cookies ) ) ?>">
|
120 |
<?php else: ?>
|
121 |
<label class="gdpr-switch">
|
122 |
+
<input type="checkbox" class="gdpr-cookie-category" data-category="<?php echo esc_attr( $key ); ?>" name="approved_cookies[]" value="<?php echo esc_attr( json_encode( $site_cookies ) ) ?>" <?php checked( $enabled, true ); ?>>
|
123 |
<span class="gdpr-slider round"></span>
|
124 |
</label>
|
125 |
<?php endif; ?>
|
150 |
</div>
|
151 |
<footer>
|
152 |
<input type="submit" value="<?php esc_attr_e( 'Save Preferences', 'gdpr' ); ?>">
|
|
|
|
|
|
|
153 |
</footer>
|
154 |
</form>
|
155 |
</div>
|
public/partials/reconsent-bar.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* This file is used to markup the reconsent bar.
|
5 |
+
*
|
6 |
+
*
|
7 |
+
* @link https://trewknowledge.com
|
8 |
+
* @since 2.0.0
|
9 |
+
*
|
10 |
+
* @package GDPR
|
11 |
+
* @subpackage public/partials
|
12 |
+
*/
|
13 |
+
?>
|
14 |
+
|
15 |
+
<div class="gdpr gdpr-reconsent-bar" style="/*display:none;*/">
|
16 |
+
<div class="gdpr-wrapper">
|
17 |
+
<div class="gdpr-content">
|
18 |
+
<p><?php esc_html_e( 'Some of our policies have been updated. Please make sure to select the "View" link next each item in order to view changes before agreeing.', 'gdpr' ); ?></p>
|
19 |
+
</div>
|
20 |
+
<div class="gdpr-right">
|
21 |
+
<ul class="gdpr-policy-list">
|
22 |
+
<?php foreach ( $updated_consents as $consent_id => $consent ) : ?>
|
23 |
+
<li class="gdpr-policy-list-item">
|
24 |
+
<input type="hidden" value="<?php echo esc_attr( $consent_id ); ?>" checked>
|
25 |
+
<label><?php echo esc_html( $consent['name'] ); ?></label>
|
26 |
+
<a class="gdpr-policy-link" href="<?php echo esc_url( get_permalink( $consent['policy-page'] ) ); ?>" target="_blank">[<?php esc_html_e( 'View', 'gdpr' ) ?>]</a>
|
27 |
+
</li>
|
28 |
+
<?php endforeach ?>
|
29 |
+
</ul>
|
30 |
+
<div class="gdpr-buttons">
|
31 |
+
<button class="gdpr-agreement" type="button" data-nonce="<?php echo esc_attr( wp_create_nonce( 'gdpr-agree-with-new-policies' ) ); ?>"><?php esc_html_e( 'I Agree', 'gdpr' ); ?></button>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</div>
|
public/partials/reconsent-modal.php
DELETED
@@ -1,34 +0,0 @@
|
|
1 |
-
<div class="gdpr-reconsent-modal" style="display:none;">
|
2 |
-
<div class="gdpr-reconsent-modal-content">
|
3 |
-
<h3><?php esc_html_e( 'Our Privacy Policy has been updated.', 'gdpr' ); ?></h3>
|
4 |
-
<h4><?php esc_html_e( 'To continue using the site you need to read the revised version and agree to the terms.', 'gdpr' ); ?></h4>
|
5 |
-
<div class="gdpr-privacy-viewer">
|
6 |
-
<?php echo apply_filters( 'the_content', $page_obj->post_content ); ?>
|
7 |
-
</div>
|
8 |
-
<div class="gdpr-consent-buttons">
|
9 |
-
<a href="#" class="gdpr-agree" data-nonce="<?php echo esc_attr( wp_create_nonce( 'gdpr-user_agree_with_terms' ) ); ?>"><?php esc_html_e( 'Agree', 'gdpr' ); ?></a>
|
10 |
-
<a href="#" class="gdpr-disagree"><?php esc_html_e( 'Disagree', 'gdpr' ); ?></a>
|
11 |
-
</div>
|
12 |
-
<div class="gdpr-consent-loading">
|
13 |
-
<p class="gdpr-loading"><span class="gdpr-updating"><?php esc_html_e( 'Updating', 'gdpr' ); ?></span><span class="gdpr-ellipsis"></span></p>
|
14 |
-
</div>
|
15 |
-
</div>
|
16 |
-
</div>
|
17 |
-
|
18 |
-
<div class="gdpr gdpr-general-confirmation gdpr-disagree-confirmation">
|
19 |
-
<div class="gdpr-wrapper">
|
20 |
-
<header>
|
21 |
-
<div class="gdpr-box-title">
|
22 |
-
<h3><?php esc_attr_e( 'Are you sure?', 'gdpr' ); ?></h3>
|
23 |
-
<span class="gdpr-close"></span>
|
24 |
-
</div>
|
25 |
-
</header>
|
26 |
-
<div class="gdpr-content">
|
27 |
-
<p><?php esc_html_e( 'By disagreeing you will no longer have access to our site and will be logged out.', 'gdpr' ); ?></p>
|
28 |
-
</div>
|
29 |
-
<footer>
|
30 |
-
<button class="gdpr-disagree-confirm" data-nonce="<?php echo esc_attr( wp_create_nonce( 'gdpr-user_disagree_with_terms' ) ); ?>"><?php esc_html_e( 'Continue', 'gdpr' ); ?></button>
|
31 |
-
<button class="gdpr-cancel"><?php esc_html_e( 'Cancel', 'gdpr' ); ?></button>
|
32 |
-
</footer>
|
33 |
-
</div>
|
34 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public/partials/rectify-form.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
<form class="gdpr-add-to-rectify-requests"
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="rectify">
|
5 |
<?php if ( ! is_user_logged_in() ): ?>
|
6 |
<input type="email" name="user_email" placeholder="user@domain.com" required>
|
7 |
<?php endif ?>
|
8 |
-
<textarea name="data" rows="5" required></textarea>
|
9 |
<?php GDPR_Public::add_recaptcha(); ?>
|
10 |
<?php $submit_button_text = apply_filters( "gdpr_rectify_request_form_submit_text", esc_attr__( 'Submit', 'gdpr' ) ); ?>
|
11 |
<input type="submit" value="<?php echo esc_attr( $submit_button_text ); ?>">
|
1 |
+
<form class="gdpr-request-form gdpr-add-to-rectify-requests" method="post">
|
2 |
<?php wp_nonce_field( 'gdpr-add-to-requests', 'gdpr_request_nonce' ); ?>
|
3 |
<input type="hidden" name="action" value="gdpr_send_request_email">
|
4 |
<input type="hidden" name="type" value="rectify">
|
5 |
<?php if ( ! is_user_logged_in() ): ?>
|
6 |
<input type="email" name="user_email" placeholder="user@domain.com" required>
|
7 |
<?php endif ?>
|
8 |
+
<textarea name="data" rows="5" required placeholder="<?php echo esc_attr( 'Type your rectification request here', 'gdpr' ); ?>"></textarea>
|
9 |
<?php GDPR_Public::add_recaptcha(); ?>
|
10 |
<?php $submit_button_text = apply_filters( "gdpr_rectify_request_form_submit_text", esc_attr__( 'Submit', 'gdpr' ) ); ?>
|
11 |
<input type="submit" value="<?php echo esc_attr( $submit_button_text ); ?>">
|