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:
     $(document).ready(function () {
     $(document).ready(function () {
         var popupShown = sessionStorage.getItem("popupShown");
         var popupShown = sessionStorage.getItem("popupShown");
         var popupTimeout = 120000; // 2 minutes
         var popupTimeout1 = 120000; // 2 minutes for first popup
        var popupTimeout2 = 180000; // 3 minutes for second popup
         var timeoutTriggered = false;
         var timeoutTriggered = false;


Line 14: Line 15:
                 link: "https://riverview.legal/about-us/",
                 link: "https://riverview.legal/about-us/",
                 linkText: "Book a Consultation",
                 linkText: "Book a Consultation",
                 eventLabel: "Legal Consultation Popup"
                 eventLabel: "Legal Consultation Popup",
                position: "top: 20%; left: 50%; transform: translate(-50%, 0);"
             },
             },
             {
             {
Line 21: Line 23:
                 link: "https://patreon.com/CaselawNinja",
                 link: "https://patreon.com/CaselawNinja",
                 linkText: "Join Here",
                 linkText: "Join Here",
                 eventLabel: "Patreon Popup"
                 eventLabel: "Patreon Popup",
                position: "top: 60%; left: 50%; transform: translate(-50%, 0);"
             }
             }
         ];
         ];
        // Choose a popup randomly or based on logic
        var selectedPopup = popups[Math.floor(Math.random() * popups.length)];


         function sendAnalyticsEvent(label) {
         function sendAnalyticsEvent(label) {
Line 40: Line 40:
         }
         }


         function showPopup() {
         function showPopup(popupData) {
             var popup = $('<div id="popup-overlay">' +
             var popup = $('<div class="popup-overlay">' +
                 '<div id="popup-box">' +
                 '<div class="popup-box" style="' + popupData.position + '">' +
                 '<h2>' + selectedPopup.title + '</h2>' +
                 '<h2>' + popupData.title + '</h2>' +
                 '<p>' + selectedPopup.content + '</p>' +
                 '<p>' + popupData.content + '</p>' +
                 '<a href="' + selectedPopup.link + '" target="_blank" class="popup-button">' + selectedPopup.linkText + '</a>' +
                 '<a href="' + popupData.link + '" target="_blank" class="popup-button">' + popupData.linkText + '</a>' +
                 '<span id="popup-close">×</span>' +
                 '<span class="popup-close">×</span>' +
                 '</div>' +
                 '</div>' +
                 '</div>');
                 '</div>');


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


             $("#popup-close").click(function () {
             $(".popup-close").click(function () {
                 $("#popup-overlay").fadeOut(function() { $(this).remove(); });
                 $(this).closest(".popup-overlay").fadeOut(function() { $(this).remove(); });
             });
             });
            $(document).off("scroll", scrollHandler);
        }
        function scrollHandler() {
            if (!popupShown || timeoutTriggered) {
                showPopup();
            }
         }
         }


Line 73: Line 64:


         if (!loggedInUser) {
         if (!loggedInUser) {
            $(document).one("scroll", scrollHandler);
             setTimeout(function () {
             setTimeout(function () {
                 timeoutTriggered = true;
                 showPopup(popups[0]);
                $(document).one("scroll", scrollHandler);
            }, popupTimeout1);
             }, popupTimeout);
 
            setTimeout(function () {
                showPopup(popups[1]);
             }, popupTimeout2);
         }
         }
     });
     });
Line 84: Line 77:
// 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 {" +
     ".popup-box {" +
     "background: white; padding: 20px; border-radius: 10px; text-align: center; width: 300px;" +
     "background: white; padding: 20px; border-radius: 10px; text-align: center; width: 300px;" +
     "box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); position: relative;" +
     "box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); position: absolute;" +
     "}" +
     "}" +
     ".popup-button {" +
     ".popup-button {" +
Line 96: Line 89:
     "text-decoration: none; border-radius: 5px; margin-top: 10px;" +
     "text-decoration: none; border-radius: 5px; margin-top: 10px;" +
     "}" +
     "}" +
     "#popup-close {" +
     ".popup-close {" +
     "position: absolute; top: 10px; right: 15px; cursor: pointer; font-size: 20px;" +
     "position: absolute; top: 10px; right: 15px; cursor: pointer; font-size: 20px;" +
     "}"
     "}"
);
);

Revision as of 05:10, 25 February 2025

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

mw.loader.using(['jquery', 'mediawiki.user'], function () {
    $(document).ready(function () {
        var popupShown = sessionStorage.getItem("popupShown");
        var popupTimeout1 = 120000; // 2 minutes for first popup
        var popupTimeout2 = 180000; // 3 minutes for second popup
        var timeoutTriggered = false;

        // Define the two popups
        var popups = [
            {
                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);"
            },
            {
                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) {
            var popup = $('<div class="popup-overlay">' +
                '<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);

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

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

        sessionStorage.removeItem("popupShown");

        if (!loggedInUser) {
            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;" +
    "}"
);