MediaWiki:Common.js: Difference between revisions

From PBARC
No edit summary
No edit summary
Line 47: Line 47:
   const checkboxWrapper = document.createElement('div')
   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="{&quot;_&quot;:&quot;OO.ui.CheckboxInputWidget&quot;,&quot;selected&quot;:true,&quot;name&quot;:&quot;wpCcbysa&quot;,&quot;inputId&quot;:&quot;wpCcbysa&quot;,&quot;tabIndex&quot;:4,&quot;accessKey&quot;:&quot;w&quot;,&quot;required&quot;: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>'
   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="{&quot;_&quot;:&quot;OO.ui.CheckboxInputWidget&quot;,&quot;selected&quot;:true,&quot;name&quot;:&quot;wpCcbysa&quot;,&quot;inputId&quot;:&quot;wpCcbysa&quot;,&quot;tabIndex&quot;:4,&quot;accessKey&quot;:&quot;w&quot;,&quot;required&quot;: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
   const checkbox = checkboxWrapper.firstChild
  checkbox.id = "ccbox"


   document.querySelector("textarea").value = "\n<!-- Please do not edit this line; keep all content above it -->{{CC BY-SA}}"
   document.querySelector("textarea").value = "\n<!-- Please do not edit this line; keep all content above it -->{{CC BY-SA}}"

Revision as of 17:26, 28 June 2023

/* 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
      }
    } 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="{&quot;_&quot;:&quot;OO.ui.CheckboxInputWidget&quot;,&quot;selected&quot;:true,&quot;name&quot;:&quot;wpCcbysa&quot;,&quot;inputId&quot;:&quot;wpCcbysa&quot;,&quot;tabIndex&quot;:4,&quot;accessKey&quot;:&quot;w&quot;,&quot;required&quot;: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