diff options
author | Matthieu Aubry <matt@piwik.org> | 2015-09-08 09:38:44 +0300 |
---|---|---|
committer | Matthieu Aubry <matt@piwik.org> | 2015-09-08 09:38:44 +0300 |
commit | 9df172e5afd0d99a0ac513cbe67c35cc303540d0 (patch) | |
tree | 9c2e13769ebcbd9f9a26842bd7191afa6fd4906d | |
parent | 9c2ae2b007adb777f0e5289f628fa2a838966ffb (diff) | |
parent | c44c14e165b788d1fe0a1efa70c9d56469660fa7 (diff) |
Merge pull request #8646 from piwik/opt_out_no_3rd_party
Always use new window when setting opt-out cookies
-rw-r--r-- | plugins/CoreAdminHome/OptOutManager.php | 10 | ||||
-rw-r--r-- | plugins/CoreAdminHome/templates/optOut.twig | 30 |
2 files changed, 16 insertions, 24 deletions
diff --git a/plugins/CoreAdminHome/OptOutManager.php b/plugins/CoreAdminHome/OptOutManager.php index 42a1cd9aea..9aede6b7b5 100644 --- a/plugins/CoreAdminHome/OptOutManager.php +++ b/plugins/CoreAdminHome/OptOutManager.php @@ -151,7 +151,6 @@ class OptOutManager $this->view->trackVisits = $trackVisits; $this->view->nonce = Nonce::getNonce('Piwik_OptOut', 3600); $this->view->language = $lang; - $this->view->isSafari = $this->isUserAgentSafari(); $this->view->showConfirmOnly = Common::getRequestVar('showConfirmOnly', false, 'int'); $this->view->reloadUrl = $reloadUrl; $this->view->javascripts = $this->getJavascripts(); @@ -168,13 +167,4 @@ class OptOutManager { return $this->doNotTrackHeaderChecker; } - - /** - * @return bool - */ - protected function isUserAgentSafari() - { - $userAgent = @$_SERVER['HTTP_USER_AGENT'] ?: ''; - return strpos($userAgent, 'Safari') !== false && strpos($userAgent, 'Chrome') === false; - } } diff --git a/plugins/CoreAdminHome/templates/optOut.twig b/plugins/CoreAdminHome/templates/optOut.twig index e24d47f85b..e0eef92571 100644 --- a/plugins/CoreAdminHome/templates/optOut.twig +++ b/plugins/CoreAdminHome/templates/optOut.twig @@ -10,19 +10,21 @@ {% endif %} <script> - function submitForm(event, form, loadInNewWindow) { - event.preventDefault(); + function submitForm(e, form) { + if (e.preventDefault) { // IE8 and below do not support preventDefault + e.preventDefault(); + } - if (loadInNewWindow) { - var newWindow = window.open(form.action + '&time=' + Date.now()); + var now = Date.now ? Date.now() : (+(new Date())), // Date.now does not exist in < IE8 + newWindow = window.open(form.action + '&time=' + now); - // when the new window loads, reload this page - newWindow.addEventListener('unload', function () { + setInterval(function () { + if (newWindow.closed) { window.location.reload(); - }, false); - } else { - form.submit(); - } + } + }, 1000); + + return false; } </script> @@ -49,7 +51,8 @@ # otherwise we try to close the window immediately. #} {% if showConfirmOnly %} - <p>{{ 'CoreAdminHome_OptingYouOut'|translate }}</p><script>window.close();</script> + <p>{{ 'CoreAdminHome_OptingYouOut'|translate }}</p> + <script>window.close();</script> <noscript> {% endif %} @@ -68,11 +71,10 @@ <br/><br/> {% if not showConfirmOnly %} - {% set loadInNewWindow = isSafari and trackVisits %} - <form method="post" action="?module=CoreAdminHome&action=optOut{% if language %}&language={{ language }}{% endif %}{% if loadInNewWindow %}&setCookieInNewWindow=1{% endif %}" {% if loadInNewWindow %}target="_blank"{% endif %}> + <form method="post" action="?module=CoreAdminHome&action=optOut{% if language %}&language={{ language }}{% endif %}&setCookieInNewWindow=1" target="_blank"> <input type="hidden" name="nonce" value="{{ nonce }}" /> <input type="hidden" name="fuzz" value="{{ "now"|date }}" /> - <input onclick="submitForm(event, this.form, {{ loadInNewWindow|default(0) }});" type="checkbox" id="trackVisits" name="trackVisits" {% if trackVisits %}checked="checked"{% endif %} /> + <input onclick="submitForm(event, this.form);" type="checkbox" id="trackVisits" name="trackVisits" {% if trackVisits %}checked="checked"{% endif %} /> <label for="trackVisits"><strong> {% if trackVisits %} {{ 'CoreAdminHome_YouAreOptedIn'|translate }} {{ 'CoreAdminHome_ClickHereToOptOut'|translate }} |