MediaWiki:Common.js: Difference between revisions

From Riverview Legal Group
Access restrictions were established for this page. If you see this message, you have no access to this page.
mNo edit summary
mNo edit summary
Line 1: Line 1:
console.log("Common.js is loading correctly!");
console.log("Common.js is loading correctly!");


// Ensure the script only loads after dependencies
mw.loader.using(['jquery', 'mediawiki.user'], function () {
mw.loader.using(['jquery', 'mediawiki.user'], function () {
     $(document).ready(function () {
     $(document).ready(function () {
Line 86: Line 87:


                 // Create the Stripe popup
                 // Create the Stripe popup
                 var $stripePopup = $(`
                 var $stripePopup = $('<div class="popup-overlay" id="stripe-popup">' +
                    <div class="popup-overlay" id="stripe-popup">
                    '<div class="popup-box" style="top: 50%; left: 50%; transform: translate(-50%, -50%);">' +
                        <div class="popup-box" style="top: 50%; left: 50%; transform: translate(-50%, -50%);">
                    '<h2>Subscribe to Unlock Content</h2>' +
                            <h2>Subscribe to Unlock Content</h2>
                    '<p>Subscribe to view the full article.</p>' +
                            <p>Subscribe to view the full article.</p>
                    '<button id="subscribe-button" class="popup-button">Subscribe</button>' +
                            <button id="subscribe-button" class="popup-button">Subscribe</button>
                    '<span class="popup-close">×</span>' +
                            <span class="popup-close">×</span>
                    '</div>' +
                        </div>
                     '</div>');
                     </div>
                `);


                 $("body").append($stripePopup);
                 $("body").append($stripePopup);
Line 124: Line 123:
// Unified CSS for popups
// Unified CSS for popups
mw.util.addCSS(
mw.util.addCSS(
     ".popup-overlay {" +
     ".popup-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%;" +
    "position: fixed; top: 0; left: 0; width: 100%; height: 100%;" +
     "background: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 9999; }" +
     "background: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 9999;" +
     ".popup-box { background: white; padding: 20px; border-radius: 10px; text-align: center; width: 300px;" +
    "}" +
     "box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); position: absolute; }" +
     ".popup-box {" +
     ".popup-button { display: inline-block; background: #007bff; color: white; padding: 10px;" +
    "background: white; padding: 20px; border-radius: 10px; text-align: center; width: 300px;" +
     "text-decoration: none; border-radius: 5px; margin-top: 10px; }" +
     "box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); position: absolute;" +
     ".popup-close { position: absolute; top: 10px; right: 15px; cursor: pointer; font-size: 20px;" +
    "}" +
     "color: black; font-weight: bold; }" +
     ".popup-button {" +
     ".popup-close:hover { color: red; }"
    "display: inline-block; background: #007bff; color: white; padding: 10px;" +
     "text-decoration: none; border-radius: 5px; margin-top: 10px;" +
    "}" +
     ".popup-close {" +
    "position: absolute; top: 10px; right: 15px; cursor: pointer; font-size: 20px;" +
     "color: black; font-weight: bold;" +
    "}" +
     ".popup-close:hover {" +
    "color: red;" +
    "}"+
    ".blurred-content { filter: blur(8px) !important; }"
);
);

Revision as of 00:07, 2 March 2025

console.log("Common.js is loading correctly!");

// Ensure the script only loads after dependencies
mw.loader.using(['jquery', 'mediawiki.user'], function () {
    $(document).ready(function () {
        var popupTimeout1 = 10000; // 10 seconds for first popup
        var popupTimeout2 = 20000; // 20 seconds for second popup

        var loggedInUser = mw.config.get('wgUserName');
        console.log("Logged-in User:", loggedInUser);

        if (!loggedInUser) {
            console.log("User is logged out, scheduling popups.");

            // Define popups
            var popups = [
                {
                    id: "popup1",
                    title: "Free Legal Consultation <br> Riverview Legal Group (Ontario)",
                    content: "Our primary focus is the Ontario Landlord and Tenant Board.<br>Call us for help at (888) 655-1076",
                    link: "https://riverview.legal/about-us/",
                    linkText: "Book a Consultation",
                    eventLabel: "Legal Consultation Popup",
                    position: "top: 20%; left: 50%; transform: translate(-50%, 0);"
                },
                {
                    id: "popup2",
                    title: "Are you a Legal Professional?",
                    content: "Support our work with the Caselaw Ninja on Patreon.<br>Become a member today",
                    link: "https://patreon.com/CaselawNinja",
                    linkText: "Join Here",
                    eventLabel: "Patreon Popup",
                    position: "top: 60%; left: 50%; transform: translate(-50%, 0);"
                }
            ];

            function sendAnalyticsEvent(label) {
                if (typeof gtag === "function") {
                    gtag('event', 'popup_shown', {
                        'event_category': 'Engagement',
                        'event_label': label,
                        'value': 1
                    });
                } else {
                    console.warn("Google Analytics not detected.");
                }
            }

            function showPopup(popupData) {
                if (sessionStorage.getItem(popupData.id)) return; // Prevent duplicate popups
                
                console.log("Triggering popup: " + popupData.id);
                
                var popup = $('<div class="popup-overlay" id="' + popupData.id + '">' +
                    '<div class="popup-box" style="' + popupData.position + '">' +
                    '<h2>' + popupData.title + '</h2>' +
                    '<p>' + popupData.content + '</p>' +
                    '<a href="' + popupData.link + '" target="_blank" class="popup-button">' + popupData.linkText + '</a>' +
                    '<span class="popup-close">×</span>' +
                    '</div>' +
                    '</div>');

                $("body").append(popup);
                sendAnalyticsEvent(popupData.eventLabel);
                sessionStorage.setItem(popupData.id, "true");

                $(".popup-close").click(function () {
                    $(this).closest(".popup-overlay").fadeOut(function() { $(this).remove(); });
                });
            }

            setTimeout(function () { showPopup(popups[0]); }, popupTimeout1);
            setTimeout(function () { showPopup(popups[1]); }, popupTimeout2);

            // Apply blur effect after third ==Sub Header==
            var $subHeaders = $("h2");

            if ($subHeaders.length >= 3) {
                console.log("Applying blur after third header.");
                var $thirdHeader = $subHeaders.eq(2);
                var $contentToBlur = $thirdHeader.nextAll();
                $contentToBlur.css({
                    "filter": "blur(8px)",
                    "pointer-events": "none",
                    "user-select": "none"
                });

                // Create the Stripe popup
                var $stripePopup = $('<div class="popup-overlay" id="stripe-popup">' +
                    '<div class="popup-box" style="top: 50%; left: 50%; transform: translate(-50%, -50%);">' +
                    '<h2>Subscribe to Unlock Content</h2>' +
                    '<p>Subscribe to view the full article.</p>' +
                    '<button id="subscribe-button" class="popup-button">Subscribe</button>' +
                    '<span class="popup-close">×</span>' +
                    '</div>' +
                    '</div>');

                $("body").append($stripePopup);

                // Stripe Checkout Handler
                $("#subscribe-button").click(function () {
                    var stripe = Stripe("your_stripe_publishable_key");
                    stripe.redirectToCheckout({
                        sessionId: "your_checkout_session_id"
                    }).then(function (result) {
                        if (result.error) {
                            alert(result.error.message);
                        }
                    });
                });

                // Close Stripe popup
                $("#stripe-popup .popup-close").click(function () {
                    $("#stripe-popup").fadeOut(function() { $(this).remove(); });
                });
            } else {
                console.warn("Not enough headers found for blur effect.");
            }
        }
    });
});

// Unified CSS for popups
mw.util.addCSS(
    ".popup-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%;" +
    "background: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 9999; }" +
    ".popup-box { background: white; padding: 20px; border-radius: 10px; text-align: center; width: 300px;" +
    "box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); position: absolute; }" +
    ".popup-button { display: inline-block; background: #007bff; color: white; padding: 10px;" +
    "text-decoration: none; border-radius: 5px; margin-top: 10px; }" +
    ".popup-close { position: absolute; top: 10px; right: 15px; cursor: pointer; font-size: 20px;" +
    "color: black; font-weight: bold; }" +
    ".popup-close:hover { color: red; }"
);