MediaWiki:Common.js
From Dreams Knowledge Platform
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.
mw.hook( 'wikipage.content' ).add( function ( $content ) {
var KEY = 'dreams-progress';
var done;
try { done = JSON.parse( localStorage.getItem( KEY ) || '[]' ); }
catch ( e ) { done = []; }
function save() {
try { localStorage.setItem( KEY, JSON.stringify( done ) ); } catch ( e ) {}
}
var root = ( $content && $content[ 0 ] ) || document;
var items = root.querySelectorAll( '.sump-prereq__item' );
Array.prototype.forEach.call( items, function ( item ) {
if ( item.getAttribute( 'data-prereq-init' ) ) { return; }
item.setAttribute( 'data-prereq-init', '1' );
var box = item.querySelector( '.sump-prereq__box' );
var link = item.querySelector( 'a[href]' );
var slug = link ? decodeURIComponent( link.pathname.split( '/' ).pop() ) : null;
if ( !box ) { return; }
if ( slug && done.indexOf( slug ) !== -1 ) {
item.classList.add( 'sump-prereq__item--done' );
}
box.style.cursor = 'pointer';
box.addEventListener( 'click', function () {
var nowDone = item.classList.toggle( 'sump-prereq__item--done' );
var idx = slug ? done.indexOf( slug ) : -1;
if ( nowDone && slug && idx === -1 ) { done.push( slug ); }
if ( !nowDone && idx !== -1 ) { done.splice( idx, 1 ); }
save();
} );
} );
} );