Diferencia entre revisiones de «MediaWiki:Common.js»

2469 bytes eliminados ,  hace 2 meses
m
sin resumen de edición
m (fix those links)
m
(No se muestran 68 ediciones intermedias de 5 usuarios)
/* Any JavaScript here will be loaded for all users on every page load. */
 
/* replace "Coppermind:Bienvenidos" with "Te damos la bienvenida a la Coppermind" */
/*
$('h1:contains("Coppermind:Bienvenidos")').text("Te damos la bienvenida a la Coppermind");
wrapper for creating new html elements
*/
function ne(tag, attrs) {
var _ = $(document.createElement(tag));
for (var i in attrs)
_.attr(i, attrs[i]);
return _;
}
 
/* push Notes down below infoboxes */
$('h2:contains("Notes")').attr('class','notes');
 
/* replace "Coppermind:Welcome" with "Welcome to the Coppermind" */
$('h1:contains("Coppermind:Welcome")').text("Welcome to the Coppermind");
 
/* 2014-05
add title attributes to all ref tags, containing the text shown in the ref
*/
$('[id*="cite_ref"]').each(function (i, el) {
var el = $(el)
var a = $('[href="#'+el.attr('id')+'"]')
el.attr('title', a.next('.reference-text').text() || a.parent().nextAll('.reference-text').text())
})
 
/* 2017-11 - protect roll back links */
$('.mw-rollback-link').attr('onclick', "return confirm('definitely roll back?')")
 
/* 2014-04
*/
$('[href*="title="]').attr('href', function (i, value) {
const old_link = value
return value.replace(/\/w\/index.php\?title=(.+?)\&(.+?)/, "/wiki/$1?$2")
//console.debug('was linking to:', value)
value = value.replace(/\/wiki\/\?title=([^&]+)\&(.+)/, "/wiki/$1?$2")
value = value.replace(/\/w\/index.php\?title=(.+?)\&(.+?)/, "/wiki/$1?$2")
if (old_link != value)
console.debug('now linking to:', value, 'not:', old_link)
return value
})
$(function() {
$('#searchform').attr('action', '/wiki/Special:Search')
$('form').attr('action', function (i, value) {
return value.replace("/w/index.php", "/wiki/" + $('[name="title"]', this).attr('value'))
})
$("[name='title']",$('form')).remove()
 
document.querySelectorAll('form.mw-search').forEach(function(form) { form.setAttribute('action','/wiki/Special:Search') })
/* 2015-01
document.querySelectorAll('form#search').forEach(function(form) { form.setAttribute('action', '/wiki/Special:Search') })
add links to Brandon's site and the interview database to the sidebar
*/
jQuery(function () {
 
document.querySelectorAll('form[action*="/w/index.php"]').forEach(function(form) {
function ModifySidebar( action, section, name, link ) {
console.debug('changing form', form, 'with action', form.getAttribute('action'), 'to `?`')
/* from https://www.mediawiki.org/wiki/Manual:Interface/Sidebar#Add_or_remove_toolbox_sections_.28JavaScript.29 */
form.setAttribute('action', '?')
try {
})
switch ( section ) {
case 'languages':
var target = 'p-lang';
break;
case 'toolbox':
var target = 'p-tb';
break;
case 'navigation':
var target = 'p-navigation';
break;
default:
var target = 'p-' + section;
break;
}
if ( action == 'add' ) {
var node = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( name ) );
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}
if ( action == 'remove' ) {
var list = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var listelements = list.getElementsByTagName( 'li' );
for ( var i = 0; i < listelements.length; i++ ) {
if (
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
)
{
list.removeChild( listelements[i] );
}
}
}
} catch( e ) {
// let's just ignore what's happened
return;
}
}
 
if (!mw.config.get('wgIsArticle') || mw.config.get('wgCanonicalNamespace') !== '')
return;
if (mw.config.get('wgCategories').includes('Meta'))
return;
var title = mw.config.get('wgTitle');
ModifySidebar( 'add', 'toolbox', "Search Brandon's website for " + title, 'https://brandonsanderson.com/?s='+ title );
ModifySidebar( 'add', 'toolbox', 'Search Arcanum for '+ title, 'https://wob.coppermind.net/adv_search/?query='+ title );
});
 
function showDialog () {
/* 2017-11: functions for generating links and buttons */
var container = document.createElement('div');
// make an <a> with a url and some text
container.style.display = 'flex';
function make_a(url, text) {
container.style.alignItems = 'center';
const el = document.createElement('a')
container.style.justifyContent = 'center';
el.setAttribute('href', url)
container.style.position = 'fixed';
el.innerText = text
container.style.left = '0';
return el
container.style.right = '0';
}
container.style.top = '0';
container.style.bottom = '0';
container.style.zIndex = '10000';
container.style.background = 'rgba(0, 0, 0, 0.5)';
container.style.filter = 'initial';
 
var window = document.createElement('div');
// make a nice link button for the edit box
window.className = 'coppermind-spoiler-warning';
function make_edit_button(url, text, title) {
window.style.boxShadow = '0 4px 30px 0 rgba(0, 0, 0, 0.2)';
// create link element
window.style.width = '90%';
const ln = make_a(url, text)
window.style.maxWidth = '600px';
ln.setAttribute('target', '_blank')
window.style.borderRadius = '3px';
// create wrap element
window.style.background = 'white';
const el = document.createElement('span')
window.style.display = 'flex';
el.setAttribute('title', title)
window.style.flexDirection = 'column';
el.appendChild(ln)
window.style.boxSizing = 'border-box';
// style elements
window.style.padding = '16px';
// FIXME: these are copied from the oo-ui elements in the edit box
window.style.fontSize = '1.5em';
ln.className = 'oo-ui-inputWidget-input oo-ui-buttonElement-button'
window.style.maxHeight = '90%';
el.className = 'oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-labelElement oo-ui-buttonInputWidget'
container.appendChild(window);
// return element for insertion
return el
}
 
window.innerHTML = '<h2>⚠️ Aviso de Spoiler</h2>';
// create a link that looks like .editsection
window.innerHTML += '<p style="font-size: 1em; overflow-y: auto; flex: 1;">¡Has llegado a la Coppermind en español! Esta wiki tiene spoilers de todos los trabajos publicados de Brandon, incluyendo <b><em>El Hombre Iluminado</b></em>. Por lo tanto, al navegar por esta wiki, puedes sufrir spoilers de todo el Cosmere, así como de otras obras de Brandon. Además, algunas páginas pueden contener información sobre libros que aún no han sido publicados. Si quieres visitar el sitio tal y como era antes de la publicación de algún libro, ¡puedes ir a nuestra <a id="spoiler-warning__time-machine-link" href="https://es.coppermind.net/wiki/Especial:M%C3%A1quinaDelTiempo">Máquina del Tiempo!</a></p>';
function make_editsection_link(url) {
// generate an edit link
const ln = make_a(url, 'edit')
// wrap the link in an '.editsection' link floated right
const el = document.createElement('span')
el.className = 'mw-editsection'
el.style.float = 'right'
// push [] around the A element into the span
el.appendChild(document.createTextNode('['))
el.appendChild(ln)
el.appendChild(document.createTextNode(']'))
return el
}
 
/* add links to edit box */
$(function () {
 
const edit_box var button = document.querySelectorcreateElement('.editButtonsbutton');
button.className = 'mw-ui-button mw-ui-destructive';
// check that there is an edit box
button.style.alignSelf = 'center';
if (!edit_box || mw.config.get('wgCanonicalNamespace') !== '') return
button.style.fontSize = '1em';
button.innerHTML = 'Acceder';
button.onclick = function () {
localStorage.setItem('defiant-spoiler-warning', 'seen');
document.body.removeChild(container);
$(document.body).removeClass('spoiler-warning-blur');
}
window.appendChild(button);
 
var style = document.createElement('style');
const page_name = mw.config.get('wgPageName').replace(/[_]/g, '+')
style.type = 'text/css';
style.innerHTML = '.spoiler-warning-blur > * { filter: blur(50px); }';
document.getElementsByTagName('head')[0].appendChild(style);
 
$(document.body).addClass('spoiler-warning-blur');
// add a link to the Arcanum
document.body.appendChild(container);
const wob_url = make_edit_button('https://wob.coppermind.net/adv_search/?query='+ page_name, 'Search Arcanum', 'Search Arcanum for "'+ page_name +'"')
$('#spoiler-warning__time-machine-link').click(function () { localStorage.setItem('defiant-spoiler-warning', 'seen'); })
edit_box.appendChild(wob_url)
$('#spoiler-warning__spoiler-policy-link').click(function () { localStorage.setItem('defiant-spoiler-warning', 'seen'); })
}
 
if (window.localStorage.getItem('defiant-spoiler-warning') === null && !mw.config.get('wgUserGroups').includes('keeper')) {
});
showDialog();
 
}
/* 2018-08-22 auto-generate Cite:Arcanum pages for {{wob ref}} */
$(function () {
// determine if this page is editing a Cite: Arcanum page
const edit_box = document.querySelector('#editform textarea');
// check that there is an edit box
if (!edit_box || mw.config.get('wgCanonicalNamespace') !== 'Cite') return -1;
// check that it's a page creation
if (mw.config.get('wgArticleId') != 0) return -2;
// check that it's an Arcanum page
const page_name = mw.config.get('wgPageName');
if (!page_name.startsWith('Cite:Arcanum-')) return -3;
// work out the api url
const entry = page_name.split('-')[1];
const url = 'https://wob.coppermind.net/api/entry/'+ entry +'/';
// start fetching from Arcanum
fetch(url)
.then(function(resp) { return resp.json() })
.then(function(json) {
// the <arcanum-entry-info> tag
const tag = '<arcanum-entry-info date="'+ (json.date || json.event_date) +'" event="'+ json.event +'">'+ json.event_name +'</arcanum-entry-info>';
// the rest of the page
const page = tag +"<noinclude>\n\n== Users ==\n{{Special:WhatLinksHere/{{FULLPAGENAME}}|}}\n";
// only fill in the edit box if it is currently blank
if (edit_box.value == '') {
edit_box.value = page;
// preview the page
document.querySelector('[name="wpPreview"]').click()
}
})
})