MediaWiki:Common.js
Jump to navigation
Jump to search
Note: After saving, 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: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Any JavaScript here will be loaded for all users on every page load. */ /* 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 augment actionpaths edits to LocalSetting.php */ $('[href*="title="]').attr('href', function (i, value) { const old_link = value //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() { document.querySelectorAll('form.mw-search').forEach(function(form) { form.setAttribute('action','/wiki/Special:Search') }) document.querySelectorAll('form#search').forEach(function(form) { form.setAttribute('action', '/wiki/Special:Search') }) document.querySelectorAll('form[action*="/w/index.php"]').forEach(function(form) { console.debug('changing form', form, 'with action', form.getAttribute('action'), 'to `?`') form.setAttribute('action', '?') }) }); /* 2015-01 add links to Brandon's site and the interview database to the sidebar */ jQuery(function () { function ModifySidebar( action, section, name, link ) { /* from https://www.mediawiki.org/wiki/Manual:Interface/Sidebar#Add_or_remove_toolbox_sections_.28JavaScript.29 */ 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 ); }); /* 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) { if (!json || !json.event) { return; } // 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[[category: generated citations]]\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() } }) }) /* 2018-09-16 display Arcanum entry on Cite:Arcanum-X page */ function show_arcanum_entry() { // check that it's an Arcanum page const page_name = mw.config.get('wgPageName'); if (!page_name.startsWith('Cite:Arcanum-')) return; // work out the api url const entry = page_name.split('-')[1]; const url = 'https://wob.coppermind.net/api/entry/'+ entry +'/'; // start fetching from Arcanum console.log('fetching '+ url); fetch(url) .then(function(resp) { return resp.json() }) .then(function(json) { // debugging: console.log('Entry '+ entry, json); // create containing element const entry_el = document.createElement('article'); entry_el.classList.add('arcanum-entry'); // add lines json.lines.forEach(function(line) { // create speaker element const speaker = document.createElement('h4'); speaker.innerText = line.speaker; if (speaker.innerText.includes('href') && speaker.innerText.includes('twitter.com')) { // speaker is a link to twitter, so show it as such speaker.innerHTML = speaker.innerText } // append the speaker and html from the line entry_el.appendChild(speaker); entry_el.innerHTML += line.text; }); // place container on page const users_el = document.getElementById('Users').parentElement users_el.parentElement.insertBefore(entry_el, users_el); }); }; // 2018-11-27 split the above into two so the function can be used elsewhere //$(function () { show_arcanum_entry() }); mw.hook('wikipage.content').add(show_arcanum_entry)