Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
m (move arcanum searcher to widget) |
m (move Arcanum stuff to Gadgets) |
||
Line 123: | Line 123: | ||
ModifySidebar( 'add', 'toolbox', 'Search Arcanum for '+ title, 'https://wob.coppermind.net/adv_search/?query='+ 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) |
Revision as of 16:20, 27 July 2019
/* 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 ); });