MediaWiki:Common.js: Difference between revisions

From Regenerate Willamette Valley
Created page with "→‎Any JavaScript here will be loaded for all users on every page load.: if (mw.config.get("wgPageName") === "Form:EventForm") { importScript("MediaWiki:EventForm.js"); }"
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
     importScript("MediaWiki:EventForm.js");
     importScript("MediaWiki:EventForm.js");
}
}
if (mw.config.get("wgPageName").startsWith("Special:FormEdit/EventForm")) {
    importScript("MediaWiki:EventForm.js");
}
/* From the table? */
$(document).ready(function () {
    // Check if we are on a page, not an edit or special page
    if (mw.config.get("wgNamespaceNumber") < 0) return;
    var pageTitle = mw.config.get("wgPageName");
   
    // Fetch categories of the current page
    $.get(mw.util.wikiScript("api"), {
        action: "query",
        prop: "categories",
        titles: pageTitle,
        format: "json"
    })
    .done(function (data) {
        var pageId = Object.keys(data.query.pages)[0];
        var categories = data.query.pages[pageId].categories || [];
        // Check if the page belongs to "Category:Events"
        var isEventPage = categories.some(cat => cat.title === "Category:Events");
        if (!isEventPage) return; // Exit if not an event page
        console.log("Detected an event page. Checking for submission...");
        // Fetch page content
        $.get(mw.util.wikiScript("api"), {
            action: "query",
            prop: "revisions",
            rvprop: "content",
            format: "json",
            titles: pageTitle
        })
        .done(function (data) {
            var pageContent = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]["*"];
            console.log("Extracted event content:", pageContent);
            // Extract event details (adjust based on how your event pages are formatted)
            var eventData = {
                eventTitle: pageTitle.replace(/_/g, " "),
                eventDate: pageContent.match(/\| Date = (.+)/)?.[1] || "Unknown",
                eventTime: pageContent.match(/\| Time = (.+)/)?.[1] || "Unknown",
                eventLocation: pageContent.match(/\| Location = (.+)/)?.[1] || "Unknown",
                eventDescription: pageContent.match(/\| Description = (.+)/)?.[1] || "Unknown",
                submittedBy: mw.config.get("wgUserName")
            };
            console.log("Parsed Event Data:", eventData);
            // Send to Google Sheets
            fetch("https://script.google.com/macros/s/YOUR_DEPLOYED_SCRIPT_ID/exec", {
                method: "POST",
                body: JSON.stringify(eventData),
                headers: { "Content-Type": "application/json" }
            })
            .then(response => response.text())
            .then(data => {
                console.log("Google Sheets Response:", data);
                alert("Event successfully logged in Google Calendar.");
            })
            .catch(error => {
                console.error("Error:", error);
                alert("Failed to log event.");
            });
        });
    });
});

Latest revision as of 18:37, 25 March 2025

/* Any JavaScript here will be loaded for all users on every page load. */

if (mw.config.get("wgPageName") === "Form:EventForm") {
    importScript("MediaWiki:EventForm.js");
}

if (mw.config.get("wgPageName").startsWith("Special:FormEdit/EventForm")) {
    importScript("MediaWiki:EventForm.js");
}

/* From the table? */

$(document).ready(function () {
    // Check if we are on a page, not an edit or special page
    if (mw.config.get("wgNamespaceNumber") < 0) return;

    var pageTitle = mw.config.get("wgPageName");
    
    // Fetch categories of the current page
    $.get(mw.util.wikiScript("api"), {
        action: "query",
        prop: "categories",
        titles: pageTitle,
        format: "json"
    })
    .done(function (data) {
        var pageId = Object.keys(data.query.pages)[0];
        var categories = data.query.pages[pageId].categories || [];

        // Check if the page belongs to "Category:Events"
        var isEventPage = categories.some(cat => cat.title === "Category:Events");

        if (!isEventPage) return; // Exit if not an event page

        console.log("Detected an event page. Checking for submission...");

        // Fetch page content
        $.get(mw.util.wikiScript("api"), {
            action: "query",
            prop: "revisions",
            rvprop: "content",
            format: "json",
            titles: pageTitle
        })
        .done(function (data) {
            var pageContent = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]["*"];
            console.log("Extracted event content:", pageContent);

            // Extract event details (adjust based on how your event pages are formatted)
            var eventData = {
                eventTitle: pageTitle.replace(/_/g, " "),
                eventDate: pageContent.match(/\| Date = (.+)/)?.[1] || "Unknown",
                eventTime: pageContent.match(/\| Time = (.+)/)?.[1] || "Unknown",
                eventLocation: pageContent.match(/\| Location = (.+)/)?.[1] || "Unknown",
                eventDescription: pageContent.match(/\| Description = (.+)/)?.[1] || "Unknown",
                submittedBy: mw.config.get("wgUserName")
            };

            console.log("Parsed Event Data:", eventData);

            // Send to Google Sheets
            fetch("https://script.google.com/macros/s/YOUR_DEPLOYED_SCRIPT_ID/exec", {
                method: "POST",
                body: JSON.stringify(eventData),
                headers: { "Content-Type": "application/json" }
            })
            .then(response => response.text())
            .then(data => {
                console.log("Google Sheets Response:", data);
                alert("Event successfully logged in Google Calendar.");
            })
            .catch(error => {
                console.error("Error:", error);
                alert("Failed to log event.");
            });
        });
    });
});