pages/assets18/js/Disclaimer.js

88 lines
3.1 KiB
JavaScript
Raw Normal View History

2024-02-02 01:26:55 +01:00
/*!
* Author: Pierre-Henry Soria <hi@ph7.me>
* Copyright: (c) 2020, Pierre-Henry Soria. All Rights Reserved.
*/
const localKeyName = 'agreed18';
const strings = {
welcome: 'Vítáme Vás!',
site_contains_adult_materials: 'Tyto stránky obsahují sexuálně orientované materiály pro dospělé, které mohou být pro některé diváky urážlivé.',
acknowledge_confirm_majority: 'Chcete-li pokračovat, potvrďte, že jste starší <span class="underline">18</span> let.',
button_over18: 'Jsem starší 18-ti let',
button_under18: 'Jsem mladší 18-ti let',
footer_imprint_paragraph: 'Vstupem na tyto webové stránky vyjadřujete souhlas s našimi podmínkami používání a zásadami ochrany osobních údajů.',
};
class Disclaimer {
constructor() {
this.backgroundElement = document.getElementById('disclaimer-background');
this.dialogElement = document.getElementById('disclaimer-dialog');
this.dialogStatus = 0;
}
loadDialog() {
if (this.dialogStatus === 0) {
this.backgroundElement.style.opacity = '0.95';
this.backgroundElement.style.display = 'block';
this.dialogElement.style.display = 'block';
this.dialogStatus = 1;
}
}
disableDialog() {
if (this.dialogStatus === 1) {
this.dialogElement.style.display = 'none';
this.backgroundElement.style.display = 'none';
this.dialogStatus = 0;
}
}
centerDialog() {
const windowHeight = document.documentElement.clientHeight;
const windowWidth = document.documentElement.clientWidth;
const dialogHeight = parseInt(window.getComputedStyle(this.dialogElement).height);
const dialogWidth = parseInt(window.getComputedStyle(this.dialogElement).width);
this.dialogElement.style.position = 'absolute';
this.dialogElement.style.top = (windowHeight / 2 - dialogHeight / 2).toString() + 'px';
this.dialogElement.style.left = (windowWidth / 2 - dialogWidth / 2).toString() + 'px';
this.backgroundElement.style.height = windowHeight;
}
isAccepted() {
try {
return sessionStorage.getItem(localKeyName);
} catch (e) {
console.log('Cannot use sessionStorage', e);
}
return null;
}
setAccepted() {
try {
sessionStorage.setItem(localKeyName, '1');
} catch (e) {
console.log('Cannot use sessionStorage', e);
}
}
static generateDialog() {
const code = `<div id="disclaimer-dialog">
<div class="center">
<h1>${strings.welcome}</h1>
<p class="italic">${strings.site_contains_adult_materials}</p>
<p class="bold">${strings.acknowledge_confirm_majority}</p>
<p><button id="agree-over18" class="agree">${strings.button_over18}</button>
<button id="disagree-under18" class="disagree">${strings.button_under18}</button></p>
<p><small>${strings.footer_imprint_paragraph}</small></p>
</div></div>
<div id="disclaimer-background"></div>`;
document.write(code);
}
}