MediaWiki:Common.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* 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."); }); }); }); });