MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
Line 62: | Line 62: | ||
// find the person's name in the node, and surround their name (in the innerhtml) with a span and change the color to purple. Make sure that the name only exists in the text, and not in the html (so we don't change the color of the link) | // find the person's name in the node, and surround their name (in the innerhtml) with a span and change the color to purple. Make sure that the name only exists in the text, and not in the html (so we don't change the color of the link) | ||
var | var nodeText = node.textContent; | ||
// replace the node's | // Iterate through each user's name | ||
for (var j = 0; j < users.length; j++) { | |||
// this entire section was made by copilot | var userName = users[j]; | ||
// Create a regular expression to match the name in the text | |||
var regex = new RegExp('\\b' + userName + '\\b', 'g'); | |||
// Check if the user's name is present in the text | |||
if (nodeText.match(regex)) { | |||
// Create a new HTML string with the name wrapped in a <span> element | |||
var highlightedText = nodeText.replace(regex, '<span style="color: purple;">$&</span>'); | |||
// Update the node's HTML with the highlighted text | |||
node.innerHTML = highlightedText; | |||
} | |||
} | |||
// this entire section was made by copilot because im too lazy to do it myself | |||
} | } | ||
Revision as of 15:21, 5 October 2023
/* Any JavaScript here will be loaded for all users on every page load. */ //Note that while loading content, appending "/wiki" or "/w" before the "/index..." statement may cause 404 errors or mime type mismatch errors (403) //Import the Navbox.js scripts for the navbox price/name sorting functionality // mw.loader.load( '/index.php?title=MediaWiki:Navbox.js&action=raw&ctype=text/javascript' ); // Sitenotice var sitenotice = document.querySelector('#siteNotice .mw-dismissable-notice'); if (!sitenotice) sitenotice = document.querySelector('#siteNotice'); if (sitenotice) { sitenotice.classList.add('sitenoticestyling'); } // Add extra info to infobox's cost header to notify users to take it with a grain of salt var headers = document.querySelectorAll('.pi-header'); if (headers) { headers.forEach(function(header) { var paragraph = header.querySelector('p'); if (paragraph.textContent.includes('Cost')) { header.style.textDecoration = 'underline dashed'; header.style.cursor = "help"; header.title = "The Cost section is meant to be taken with a grain of salt. Price fluctuates based on the economy, and the stats listed are meant to serve as a rough estimate.\nNote: KetchupBot does not automatically update this section."; console.log("Added styling to Cost header on infobox"); } }) } // Experimental donator user group checker $(document).ready(function(){ mw.loader.using('mediawiki.api', function() { var api = new mw.Api(); console.log("Searching for donators") api.get( { action: "query", list: "allusers", augroup: "donator", aulimit: "max", format: "json" } ).done( function ( data ) { var users = data.query.allusers; users = users.map(function(user) { return user.name; }) var xpath = users.map(function(user) { return "contains(text(), '" + user + "')" }) xpath = '//*[' + xpath.join(' or ') + ']'; var nodes = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); // Add a style for donors for (var i = 0; i < nodes.snapshotLength; i++) { var node = nodes.snapshotItem(i); // find the person's name in the node, and surround their name (in the innerhtml) with a span and change the color to purple. Make sure that the name only exists in the text, and not in the html (so we don't change the color of the link) var nodeText = node.textContent; // Iterate through each user's name for (var j = 0; j < users.length; j++) { var userName = users[j]; // Create a regular expression to match the name in the text var regex = new RegExp('\\b' + userName + '\\b', 'g'); // Check if the user's name is present in the text if (nodeText.match(regex)) { // Create a new HTML string with the name wrapped in a <span> element var highlightedText = nodeText.replace(regex, '<span style="color: purple;">$&</span>'); // Update the node's HTML with the highlighted text node.innerHTML = highlightedText; } } // this entire section was made by copilot because im too lazy to do it myself } } ); }) } );