Zum Inhalt springen

MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus transformal GmbH
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 162: Zeile 162:
}
}


/* Template 'ConditionalContent' - v250921r10 */
/* Template 'ConditionalContent' - v250921r11 */


$(function() {
$(function() {
    console.log('ConditionalText JS loaded');
    console.log('Elements found:', $('.logged-in-only, .logged-out-only').length);
    console.log('User is anon:', mw.user.isAnon());
     // Only run if conditional content exists   
     // Only run if conditional content exists   
     if (!$('.logged-in-only, .logged-out-only').length) return;
     if (!$('.logged-in-only, .logged-out-only').length) return;
Zeile 179: Zeile 176:
         $('.logged-out-only').css('display', 'none');
         $('.logged-out-only').css('display', 'none');
     }
     }
   
    console.log('Logged-in-only display:', $('.logged-in-only').css('display'));
    console.log('Logged-out-only display:', $('.logged-out-only').css('display'));
    console.log('Logged-in-only style attr:', $('.logged-in-only').attr('style'));
      
      
     // Clean TOC
     // Clean TOC

Version vom 21. September 2025, 16:45 Uhr

/* Unified Consent System JavaScript v250911r1 
 * Single file for both EN and DE versions
 * Automatically detects language based on domain
 */
/* Common JavaScript - Keep only consent system if needed */

// Language detection helper
function getCurrentLanguage() {
    var hostname = window.location.hostname;
    return (hostname === 'de.transformal.com' || 
            hostname === 'de.olaflangmack.info' ||
            hostname === 'de.mediawiki.transformal.com') ? 'de' : 'en';
}

// Localized strings
var strings = {
    en: {
        journalingEnabled: 'Journaling enabled',
        journalingDisabled: 'Journaling disabled',
        proofOfWorkEnabled: 'Proof-of-work enabled',
        proofOfWorkDisabled: 'Proof-of-work disabled',
        preferencesSaved: 'Your preferences are being saved',
        checkboxLabel: 'Enabled'
    },
    de: {
        journalingEnabled: 'Aufzeichnungen zugelassen',
        journalingDisabled: 'Aufzeichnungen nicht zugelassen',
        proofOfWorkEnabled: 'Proof-of-work zugelassen',
        proofOfWorkDisabled: 'Proof-of-work nicht zugelassen',
        preferencesSaved: 'Ihre Einstellungen werden gespeichert',
        checkboxLabel: 'Erlaubt'
    }
};

function getString(key) {
    var lang = getCurrentLanguage();
    return strings[lang][key] || strings.en[key];
}

// Handle consent acquisition box - 90-day reminder for everyone
$(document).ready(function() {
    var consentBox = document.getElementById('consent-acquisition-box');
    if (!consentBox) return;
    
    // Check if dismissed within last 90 days
    var dismissedUntil = localStorage.getItem('consent-acquisition-dismissed-until');
    var now = Date.now();
    
    if (dismissedUntil && parseInt(dismissedUntil) > now) {
        // Still within 90-day dismissal period
        consentBox.style.display = 'none';
    } else {
        // Show box - dismissal expired or never dismissed
        consentBox.style.display = 'block';
        consentBox.classList.add('show');
    }
    
    consentBox.addEventListener('click', function() {
        sessionStorage.setItem('consent-acquisition-dismissed', 'true');
        // ADD THIS LINE:
        localStorage.setItem('consent-acquisition-dismissed-until', Date.now() + (90 * 24 * 60 * 60 * 1000));
        var targetPage = getCurrentLanguage() === 'de' ? 
            '/wiki/Transformal_GmbH:Einstellungen' : 
            '/wiki/Transformal_GmbH:Settings';
        window.location.href = targetPage;
    });
});

// Convert template placeholders to actual checkboxes
$(function() {
    $('.consent-option').each(function() {
        var $option = $(this);
        if ($option.find('.consent-checkbox').length > 0) return;
        
        var consentId = $option.find('.consent-data').text().trim();
        var status = $option.find('.consent-status-data').text().trim();
        
        var $checkboxRow = $option.find('.checkbox-row');
        if (!$checkboxRow.length) return;
        
        var $container = $('<span class="checkbox-container"></span>');
        var $checkbox = $('<input>', {
            type: 'checkbox',
            id: consentId,
            class: 'consent-checkbox'
        });
        
        if (status === 'disabled') {
            $checkbox.prop('disabled', true);
        }
        
        var label = $option.find('.checkbox-placeholder').attr('data-label') || getString('checkboxLabel');
        var $label = $('<label>', {
          'for': consentId,
          text: ' ' + label,
          style: 'cursor: pointer;'
        });
        
        $container.append($checkbox).append($label);
        $checkboxRow.append($container);
        $checkboxRow.find('.checkbox-placeholder').remove();
        
        var saved = localStorage.getItem(consentId) === 'true';
        $checkbox.prop('checked', saved);
        
        $checkbox.on('change', function() {
            localStorage.setItem(consentId, this.checked);
            if (typeof handleConsentChange === 'function') {
              handleConsentChange(consentId, this.checked);
            }
            if (typeof showConsentFeedback === 'function') {
                showConsentFeedback(consentId, this.checked);
            }
        });
    });
});

// Handle consent changes for different features
function handleConsentChange(feature, enabled) {
    if (feature === 'matomo-consent') {
        if (enabled) {
            if (window._paq) {
                // Enable enhanced tracking
                _paq.push(['setCookieConsentGiven']);
                _paq.push(['setConsentGiven']);
                // Track this page view again with full details
                _paq.push(['trackPageView']);
                _paq.push(['enableHeartBeatTimer']);
                _paq.push(['trackVisibleContentImpressions']);
            }
        } else {
            if (window._paq) {
                // Revert to anonymous tracking only
                _paq.push(['forgetCookieConsentGiven']);
                _paq.push(['forgetConsentGiven']);
                // Note: Already tracked pages remain in this session
            }
        }
    }
}

// Show feedback when consent changes
function showConsentFeedback(feature, enabled) {
    var feedbackDiv = document.getElementById('consent-feedback');
    if (!feedbackDiv) return;
    
    var message = '';
    if (feature === 'matomo-consent') {
        message = enabled ? getString('journalingEnabled') : getString('journalingDisabled');
    } else if (feature === 'altcha-consent') {
        message = enabled ? getString('proofOfWorkEnabled') : getString('proofOfWorkDisabled');
    }
    
    if (message) {
        feedbackDiv.innerHTML = message + ' &ndash; ' + getString('preferencesSaved');
        feedbackDiv.style.display = 'block';
        
        setTimeout(function() {
            feedbackDiv.style.display = 'none';
        }, 3000);
    }
}

/* Template 'ConditionalContent' - v250921r11 */

$(function() {
    // Only run if conditional content exists  
    if (!$('.logged-in-only, .logged-out-only').length) return;
    
    // Show/hide content with CSS override
    if (mw.user.isAnon()) {
        $('.logged-out-only').css('display', 'block');
        $('.logged-in-only').css('display', 'none');
    } else {
        $('.logged-in-only').css('display', 'block');
        $('.logged-out-only').css('display', 'none');
    }
    
    // Clean TOC
    var toc = $('.vector-toc')[0] || $('#toc')[0] || $('.toc')[0];
    if (!toc) return;
    
    $('.logged-in-only:hidden, .logged-out-only:hidden').each(function() {
        $(this).find('h1, h2, h3, h4, h5, h6').each(function() {
            var id = this.id || $(this).find('.mw-headline').attr('id');
            if (id) {
                $(toc).find('a[href="#' + id + '"]').closest('li').remove();
            }
        });
    });
});