MediaWiki:Common.js
Utseende
Merk: Etter publisering vil det kanskje være nødvendig å slette mellomlageret i nettleseren din for å se endringene.
- Firefox / Safari: Hold Shift mens du klikker på Oppdater, eller trykk enten Ctrl+F5 eller Ctrl+R (⌘+R på Mac)
- Google Chrome: Trykk Ctrl+Shift+R (⌘+Shift+R på Mac)
- Edge: Hold Ctrl mens du trykker på Oppdater eller trykk Ctrl+F5
/* JavaScript i denne fila vil bli lastet for alle brukere på hver side. */
/* Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Note that use of this function indicates that the code isnt up to date.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
var hasClass = (function () {
var reCache = {};
return function (element, className) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
/**
* Description: Move the set of links from a box at the bottom of the page to the siteSub at the top
* Maintainers:
*/
(function(mw, $){
$(function(){
var portlinks = $('#portlinks').html();
if (portlinks && portlinks.length) {
portlinks = portlinks.replace(/(?: | |\u00a0|\u000d|\x0d|\r|\u000a|\x0a|\n)*(?:·|·|\|)(?: | |\u00a0|\u000d|\x0d|\r|\u000a|\x0a|\n)*/g, ", ");
$('#siteSub').html(portlinks);
$('#portlinks').remove();
}
});
})(mediaWiki, jQuery);
/**
* Description: Reset align as float style in galleries.
* Note: This will be fixed in MW 1.19 if $wgHtml5 is enabled.
* Maintainers:
*/
(function (mw, $, undefined) {
$(function () {
$('ul.gallery').each(function (i, el) {
switch (el.getAttribute('align')) {
case 'gleft' :
case 'left' :
el.style.cssFloat = 'left';
break;
case 'gright' :
case 'right' :
el.style.cssFloat = 'right';
break;
case 'inherit' :
el.style.cssFloat = 'inherit';
break;
case 'none' :
el.style.cssFloat = 'none';
break;
};
});
});
})(mediaWiki, jQuery);
/**
* Description: Adapt multiple columns to the actual size of the bodyContent div.
* Maintainers:
*/
(function(mw, $) {
// counter for number of columns
var count = 0;
// width of the #bodyContent and its token
var widths = [
{ size : 450, name : 'multicol-xx-small' },
{ size : 700, name : 'multicol-x-small' },
{ size : 950, name : 'multicol-small' },
{ size : 1200, name : 'multicol-normal' },
{ size : 1500, name : 'multicol-large' },
{ size : 1800, name : 'multicol-x-large' },
{ size : 2100, name : 'multicol-xx-large' }
];
// selectors for default override of large lists
var selectors = [
'#bodyContent h2:has(#Referanser) + ol.large.references',
'#bodyContent h2:has(#Litteratur) + ul.large',
'#bodyContent h2:has(#Eksterne_lenker) + ul.large',
'#bodyContent h2:has(#Kilder) + ul.large',
'#bodyContent h2:has(#Se_ogs\\.C3\\.A5) + ul.large',
'#bodyContent h2:has(#Referanser) + ul.large',
'#bodyContent h2:has(#Litteratur) + ol.large',
'#bodyContent h2:has(#Eksterne_lenker) + ol.large',
'#bodyContent h2:has(#Kilder) + ol.large',
'#bodyContent h2:has(#Se_ogs\\.C3\\.A5) + ol.large'
];
// calculate number of columns and set its token
function calc() {
var found = 0;
var body = $('#bodyContent');
var width = body.width();
// remove any previous definitions
// this is necessary for resize to work
for (var i = 0; i<widths.length; i++)
body.removeClass(widths[i].name);
// if the width is to small we set a special token and exits
if (width < widths[0].size) {
body.addClass('multicol-xx-small');
body.addClass('multicol-verysmall');
return;
}
// test for increasing sizes and set the token
for (var i = 1; i<widths.length; i++) {
count++;
if (width < widths[i].size) {
body.addClass( widths[i].name);
found++;
break;
}
}
// if we didn't find a matching size we set a special token
if (!found) {
body.addClass('multicol-xx-large');
body.addClass('multicol-verylarge');
}
// unless we had a too smalll width we set a common token
body.addClass('multicol-all');
}
// set it all up
$(function() {
calc(); // only on ready
$(window).resize(calc); // only on resize
// identify large lists
count *= 2; // twice the number of columns
$('#bodyContent ol, #bodyContent ul').each(function(i, el) {
if (count < el.children.length) $(el).addClass('large');
});
// override for long lists in specific sections, add later
//$(selectors.join(',')).before('<div class="multicol" style="display:none" />');
});
})(mediaWiki, jQuery);
/**
* Description: Clean up the list of templates during ordinary article editing for base templates,
* that is those with a leading dollar ($) sign in the name
* Maintainers:
*/
(function(mw, $) {
if (mw.config.get( 'wgNamespaceNumber' ) != 10 && (mw.config.get( 'wgAction' ) == "edit" || mw.config.get( 'wgAction' ) == "submit")) {
try {
$(function() {
var used = $('.templatesUsed');
var expl = $('.mw-templatesUsedExplanation');
var links = used.find('> ul > li > a').filter('[href*=":$"], [href*="MediaWiki:"]');
if (links.length === 0) return;
links.parent().css('display', 'none');
expl.find('p').append(' (<a class="show-base-templates" href="#">Vis grunnmaler</a><a class="hide-base-templates" href="#">Skjul grunnmaler</a>)');
expl.find('a.hide-base-templates').css('display', 'none');
expl.find('a.show-base-templates').click(function(){
links.parent().css('display', 'list-item');
$(this).css('display', 'none');
$(this).parentsUntil('.mw-templatesUsedExplanation').find('.hide-base-templates').css('display', 'inline');
return false;
});
expl.find('a.hide-base-templates').click(function(){
links.parent().css('display', 'none');
$(this).css('display', 'none');
$(this).parentsUntil('.mw-templatesUsedExplanation').find('.show-base-templates').css('display', 'inline');
return false;
});
});
}
catch (e) {
// Woopsie, die without a notice
}
}
})(mediaWiki, jQuery);
/* Check if external link targets exists **************************************
*
* Description: Make external iw-links through stylyng and make them blue again if they exists
* Maintainers:
*
* Sjekker lenker inni et element merket med CSS-klassen "iwcheck".
* Opprinnelig laget for oversikter ála [[Samiske geografiske navn (Alta)]]
*/
(function(mw, $, undefined){
if (!mw.config.get( 'wgIsArticle' )) return;
// if (mw.config.get( 'wgNamespaceNumber' ) != 0) return;
if (!/^(view)$/.test(mw.config.get( 'wgAction' ))) return;
var found = 0;
for (var x in mw.config.get('wgCategories')) {
if (mw.config.get('wgCategories')[x] == 'IW-check' && ++found) break;
}
if (!found) return;
var api = '//%%.wikipedia.org/w/api.php';
var languages = { 'nn' : {}, 'se' : {}, 'sv' : {}, 'da' : {} };
var lang = 'no';
var numtitles = 50;
var maxtitles = 2000;
var query = {
'action': 'query',
'prop' : 'info',
'format': 'json',
'maxage': 15*60,
'smaxage': 60*60
};
$(function(){
var iwcheck = $('.iwcheck').find('a.extiw');
if (!iwcheck || !iwcheck.length) return;
for (var x in languages) {
languages[x].titles = {},
languages[x].found = 0
}
iwcheck.each(function(i, el){
if (el.title) {
var matches = el.title.match(/^(.*?):(.*)$/);
if (matches.length == 3 && languages[matches[1]] != undefined) {
languages[matches[1]].titles[matches[2]] = true;
languages[matches[1]].found++;
}
}
});
var plang = $('#p-lang');
for (var x in languages) {
if (!languages[x].found) continue;
if (x === lang) continue;
var a = [];
for (var y in languages[x].titles)
if (languages[x].titles[y]) a.push(y);
var a = a.slice(0, maxtitles);
for (var i = 0; i < a.length; i+=numtitles) {
var titles = a.slice(i, (i+numtitles<a.length ? i+numtitles : a.length)).join('|');
$.ajax({
url: api.replace(/%%/, x),
dataType: 'jsonp',
data: jQuery.extend({'titles': titles, requestid: x}, query),
cache: true,
context: document.body,
success: function(data, textStatus){
if (textStatus === null && textStatus != 'success') {
alert('Success, but with "' + textStatus + '"');
return;
}
// this shouldn't happen
if (!languages[data.requestid] && !languages[data.requestid].found) return;
var a = [];
for (var x in data.query.pages) {
if (x<0) continue;
if (languages[data.requestid].titles[data.query.pages[x].title])
a.push('[title="' + data.requestid + ':' + data.query.pages[x].title + '"]');
}
iwcheck.filter(a.join(',')).addClass('exist');
}
});
}
}
});
})(mediaWiki, jQuery);
/**
* Description: Modify parts of the toolbar to better suit this projects needs
* Maintainer:
*/
(function(mw, $, undefined) {
// function to build complete labels, just to get rid of some pesky errors
var label = function (msg, txt, before, after) {
var str = '';
if (before === undefined ? true : before) str += "{" + "{";
str += msg;
if (after === undefined ? true : after) str += "}" + "}";
if (txt) str += " – " + txt;
return str;
};
// function to build pre-parts of the templates, just to get rid of some pesky errors
var pre = function (msg, txt, before) {
var str = '';
if (before === undefined ? true : before) str += "{" + "{";
str += msg;
if (txt) str += txt;
return str;
};
// function to build peri-parts of the templates, just to get rid of some pesky errors
var peri = function (msg, txt, before, after) {
var str = '';
if (before === undefined ? true : before) str += "{" + "{";
str += msg;
if (txt) str += txt;
if (after === undefined ? true : after) str += "}" + "}";
return str;
};
// get timestamp for templates
var now = new Date();
var timestamp = now.getUTCFullYear()
+ '-' + (now.getUTCMonth()<9 ? '0' : '') + (now.getUTCMonth()+1)
+ '-' + (now.getUTCDate()<9 ? '0' : '') + now.getUTCDate();
// customization for the original toolbar
var customizeOrigToolbar = function () {
var buttons = [];
buttons.push({
id: "button-nbsp",
imageFile: "//upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png",
speedTip: "Non-breaking space",
tagOpen: " ",
tagClose: "",
sampleText: ""
});
buttons.push({
id: "button-redirect",
imageFile: "//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png",
speedTip: "Omdirigering",
tagOpen: "#OMDIRIGERING [[",
tagClose: "]]",
sampleText: "Målside"
});
buttons.push({
id: "button-strike",
imageFile: "//upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png",
speedTip: "Overstreking",
tagOpen: "<s>",
tagClose: "</s>",
sampleText: "Overstreket tekst"
});
buttons.push({
id: "button-enter",
imageFile: "//upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png",
speedTip: "Linjeskift",
tagOpen: "<br />",
tagClose: "",
sampleText: ""
});
buttons.push({
id: "button_upper",
imageFile: "//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png",
speedTip: "Hevet skrift",
tagOpen: "<sup>",
tagClose: "</sup>",
sampleText: "Hevet tekst"
});
buttons.push({
id: "button-lower",
imageFile: "//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png",
speedTip: "Senket skrift",
tagOpen: "<sub>",
tagClose: "</sub>",
sampleText: "Senket tekst"
});
buttons.push({
id: "button-small",
imageFile: "//upload.wikimedia.org/wikipedia/en/5/58/Button_small.png",
speedTip: "Liten skrift",
tagOpen: "<small>",
tagClose: "</small>",
sampleText: "Liten skrift"
});
buttons.push({
id: "button-hide-comment",
imageFile: "//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png",
speedTip: "Sett inn skjult tekst (vises kun i kildekoden)",
tagOpen: "<!-- ",
tagClose: " -->",
sampleText: "Skjult tekst"
});
buttons.push({
id: "button-gallery",
imageFile: "//upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png",
speedTip: "Sett inn bildegalleri",
tagOpen: "\n<gallery>\n",
tagClose: "\n</gallery>",
sampleText: "Image:Example.jpg|Bildetekst1\nImage:Example.jpg|Bildetekst2"
});
buttons.push({
id: "button-blockquote",
imageFile: "//upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",
speedTip: "Siter tekst",
tagOpen: "{{Sitat|",
tagClose: "|kilde}}",
sampleText: "Legg inn sitatet her"
});
buttons.push({
id: "button-insert-table",
imageFile: "//upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png",
speedTip: "Sett inn tabell",
tagOpen: '{| class="wikitable"\n|-\n',
tagClose: "\n|}",
sampleText: "! overskrift 1\n! overskrift 2\n! overskrift 3\n|-\n| rad 1, celle 1\n| rad 1, celle 2\n| rad 1, celle 3\n|-\n| rad 2, celle 1\n| rad 2, celle 2\n| rad 2, celle 3"
});
buttons.push({
id: "button-latinas",
imageFile: "//upload.wikimedia.org/wikipedia/commons/2/26/Button_latinas.png",
speedTip: "Sett inn «»",
tagOpen: "«",
tagClose: "»",
sampleText: "utsagn"
});
buttons.push({
id: "button-ref",
imageFile: "//upload.wikimedia.org/wikipedia/commons/2/2b/Button_ref_inscription.png",
speedTip: "Sett inn <ref></ref>",
tagOpen: "<ref>",
tagClose: "</ref>",
sampleText: "referanse"
});
for (var i = 0; i < buttons.length; i++) {
mw.toolbar.addButton(
buttons[i].imageFile,
buttons[i].speedTip,
buttons[i].tagOpen,
buttons[i].tagClose,
buttons[i].sampleText,
buttons[i].id,
buttons[i].id
);
}
};
// customization for the beta toolbar
var customizeBetaToolbar = function () {
// Add button for inserting guillemets (popular feature of old toolbar)
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'group': 'format',
'tools': {
'quote': {
label: 'Anførselstegn',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/a/ac/Norwegian_quote_sign.png',
action: {
type: 'encapsulate',
options: {
pre: "«",
//peri: "«»",
post: "»"
}
}
}
}
});
// Add button for inserting double square brackets (popular feature of old toolbar)
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'group': 'format',
'tools': {
'link': {
label: 'Lenkeparenteser',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/b/ba/Norwegian_link_sign.png',
action: {
type: 'encapsulate',
options: {
pre: "[[",
//peri: "[[]]",
post: "]]"
}
}
}
}
});
// Add button for inserting double curly brackets
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'main',
'group': 'format',
'tools': {
'link': {
label: 'Malparenteser',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/4/4a/Norwegian_template_sign.png',
action: {
type: 'encapsulate',
options: {
pre: "{{",
//peri: "{{}}",
post: "}}"
}
}
}
}
});
// Add button for inserting strikethrough
// https://no.wikipedia.org/wiki/MediaWiki-diskusjon:Common.js#Strikethrough
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'group': 'format',
'tools': {
'strikethrough': {
label: 'Gjennomstrykning',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/f/f9/Toolbaricon_regular_S_stroke.png',
action: {
type: 'encapsulate',
options: {
pre: "<s>",
//peri: "<s> </s>",
post: "</s>"
}
}
}
}
});
// add an article mark menu in the advanced section
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
groups: {
'heading': {
tools: {
'heading': {
label: 'Vedlikehold',
type: 'select',
list: {
'template-accuracy' : {
label: label('Nøyaktighet', 'artikkelen har ikke en nøyaktig fremstilling'),
action: {
type: 'encapsulate',
options: {
pre: pre('Nøyaktighet', '|ts=' + timestamp + '|'),
post: '}}',
ownline: false
}
}
},
'template-spelling' : {
label: label('Språkvask', 'artikkelens språk trenger en gjennomgang'),
action: {
type: 'encapsulate',
options: {
pre: pre('Språkvask', '|ts=' + timestamp + '|'),
post: '}}',
ownline: false
}
}
},
'template-format' : {
label: label('Formatering', 'artikkelen trenger wikifisering'),
action: {
type: 'encapsulate',
options: {
pre: pre('Formatering', '|ts=' + timestamp + '|'),
post: '}}',
ownline: false
}
}
},
}
}
}
}
}
});
// add a template menu in the advanced sectionined' ) {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
groups: {
'heading': {
tools: {
'heading': {
label: 'Maler',
type: 'select',
list: {
'template-columns' : {
label: label('kolonner', 'etterfølgende liste fordeles over flere kolonner'),
action: {
type: 'encapsulate',
options: {
pre: pre('kolonner', '|'),
//peri: peri('columns'),
post: '}}',
ownline: true
}
}
},
'template-sorted-columns' : {
label: label('sorterte kolonner', 'etterfølgende liste fordeles over flere sorterbare kolonner'),
action: {
type: 'encapsulate',
options: {
pre: pre('sorterte kolonner', '|tittel='),
//peri: peri('columns'),
post: '}}',
ownline: true
}
}
},
'template-nowrap' : {
label: label('nowrap', 'hindre linjeskift i tekst og tall'),
action: {
type: 'encapsulate',
options: {
pre: pre('nowrap', '|'),
post: '}}',
ownline: false
}
}
},
'template-formatnum' : {
label: label('formatnum', 'tall med mellomrom og desimalkomma'),
action: {
type: 'encapsulate',
options: {
pre: pre('formatnum', ':'),
post: '}}',
ownline: false
}
}
},
'template-defaultsort' : {
label: label('DEFAULTSORT', 'sortering på etternavn og lignende'),
action: {
type: 'encapsulate',
options: {
pre: pre('DEFAULTSORT', ':'),
post: '}}',
ownline: false
}
}
}
}
}
}
}
}
});
// add a titles menu in the advanced section
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
groups: {
'heading': {
tools: {
'heading': {
label: 'Titler',
type: 'select',
list: {
'titles-see-also' : {
label: '== Se også == – interne lenker til andre prosjekter',
action: {
type: 'encapsulate',
options: {
pre: '== Se også ==',
ownline: true
}
}
},
'titles-references' : {
label: '== Referanser == – oppgitte referanser i teksten',
action: {
type: 'encapsulate',
options: {
pre: "== Referanser ==\n{{referanser}}\n",
ownline: true
}
}
},
'titles-literature' : {
label: '== Litteratur == – oppgitt litteratur',
action: {
type: 'encapsulate',
options: {
pre: '== Litteratur ==',
ownline: true
}
}
},
'titles-links' : {
label: '== Eksterne lenker == – lenker til nettsteder',
action: {
type: 'encapsulate',
options: {
pre: '== Eksterne lenker ==',
ownline: true
}
}
}
}
}
}
}
}
});
// add a quotes menu in the advanced section
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
groups: {
'heading': {
tools: {
'heading': {
label: 'Sitater',
type: 'select',
list: {
'quotes-add' : {
label: 'Legg til nytt sitat',
action: {
type: 'encapsulate',
options: {
pre: '*«Sitat»\n**Referanse.\n',
ownline: true
}
}
}
}
}
}
}
}
});
};
/* Check if we are in edit mode and the required modules are available and then customize the toolbar */
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1 ) {
mw.loader.using( 'user.options', function () {
if ( mw.user.options.get('usebetatoolbar') ) {
mw.loader.using( 'ext.wikiEditor', function () {
$(customizeBetaToolbar);
});
}
else {
$(customizeOrigToolbar);
}
});
}
})(mediaWiki, jQuery);
/**
* Script for ekstra funksjonalitet i Ukens konkurranse (legger inn maxage= og smaxage= senere)
* Maintainer: [[user:Danmichaelo]]
**/
if (/^Wikipedia:Ukens_konkurranse\/Ukens_konkurranse/.test(mw.config.get('wgPageName'))) {
mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title= MediaWiki:Ukens_konkurranse.js&action=raw&ctype=text/javascript');
}