Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
| Line 2: | Line 2: | ||
/* collapse TOC by default */ | /* collapse TOC by default */ | ||
| − | + | var toc, toggleLink; | |
| − | + | try { | |
| − | + | toc = document.getElementById('toc').getElementsByTagName('ul')[0]; | |
| − | toc.style.display = 'none'; | + | toggleLink = document.getElementById('toctogglecheckbox'); |
| − | } | + | // if (tocIsHidden()) { |
| − | + | toggleToc(); | |
| + | // } | ||
| + | } catch (error) { | ||
| + | console.log('erred', error); | ||
| + | } | ||
| + | function tocIsHidden () { | ||
| + | return !toc || !toggleLink || window.getComputedStyle(toc).display !== 'block'; | ||
| + | } | ||
| + | function toggleToc() { | ||
| + | var hidden = tocIsHidden(); | ||
| + | if (hidden && document.cookie.indexOf('hidetoc=0') > -1) { | ||
| + | toggleLink.click(); | ||
| + | // changeText(toggleLink, tocShowText); | ||
| + | // toc.style.display = 'none'; | ||
| + | } else if (!hidden && document.cookie.indexOf('hidetoc=1') > -1) { | ||
| + | toggleLink.click(); | ||
| + | // changeText(toggleLink, tocHideText); | ||
| + | // toc.style.display = 'block'; | ||
| + | } | ||
| + | } | ||
| + | toggleLink && toggleLink.addEventListener('click', function () { | ||
| + | var isHidden = tocIsHidden(); | ||
| + | document.cookie = isHidden | ||
| + | ? "hidetoc=1" | ||
| + | : "hidetoc=0"; | ||
| + | }); | ||
| + | |||
/** | /** | ||
Revision as of 20:56, 25 May 2022
/* Any JavaScript here will be loaded for all users on every page load. */
/* collapse TOC by default */
var toc, toggleLink;
try {
toc = document.getElementById('toc').getElementsByTagName('ul')[0];
toggleLink = document.getElementById('toctogglecheckbox');
// if (tocIsHidden()) {
toggleToc();
// }
} catch (error) {
console.log('erred', error);
}
function tocIsHidden () {
return !toc || !toggleLink || window.getComputedStyle(toc).display !== 'block';
}
function toggleToc() {
var hidden = tocIsHidden();
if (hidden && document.cookie.indexOf('hidetoc=0') > -1) {
toggleLink.click();
// changeText(toggleLink, tocShowText);
// toc.style.display = 'none';
} else if (!hidden && document.cookie.indexOf('hidetoc=1') > -1) {
toggleLink.click();
// changeText(toggleLink, tocHideText);
// toc.style.display = 'block';
}
}
toggleLink && toggleLink.addEventListener('click', function () {
var isHidden = tocIsHidden();
document.cookie = isHidden
? "hidetoc=1"
: "hidetoc=0";
});
/**
* Collapsible tables
*
* @version 2.0.2 (2014-03-14)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core.
*/
/*global $, mw */
var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
function collapseTable( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
var i;
if ( Button.firstChild.data === collapseCaption ) {
for ( i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = 'none';
}
Button.firstChild.data = expandCaption;
} else {
for ( i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createClickHandler( tableIndex ) {
return function ( e ) {
e.preventDefault();
collapseTable( tableIndex );
};
}
function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( 'table' );
var i;
for ( i = 0; i < Tables.length; i++ ) {
if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
if ( !HeaderRow ) {
continue;
}
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
if ( !Header ) {
continue;
}
NavigationBoxes[tableIndex] = Tables[i];
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
var Button = document.createElement( 'span' );
var ButtonLink = document.createElement( 'a' );
var ButtonText = document.createTextNode( collapseCaption );
// TODO: Declare styles in [[MediaWiki:Gadget-collapsibleTables.css]]
// Button.className = 'collapseButton';
Button.style.styleFloat = 'right';
Button.style.cssFloat = 'right';
Button.style.fontWeight = 'normal';
Button.style.textAlign = 'right';
Button.style.width = '6em';
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
ButtonLink.setAttribute( 'href', '#' );
$( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( '[' ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( ']' ) );
Header.insertBefore( Button, Header.firstChild );
tableIndex++;
}
}
for ( i = 0; i < tableIndex; i++ ) {
if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
) {
collapseTable( i );
}
}
}
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
/* monoskop link */
mw.hook('wikipage.content').add(function() {
var monoskop = document.getElementById('top');
monoskop.href = "https://monoskop.org";
});