Skip to content
Code-Schnipsel Gruppen Projekte
Bestätigt Commit 9bd6f368 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

feat: consider gdpr plugin

Übergeordneter 3559311f
No related branches found
No related tags found
2 Merge Requests!2Next,!1Dev
Pipeline #5417 bestanden mit Phase
in 11 Sekunden
(function() {
'use strict';
const loadNode = function(Node) {
if (Node.getAttribute('data-qui-html-snippet-gdpr-loaded')) {
return;
}
Node.innerHTML = atob(Node.innerHTML);
const scripts = Array.from(Node.getElementsByTagName('script'));
scripts.forEach((script) => {
const newScript = document.createElement('script');
newScript.textContent = script.textContent;
script.parentNode.replaceChild(newScript, script);
});
Node.setAttribute('data-qui-html-snippet-gdpr-loaded', 1);
Node.style.display = '';
};
const fetchNodes = function(nodes) {
nodes.forEach((Node) => {
const gdprCategory = Node.getAttribute('data-qui-html-snippet-gdpr-category');
if (window.GDPR.isCookieCategoryAccepted(gdprCategory)) {
loadNode(Node);
} else {
window.GDPR.waitForCookieCategoryAcceptance(gdprCategory).then(() => {
loadNode(Node);
});
}
});
};
fetchNodes(document.querySelectorAll('[data-qui-html-snippet="gdpr"]'));
window.whenQuiLoaded().then(() => {
fetchNodes(document.querySelectorAll('[data-qui-html-snippet="gdpr"]'));
});
})();
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="onQuiqqerInit" fire="\QUI\HtmlSnippets\EventHandler::onQuiqqerInit"/>
<event on="onQuiqqer::template::header::end" fire="\QUI\HtmlSnippets\EventHandler::onTemplateEnd"/>
</events>
......@@ -3,6 +3,7 @@
namespace QUI\HtmlSnippets;
use QUI;
use Quiqqer\Engine\Collector;
class EventHandler
{
......@@ -31,4 +32,15 @@ class EventHandler
QUI::getEvents()->addEvent($event, [new SnippetTemplateEvent($snippet), 'onFireEvent']);
}
}
public static function onTemplateEnd(
Collector $Collection,
QUI\Template $Template
) {
if (QUI::getPackageManager()->isInstalled('quiqqer/gdpr')) {
$Collection->append(
'<script src="' . URL_OPT_DIR . 'quiqqer/html-snippets/bin/frontend/gdprReader.js"></script>'
);
}
}
}
......@@ -6,6 +6,7 @@ use QUI;
use Quiqqer\Engine\Collector;
use function array_values;
use function base64_encode;
/**
* Class SnippetEvent
......@@ -55,7 +56,23 @@ class SnippetTemplateEvent
}
foreach ($this->snippets as $snippet) {
$Collector->append($snippet['snippet']);
$gdprIsInstalled = QUI::getPackageManager()->isInstalled('quiqqer/gdpr');
if (empty($snippet['gdpr']) || !$gdprIsInstalled) {
$Collector->append($snippet['snippet']);
continue;
}
// consider gdpr status
$div = '<div ';
$div .= ' data-qui-html-snippet="gdpr"';
$div .= ' data-qui-html-snippet-gdpr-category="' . $snippet['gdpr'] . '"';
$div .= ' style="display: none"';
$div .= '>';
$div .= base64_encode($snippet['snippet']);
$div .= '</div>';
$Collector->append($div);
}
}
}
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren