MediaWiki:Common.js
From PBARC
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. */ // Wikipedia citation tool const textbox = document.querySelector('#wpTextbox1') if (textbox) { const summaryBox = document.querySelector("#wpSummaryLabel > div:nth-child(1)") const label = summaryBox.querySelector("label") label.setAttribute("for", "citations") label.textContent = "If you quoted a Wikipedia article, paste its Web address (starting with \"https:/\/en.wikipedia.org/\") here, then click \"Add citation.\" Do this for each article quoted. This is not necessary if the article is already cited in this page." const input = summaryBox.querySelector("input") input.id = "citations" input.setAttribute("name", "citations") input.setAttribute("title", "Enter URLs to Wikipedia articles") const button = document.createElement("button") button.classList = ["oo-ui-inputWidget-input", "oo-ui-buttonElement-button"] button.style.marginBottom = "1em" button.textContent = "Add citation" summaryBox.appendChild(button) button.addEventListener("click", function(e) { e.preventDefault() const url = input.value const regex = /\/wiki\/(.+)/; // Regex pattern to extract the title const match = url.match(regex); // Perform matching if (url.search("en.wikipedia.org") != -1 && match && match.length > 1) { const title = decodeURIComponent(match[1]).replace(/_/g, ' ') const citation = "{{Wikipedia|" + title + "}}" if (textbox.value.search(citation) == -1) { textbox.value = textbox.value.trim() + "\n\n" + citation input.value = "" } } else { alert("That URL does not seem to be a Wikipedia article.") } }) } // End Wikipedia citation tool // CC BY-SA checkbox if (document.querySelector('.mw-newarticletext')) { const checkboxWrapper = document.createElement('div') checkboxWrapper.innerHTML = '<div id="mw-editpage-ccbysa" class="oo-ui-layout oo-ui-labelElement oo-ui-fieldLayout oo-ui-fieldLayout-align-inline"><div class="oo-ui-fieldLayout-body"><span class="oo-ui-fieldLayout-field"><span id="wpCcbysaWidget" class="oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-checkboxInputWidget" data-ooui="{"_":"OO.ui.CheckboxInputWidget","selected":true,"name":"wpCcbysa","inputId":"wpCcbysa","tabIndex":4,"accessKey":"w","required":false}"><input type="checkbox" tabindex="4" accesskey="w" name="wpCcbysa" value="" id="wpCcbysa" class="oo-ui-inputWidget-input" checked="checked"><span class="oo-ui-checkboxInputWidget-checkIcon oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-check oo-ui-iconElement oo-ui-labelElement-invisible oo-ui-iconWidget oo-ui-image-invert"></span></span></span><span class="oo-ui-fieldLayout-header"><label title="Publish this page under CC BY-SA" for="wpCcbysa" class="oo-ui-labelElement-label">Publish under <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0 International</a> license</label></span></div></div>' document.querySelector(".editCheckboxes").replaceWith(checkboxWrapper) const checkbox = checkboxWrapper.firstChild document.querySelector("textarea").value = "\n<!-- Please do not edit this line; keep all content above it -->{{CC BY-SA}}" checkbox.querySelector("input").addEventListener('change', function(e) { area = document.querySelector("textarea") if (e.currentTarget.checked) { area.value = area.value.replaceAll("{{CC BY-SA}}", "").replaceAll("<!-- Please do not edit this line; keep all content above it -->", "").trimEnd() + "\n<!-- Please do not edit this line; keep all content above it -->{{CC BY-SA}}" } else { area.value = area.value.replaceAll("{{CC BY-SA}}", "").replaceAll("<!-- Please do not edit this line; keep all content above it -->", "").trimEnd() } }); document.querySelector(".editCheckboxes").firstChild.appendChild(checkbox) } if (document.querySelector("#p-personal-label").textContent == "Not logged in") { document.querySelectorAll("a.new, .new a").forEach( function(redlink) { var span = document.createElement("span") span.textContent = redlink.textContent redlink.replaceWith(span) } ) } // End CC BY-SA checkbox // MobileEcho var buttonsAdded = false; function echoLoading() { document.body.classList.add('mobileecho-hide-overflow'); if (! buttonsAdded) { setTimeout( function() { var closeButton = document.createElement('button'); closeButton.setAttribute('class', "mobileecho-close-button oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-close oo-ui-labelElement-invisible oo-ui-iconWidget"); var headers = document.querySelectorAll('.oo-ui-popupWidget-head'); console.log(headers) var header; for (header in headers) { var newCloseButton = closeButton.cloneNode(); newCloseButton.addEventListener( 'click', function() { document.body.click(); } ); headers[header].appendChild(newCloseButton); } }, 500 ); buttonsAdded = true; } setTimeout( function() { document.querySelector('a.oo-ui-icon-bell').addEventListener( 'click', echoLoading ); document.querySelector('a.oo-ui-icon-tray').addEventListener( 'click', echoLoading ); }, 500 ); } document.body.addEventListener( 'click', function(e) { if (! document.querySelector('.mw-echo-ui-overlay').contains(e.target) && ! document.querySelector('#personal-extra').contains(e.target)) { document.body.classList.remove('mobileecho-hide-overflow'); } } ); document.querySelector('a.oo-ui-icon-bell').addEventListener( 'click', echoLoading ); document.querySelector('a.oo-ui-icon-tray').addEventListener( 'click', echoLoading ); // End MobileEcho