MediaWiki:Gadget-hide info.js
Hoppa till navigering
Hoppa till sök
OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.
- Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
- Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
- Internet Explorer / Edge: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
- Opera: Tryck Ctrl-F5.
// TODO:
// * dölj bara om det blir för mycket info
// * inställningar för vad man vill visa
/* global $ */
var hiddenByDefault = {
citat: true,
'sammansättningar': true,
'jämför': true,
'besläktade_ord': true,
fraser: true,
'seäven': true,
etymologi: true,
grammatik: true,
stavning: true,
hyperonymer: true,
hyponymer: true,
kohyponymer: true,
holonymer: true,
meronymer: true,
troponymer: true
};
mw.hook('wikipage.content').add(function (parent) {
$(parent).find('h3').each(function () {
// Hämta nästa OL eller H3 (utifall att en OL saknas)
var ol = $(this).nextUntil('ol, h3').last().next();
if (!ol.is('ol'))
return;
ol.children('li').each(function () {
handle($(this).find('> dl'));
});
var belowSep = ol.next('dl');
if (belowSep.length)
handle(belowSep);
});
});
function getType(dd) {
dd = $(dd);
var type = (/template\-([^ ]+)/.exec(dd.attr('class')) || {})[1];
var first = dd.children().first();
if (!type) {
if (first.is('b') && /\b[0-9]{4}\b/.test(first.text())) {
type = 'citat';
} else if (first.is('i') && !first.nextAll(':not(dl)').length) {
// Either just <i>, or <i> and <dl>
type = 'exempel';
}
}
return type;
}
function handle(dl) {
var hidden = dl.children()
.filter(function () {
return hiddenByDefault[getType(this)];
})
.addClass('hideable-info')
.hide();
if (!hidden.length) {
return;
}
var dd = $('<dd>', {
'class': 'extrainfo-toggle',
css: {
position: 'relative',
height: 2,
width: '7em',
background: '#6c6',
marginLeft: dl.children().length === hidden.length ? 0 : undefined
}
}).append(
$('<a>', {
href: '#',
title: 'Visa/dölj',
click: false,
keydown: keydown,
mousedown: mousedown,
css: {
display: 'block',
position: 'absolute',
top: -12/2 - 2,
left: -12 - 2,
padding: 2,
paddingRight: 12 + 2,
width: '100%',
lineHeight: 1,
textDecoration: 'none',
fontSize: 12,
color: '#666'
}
}).append(
$('<img>', {
src: '//upload.wikimedia.org/wikipedia/commons/thumb/9/90/Next_Arrow.svg/12px-Next_Arrow.svg.png',
alt: '[+]'
}),
$('<img>', {
src: '//upload.wikimedia.org/wikipedia/commons/thumb/8/83/Bottom_Arrow.svg/12px-Bottom_Arrow.svg.png',
alt: '[−]',
hidden: true
})
)
);
dl.append(dd, hidden);
}
function keydown(e) {
if (e.which === 13 || e.which === 32) { // Enter och mellanslag
e.preventDefault();
toggle(e);
}
}
function mousedown(e) {
if (e.which !== 3) { // Högerklick
toggle(e);
}
}
function toggle(e) {
var topBefore = $(e.target).offset().top;
$('.extrainfo-toggle img, .hideable-info').toggle();
var topAfter = $(e.target).offset().top;
document.documentElement.scrollTop += topAfter - topBefore;
}