Third-Party-Inhalte bzw. -Cookies sind im Safari per default deaktiviert.
Diese Einstellung sorgt unter anderem auch dafür, dass iframes, die zur Einbindung der Printlounge in externe Ressourcen (bspw. xt:commerce oder Magento) ggf. aber auch in OPC-Lösungen blockiert werden und zu einer "weißen Seite" führen.
Da diese Einstellung voraussetzt, dass der Benutzer die eingebundene Seite bereits selbst aktiv aufgerufen und besucht hat, damit diese Inhalte geladen werden dürfen, muss diese Seite einfach aufgerufen werden. Hierzu sind folgende Anpassungen erforderlich:
- In der Printlounge wurde die Datei /_safarithirdparty.php angelegt, welche ein Cookies setzt und den Besucher anschließend sofort wieder zur angegebenen Redirect-URL weiterleitet (?r=URL)
- Auf der Kundenseite (also bspw. im xt:commerce-Template) muss folgender Code auf der Startseite eingefügt werden:
<?php if(!isset($_COOKIE['fixed'])) { ?>
<script>
fixmycookies();
function fixmycookies() {
var is_safari = navigator.userAgent.indexOf('Safari') > -1;
if (is_safari) {
if (!getCookie('fixed')) {
setCookie('fixed', 'fixed', 365);
if (getCookie('fixed')) {
window.location.replace("http://SUBDOMAIN.print-server.net/_safarithirdparty.php?r=" + '<?php echo $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>');
}
}
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return '';
}
}
</script>
<?php }; ?>