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 4: Line 4:
mw.loader.using(['jquery', 'mediawiki.user'], function () {
mw.loader.using(['jquery', 'mediawiki.user'], function () {
     $(document).ready(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');
         var loggedInUser = mw.config.get('wgUserName');
        var pageNamespace = mw.config.get('wgCanonicalNamespace');
         console.log("Logged-in User:", loggedInUser);
         console.log("Logged-in User:", loggedInUser);
        console.log("Page Namespace:", pageNamespace);


         if (!loggedInUser) {
        // Exit script if user is logged in or on a category page
             console.log("User is logged out, scheduling popups.");
         if (loggedInUser || pageNamespace === "Category") {
             console.log("User is logged in or on a category page. No blur applied.");
            return;
        }


            // Define popups
        console.log("User is not logged in. Applying blur effect.");
            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) {
        // Find the third subheader
                if (typeof gtag === "function") {
        var $subHeaders = $("#mw-content-text h2");
                    gtag('event', 'popup_shown', {
                        'event_category': 'Engagement',
                        'event_label': label,
                        'value': 1
                    });
                } else {
                    console.warn("Google Analytics not detected.");
                }
            }


            function showPopup(popupData) {
        if ($subHeaders.length >= 3) {
                if (sessionStorage.getItem(popupData.id)) return; // Prevent duplicate popups
            console.log("Applying blur after third header.");
               
            var $thirdHeader = $subHeaders.eq(2);
                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);
            // Select only content below the third header, excluding side menus
                 sendAnalyticsEvent(popupData.eventLabel);
            var $contentToBlur = $thirdHeader.nextAll()
                sessionStorage.setItem(popupData.id, "true");
                 .not(".sidebar, .mw-portlet, #p-tb, #p-personal, #footer, #catlinks");


                $(".popup-close").click(function () {
            // Apply blur effect
                    $(this).closest(".popup-overlay").fadeOut(function() { $(this).remove(); });
            $contentToBlur.css({
                 });
                "filter": "blur(8px)",
            }
                "pointer-events": "none",
                 "user-select": "none"
            });


             setTimeout(function () { showPopup(popups[0]); }, popupTimeout1);
             // Create the Stripe popup
            setTimeout(function () { showPopup(popups[1]); }, popupTimeout2);
            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>');


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


             if ($subHeaders.length >= 3) {
             // Stripe Checkout Handler
                console.log("Applying blur after third header.");
            $("#subscribe-button").click(function () {
                var $thirdHeader = $subHeaders.eq(2);
                 var stripe = Stripe("your_stripe_publishable_key");
                 var $contentToBlur = $thirdHeader.nextAll();
                 stripe.redirectToCheckout({
                 $contentToBlur.css({
                     sessionId: "your_checkout_session_id"
                     "filter": "blur(8px)",
                }).then(function (result) {
                     "pointer-events": "none",
                     if (result.error) {
                     "user-select": "none"
                        alert(result.error.message);
                     }
                 });
                 });
            });


                // Create the Stripe popup
            // Close Stripe popup
                var $stripePopup = $('<div class="popup-overlay" id="stripe-popup">' +
            $("#stripe-popup .popup-close").click(function () {
                    '<div class="popup-box" style="top: 50%; left: 50%; transform: translate(-50%, -50%);">' +
                $("#stripe-popup").fadeOut(function () { $(this).remove(); });
                    '<h2>Subscribe to Unlock Content</h2>' +
            });
                    '<p>Subscribe to view the full article.</p>' +
        } else {
                    '<button id="subscribe-button" class="popup-button">Subscribe</button>' +
            console.warn("Not enough headers found for blur effect.");
                    '<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.");
            }
         }
         }
     });
     });

Revision as of 00:10, 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 loggedInUser = mw.config.get('wgUserName');
        var pageNamespace = mw.config.get('wgCanonicalNamespace');
        console.log("Logged-in User:", loggedInUser);
        console.log("Page Namespace:", pageNamespace);

        // Exit script if user is logged in or on a category page
        if (loggedInUser || pageNamespace === "Category") {
            console.log("User is logged in or on a category page. No blur applied.");
            return;
        }

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

        // Find the third subheader
        var $subHeaders = $("#mw-content-text h2");

        if ($subHeaders.length >= 3) {
            console.log("Applying blur after third header.");
            var $thirdHeader = $subHeaders.eq(2);

            // Select only content below the third header, excluding side menus
            var $contentToBlur = $thirdHeader.nextAll()
                .not(".sidebar, .mw-portlet, #p-tb, #p-personal, #footer, #catlinks");

            // Apply blur effect
            $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; }"
);