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 101: Line 101:
     "}"
     "}"
);
);
// New Program
$(document).ready(function () {
    // Check if user is logged in
    if (mw.config.get("wgUserName")) {
        console.log("User is logged in. No blur applied.");
        return; // Exit if the user is logged in
    }
    console.log("User is not logged in. Applying blur and popup.");
    // Find the third subheader
    var $subHeaders = $("h2");
   
    if ($subHeaders.length < 3) {
        console.warn("Not enough headers found!");
        return;
    }
    var $thirdHeader = $subHeaders.eq(2); // Zero-based index
    // Blur everything below the third sub-header
    var $contentToBlur = $thirdHeader.nextAll();
    $contentToBlur.css({
        "filter": "blur(8px)",
        "pointer-events": "none",
        "user-select": "none"
    });
    // Create the popup div
    var $popup = $(`
        <div id="stripe-popup" style="
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            padding: 20px;
            box-shadow: 0px 4px 10px rgba(0,0,0,0.2);
            border-radius: 10px;
            z-index: 1000;
            text-align: center;
        ">
            <h2>Subscribe to Unlock Content</h2>
            <p>Subscribe to view the full article.</p>
            <button id="subscribe-button" style="
                background: #635bff;
                color: white;
                border: none;
                padding: 10px 20px;
                cursor: pointer;
                font-size: 16px;
                border-radius: 5px;
            ">Subscribe</button>
        </div>
    `);
    // Append popup to the body
    $("body").append($popup);
    // 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);
            }
        });
    });
});

Revision as of 00:01, 2 March 2025

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

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

        // Define the two 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(); });
            });
        }

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

        if (!loggedInUser) {
            console.log("User is logged out, scheduling popups.");
            setTimeout(function () {
                showPopup(popups[0]);
            }, popupTimeout1);

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

// 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;" +
    "}"
);

// New Program

$(document).ready(function () {
    // Check if user is logged in
    if (mw.config.get("wgUserName")) {
        console.log("User is logged in. No blur applied.");
        return; // Exit if the user is logged in
    }

    console.log("User is not logged in. Applying blur and popup.");

    // Find the third subheader
    var $subHeaders = $("h2");
    
    if ($subHeaders.length < 3) {
        console.warn("Not enough headers found!");
        return;
    }

    var $thirdHeader = $subHeaders.eq(2); // Zero-based index

    // Blur everything below the third sub-header
    var $contentToBlur = $thirdHeader.nextAll();
    $contentToBlur.css({
        "filter": "blur(8px)",
        "pointer-events": "none",
        "user-select": "none"
    });

    // Create the popup div
    var $popup = $(`
        <div id="stripe-popup" style="
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            padding: 20px;
            box-shadow: 0px 4px 10px rgba(0,0,0,0.2);
            border-radius: 10px;
            z-index: 1000;
            text-align: center;
        ">
            <h2>Subscribe to Unlock Content</h2>
            <p>Subscribe to view the full article.</p>
            <button id="subscribe-button" style="
                background: #635bff;
                color: white;
                border: none;
                padding: 10px 20px;
                cursor: pointer;
                font-size: 16px;
                border-radius: 5px;
            ">Subscribe</button>
        </div>
    `);

    // Append popup to the body
    $("body").append($popup);

    // 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);
            }
        });
    });
});