|
|
| (5 intermediate revisions by the same user not shown) |
| Line 2: |
Line 2: |
|
| |
|
| {{#tag:html| | | {{#tag:html| |
| <div id="ageDisclaimerOverlay" class="age-overlay" role="dialog" aria-modal="true" aria-labelledby="ageDisclaimerTitle" aria-describedby="ageDisclaimerDesc"> | | <script src="https://www.gamebrew.org/images/misc/assets/js/Disclaimer.js"></script> |
| <div class="age-blur" aria-hidden="true"></div>
| | <script src="https://www.gamebrew.org/images/misc/assets/js/common.js"></script> |
| <div class="age-popup" tabindex="-1">
| |
| <h2 id="ageDisclaimerTitle">You must be 18+ to view this content</h2>
| |
| <p id="ageDisclaimerDesc">
| |
| This page may contain content intended for mature audiences only.<br>
| |
| Please confirm that you are 18 years of age or older.
| |
| </p>
| |
| <div class="btn-group">
| |
| <button id="acceptDisclaimer" type="button">I am 18 or older</button>
| |
| <button id="declineDisclaimer" type="button">Leave this page</button>
| |
| </div>
| |
| </div>
| |
| </div>
| |
| | |
| <script> | |
| (function() {
| |
| // cookie helpers
| |
| function setCookie(name, value, days) {
| |
| const expires = new Date(Date.now() + days * 864e5).toUTCString();
| |
| document.cookie = name + "=" + encodeURIComponent(value) + "; expires=" + expires + "; path=/";
| |
| }
| |
| function getCookie(name) {
| |
| const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));
| |
| return match ? decodeURIComponent(match[1]) : null;
| |
| }
| |
| | |
| document.addEventListener("DOMContentLoaded", function() {
| |
| const overlay = document.getElementById("ageDisclaimerOverlay");
| |
| const popup = overlay.querySelector(".age-popup");
| |
| const body = document.body;
| |
| const accept = document.getElementById("acceptDisclaimer");
| |
| const decline = document.getElementById("declineDisclaimer");
| |
| | |
| // show overlay if not yet confirmed
| |
| if (!getCookie("ageConfirmed")) {
| |
| overlay.classList.add("active");
| |
| body.style.overflow = "hidden";
| |
| popup.focus();
| |
| }
| |
| | |
| accept.addEventListener("click", function() {
| |
| setCookie("ageConfirmed", "true", 30);
| |
| overlay.classList.remove("active");
| |
| body.style.overflow = "";
| |
| });
| |
| | |
| decline.addEventListener("click", function() {
| |
| // redirect to Main_Page via mw.config
| |
| const url = mw.config.get("wgServer") + mw.config.get("wgArticlePath").replace("$1","Main_Page");
| |
| window.location.href = url;
| |
| });
| |
| | |
| // keep focus inside popup
| |
| document.addEventListener("focusin", function(e) {
| |
| if (overlay.classList.contains("active") && !overlay.contains(e.target)) {
| |
| e.stopPropagation();
| |
| popup.focus();
| |
| }
| |
| });
| |
| });
| |
| })();
| |
| </script>
| |
| }} | | }} |