Gebruiker:Erik Baas/common.js
Hulp bij het instellen van uw voorkeurenLet op! Nadat u de veranderingen heeft opgeslagen, moet u de cache van uw browser nog legen om ze daadwerkelijk te zien. In onderstaande tabel staat aangegeven hoe u dit doet.
Mozilla | reload (of ctrl-r) |
IE | ctrl-f5 |
Opera | f5 |
Safari | cmd-r |
Konqueror | ctrl-r |
// <nowiki>
// importScript('Gebruiker:Erik Baas/markeer.js'); /* markeer & next*/
$(function () {
automatePurgeConfirmationDialog();
getEditCount();
replaceObsoleteHTMLTags();
markeerLintErrors();
addPurgeTab();
return;
});
function getEditCount() {
/* Voegt edit-count toe aan koptekst op Speciaal:Bijdragen/(gebruikersnaam) */
/*
overbodig sinds 20230828, zie https://nl.wikibooks.org/w/index.php?title=Wikibooks:Lerarenkamer/Nieuwsbrieven_2023&oldid=382431#Tech_News:_2023-35
if (mw.config.get('wgRelevantPageName') == 'Speciaal:Bijdragen/' + mw.config.get('wgUserName').replace(/ /g, "_")) {
var obj = document.getElementById('firstHeading');
obj.innerHTML = obj.innerHTML + ' <span style="font-size: small;"> (' + mw.config.get('wgUserEditCount') + ')</span>';
}
*/
return;
}
function capFirst(str) {
/* fix all-caps en camel-case */
return str[0].toUpperCase() + str.slice(1).toLowerCase();
}
function replaceObsoleteHTMLTags() {
var prev = '', sub='', subColor='', subFace='', subSize='', found='', text='', res='', X, Y, Z;
var obj = document.getElementById('wpTextbox1');
if (obj == null) return; /* exit */
if (! (mw.config.get('wgPageContentModel') == 'wikitext')) return; /* exit */
var text = obj.value;
if (text.search(/{{Wiu[2,3]/i) > -1) {
alert('Stop: werk in uitvoering!');
return; /* exit */
}
createDebug();
/* Linkfixes - 20220306*/
text = text.replace(/{{HTML-standaardattributen/, "{{HTML standaardattributen");
text = text.replace(/{{HTML tags/, "{{HTML elementen");
/* <font> */
while (true) {
// common pt. 1
X = /<font.*?>/i.exec(text); // .exec: if not found: X=null, X[0] etc. = undefined !!
if (X == null) break; // geen font-tags
X = X + ''; // !!
subColor = subFace = subSize = X.replace(/(\x22|\x27)/g, ""); // - ' en "
/* <font color> */
if (subColor.search(/color/i) > -1) {
subColor = /color *= *[a-z,0-9,#]*/i.exec(subColor) + ''; // !!
if (subColor) {
subColor = subColor.replace(/ *= */, ": ") + ";";
subColor = subColor.toLowerCase();
}
}
else {subColor = null;} // geen color-attribute
/* <font face> */
if (subFace.search(/face/i) > -1) {
subFace = subFace.replace(/ *, */g, ",");
subFace = /face *= *[a-z,0-9,\,]*/i.exec(subFace) + ''; // !!
if (subFace) {
subFace = subFace.replace(/,/g, ', ');
subFace = subFace.replace(/face *= */i, 'font-family: ') + ';';
}
}
else {subFace = null;} // geen face-attribute
/* <font size> */
// todo
// tijdelijk: subSize = null;
if (subSize.search(/size/i) > -1) {
debug(subSize); // <font color=red face=Tahoma size=3>
subSize = /(?<=size *= *).*?(?=(\x20,'>'))/i.exec(subSize) + '';
debug(subSize); //
// subSize = subSize.replace(/.../, "...");
}
else {subSize = null;} // geen size-attribute
// tijdelijk:
subSize = null;
// common pt. 2
Y = '<span style="';
//debug(Y);
if (subColor) Y += subColor;
//debug(Y);
if (subFace) Y += (subColor ? ' ' : '') + subFace;
//debug(Y);
if (subSize) Y += (subColor || subFace ? ' ' : '') + subSize;
//debug(Y);
Y += '">';
//debug(Y);
text = text.replace(X,Y);
text = text.replace(/<\/font/ig, "</span");
} // while (true)
/*
ToDo:
- font color/size/face !!!
- uitzonderingen maken voor elementen tussen blockquote-, nowiki-, pre- en comment-tags !
*/
/*** Obsolete elements:***/
/* <big> */
text = text.replace(/(<big>){3,6}/ig, '<span style="font-size: xx-large;">'); //xxx-large werkt niet in Chrome !
text = text.replace(/(<big>){2}/ig, '<span style="font-size: x-large;">');
// 20220106: x-large voor zon en water
if (mw.config.get('wgTitle').indexOf("Leer jezelf ecologisch tuinieren") > -1) {
text = text.replace(/(?<=\| *zon *=.*)<big>/ig, '<span style="font-size: x-large;">');
text = text.replace(/(?<=\| *water *=.*)<big>/ig, '<span style="font-size: x-large;">');
}
text = text.replace(/<big/ig, '<span style="font-size: large;"');
text = text.replace(/(<\/big *[a-z|0-9]*>){1,6}/ig, "</span>");
/* <center> */
text = text.replace(/<center/ig, '<div style="text-align: center;"');
text = text.replace(/<\/center/ig, "</div");
/* <small> */
text = text.replace(/(<small>){3,6}/ig, '<span style="font-size: xx-small;">');
text = text.replace(/(<small>){2}/ig, '<span style="font-size: x-small;">');
text = text.replace(/<small/ig, '<span style="font-size: small;"');
text = text.replace(/(<\/small *[a-z|0-9]*>){1,6}/ig, "</span>");
/* <source> 20220116 */
text = text.replace(/<source/ig,'<syntaxhighlight');
text = text.replace(/<\/source/ig,'</syntaxhighlight');
/* <strike> */
text = text.replace(/<strike/ig, "<s");
text = text.replace(/<\/strike/ig, "</s");
/* <tt> */
text = text.replace(/<tt/ig, "<code");
text = text.replace(/<\/tt/ig, "</code");
/*** Diversen: ***/
/* <br> */
text = text.replace(/\x20*<\/?br\x20?\/? ?>/ig, "<br>");
/* <br clear=left/right/all/both> */
text = text.replace(/\x20*<br clear ?= ?(\x22|\x27)?left(\x22|\x27)?\x20?\/?>/ig, '<br style="clear: left;">');
text = text.replace(/\x20*<br clear ?= ?(\x22|\x27)?right(\x22|\x27)?\x20?\/?>/ig, '<br style="clear: right;">');
text = text.replace(/\x20*<br clear ?= ?(\x22|\x27)?(all|both)(\x22|\x27)?\x20?\/?>/ig, '<br style="clear: both;">');
/* <hr> */
text = text.replace(/<\/?hr\x20?\/?>/ig, "<hr>");
/* [[categorie */
text = text.replace(/\[\[categorie/ig, "[[Categorie");
/* prettytable */
text = text.replace(/prettytable/ig, "wikitable");
/* WSBN */
text = text.replace(/WSBN( |-|_)?nummer/ig, "WSBN");
text = text.replace(/.*Hier.*onderhoudsmeldingen.*\n/ig, "");
/* . ná <ref> */
while(true) {
X = /(?<!\.) ?<ref>.*?<\/ref>\./.exec(text);
if (X == null) break;
Y = X[0].replace(/ ?<ref>/,'.<ref>');
Y = Y.replace('</ref>.','</ref>');
text = text.replace(X,Y);
}
/* sjablonen en Magic Words */
text = text.replace(/{{{/g, "aW~d6-8Ht#yV_5"); // vervang "{{{" tijdelijk door code om varabelen te onderscheiden van sjablonen
/* Magic Words - 20230323 */
text = text.replace(/\{\{#categorytree:/g, "{{#Categorytree:");
text = text.replace(/\{\{#expr:/g, "{{#Expr:");
text = text.replace(/\{\{\s?#if:\s?/ig, "{{#If:");
text = text.replace(/\{\{#invoke:/g, "{{#Invoke:");
text = text.replace(/\{\{#pos:/g, "{{#Pos:");
text = text.replace(/\{\{#switch:/g, "{{#Switch:");
/* Magic Words met 2 hoofdletters: 20230421 */
text = text.replace(/\{\{#ife/ig, "{{#IfE");
/* oud:
text = text.replace(/\{\{#iferror:/g, "{{#IfError:");
text = text.replace(/\{\{#ifexpr:/g, "{{#IfExpr:");
text = text.replace(/\{\{#ifexist:/g, "{{#IfExist:");
text = text.replace(/\{\{#ifeq:/g, "{{#IfEq:");
*/
/* ISBN 20230625 */
//text = text.replace(/ISBN\s{1,3}/ig, "{{ISBN|");
// debug ("ISBN checken!");
// text = text.replace(/(?<=\{\{ISBN\|[0-9%s]{8,13})(( )|\.|,|\n)/ig, "}} "); // <-
/* ISBN exp. 20240121 */
text = text.replace(/ISBN\s{1,3}([0-9]\-?)*/ig, "{{$&}}");
text = text.replace(/\{\{ISBN\s{1,3}/ig, "{{ISBN|");
/* Sjabloonredirects vervangen 20220209 */
text = text.replace(/{{Beg(innetje)?}}/ig, "{{Begin}}");
text = text.replace(/{{Alleen afdrukken ?(\|\n|\n\|)/ig, '{{Alleen afdrukken inline\n|\n'); // extra \n tbv. sommige wikicodes
text = text.replace(/{{Alleen afdrukken ?\|/ig, '{{Alleen afdrukken inline|');
text = text.replace(/{{Herhalen ?\|/ig, '{{Repeat|');
text = text.replace(/{{Niet afdrukken ?(\|\n|\n\|)/ig, '{{Niet afdrukken block\n|\n'); // extra \n tbv. sommige wikicodes
text = text.replace(/{{Niet afdrukken ?\|/ig, '{{Niet afdrukken block|');
text = text.replace(/{{Receptmetafbeelding/ig, "{{Recept"); // 20230312
text = text.replace(/{{Zieook ?(\|\n|\n\|)/ig, '{{Zie ook\n|\n'); // extra \n tbv. sommige wikicodes
text = text.replace(/{{Zieook ?\|/ig, '{{Zie ook|');
text = text.replace(/{{StringReplace ?\|/ig, '{{Replace|');
text = text.replace(/{{Crd ?\|/ig, '{{Akkoord|');
text = text.replace(/{{Akkoorden ?\|/ig, '{{Akkoord|');
// eerst toepassen op _alle_ sjablonen, ipv. check op overbodige "|" ?
/* sjabloonnaam met hoofdletter */
{
while(true){
X = /{{[a-z]/.exec(text);
if (X == null) break;
Y = X[0].toUpperCase();
text = text.replace(X,Y);
}
/* Idem in Sjabloon:Tl: 20230421 -- ToDo
while(true){
X = /{{tl\|[A-Za-z]/i.exec(text);
alert("X1=" + X);
if (X == null) break;
alert("X2=" + X);
Y = X[0].toUpperCase();
alert("Y=" + Y);
text = text.replace(X, "{{Tl|" + Y);
alert("3=" + text.replace(X, "{{Tl|" + Y));
/ alert(X + " - " Y + " - " + text.replace(X, "{{Tl|" + Y));
}
*/
// overbodige pipe na sjabloonnaam
prev = text;
text = text.replace(/(?<={{[a-z,0-9, ,-]*) *\| *\n/ig, '\n|\n');
if (!(prev == text)) {
debug('checken: evt. eerste sjabloonparameter(s)!'); // alert
}
}
text = text.replace(/aW~d6-8Ht#yV_5/g, "{{{"); // herstel code naar "{{{" ---------------
/* {{Sub}} onderaan */
X = text.search(/{{sub}}/i);
if (X > -1 && X < 50) {text = text.replace(/{{sub}}\n?/i, '') + '{{Sub}}';}
/* lege regels voor {{sub}} */
text = text.replace(/\n*{{sub}}/ig,'\n{{Sub}}');
/* <tr> |- */
text = text.replace(/\|-+/g, "|-");
/* overbodige laatste <tr> */
text = text.replace(/ *\|-\x20*\n *\|}/g, "|}");
/* wikicode hr: 4 streepjes */
text = text.replace(/^-{5,}/g, "----");
text = text.replace(/\n-{5,}/g, "\n----");
/* http:// */
prev = text;
text = text.replace(/http:\/\//ig, 'https://');
if (!(prev == text)) {debug('Check externe links (https)!');} // alert
/* "xxe eeuw" in tekst */ { // 20220119
/* disabled: mag geen _links_ wijzigen ! 20220215
text = text.replace(/(?<=(1|2)?[0-9])e eeuw/g,'<sup>e</sup> eeuw');
text = text.replace(/(?<=(1|2)?[0-9])e-eeuw/g,'<sup>e</sup>-eeuw');
*/
}
text = text.replace(/\[\[categorie:/ig, "[[Categorie:");
text = text.replace(/\[\[:categorie:/ig, "[[:Categorie:");
/* Afsluitende tag op Categorie: 20220124, v2 */
if (mw.config.get('wgNamespaceNumber') == 14) {
text = text.replace(/'''{{PAGENAME}}(?!''')/i, "'''{{PAGENAME}}'''");
}
/* Check op nested span tags - 20220218 */
if (text.search(/<\/span( color)?> ?<\/span>/i) > -1 ){
// alert('Check: nested span tags!?');
text = text.replace(/"><span style="/ig, ' ') /* erg bot: alleen voor eco tuin ?? */
text = text.replace(/<\/span( color)?> ?<\/span>/ig, '</span>'); /* ,, */
}
/* geen lege regel na kopjes - 20230724 */
text = text.replace(/==\n\n(?!==)/g, "==\n");
/*** Eenmalige acties ***/
text = text.replace(/\{\{Clear\}\}/ig, '{{Clearboth}}');
text = text.replace(/\{\{noindex\}\}/ig, '__NOINDEX__');
text = text.replace(/\{\{Abc\}\}/ig, '{{Alfabet met ankers}}'); /* 20230414 */
text = text.replace(/\{\{TOCRechts/ig, '{{TOC rechts'); /* 20230417 */
text = text.replace(/\{\{TOCLinks/ig, '{{TOC links'); /* 20230417 */
text = text.replace(/\{\{Wikt(?=(\||\}))/ig, '{{Wiktionary'); /* 20230514 */
text = text.replace(/\{\{Woordenboek Index\}/ig, '{{Alfabet met links}'); /* 20230520 */
text = text.replace(/\{\{Bladeren(2|3)/ig, '{{Bladeren4'); /* 20230531 */
text = text.replace(/se wikipedia/ig, 'stalige Wikipedia'); /* 20230614 */
text = text.replace(/(?<=g)allerij/ig, 'alerij'); /* 20230614 */
/* tbv. lintfouten op overleg gebruiker */
// text = text.replace(/('''|\<\/?b\>)/ig, ""); /* 20230627 */
/* tbv. verkeerd geneste tags op overleg:gebruiker */
// text = text.replace(/\<\/?span.*?\>/ig, ""); /* 20230627 */
// obj.value = 'Lintfouten: Verkeerd geneste tags';
/* test: CSS beter leesbaar maken - 20230519 */
text = text.replace(/(?<=style\=\".*): *(?=\>)/ig, ": "); /* too greedy; check "http(s):, /File: etc. ! */
text = text.replace(/(?<=style\=\"); ?(?=\")/ig, "; ");
/* ------ oud -------------
text = text.replace(/\[\[Categor(ie|y):Sjablonen(?=[\||\]\]])/ig, '[[Categorie:Sjablonen Wikibooks-gebruikers');
text = text.replace(/\[\[Categor(ie|y):Sjablonen(?=[\||\]\]])/ig, '[[Categorie:Sjablonen voor een bepaald boek');
// "xxe eeuw" in titel { // 20220119
var title = mw.config.get('wgTitle');
var pattern = /(?<=(1|2)?[0-9])e-eeuw/;
if (text.search(/{{DISPLAYTITLE:/) == -1) {
if (title.search(pattern) > -1) {
text = '{{DISPLAYTITLE:' + title.replace(pattern,'<sup>e</sup>-eeuw') + '}}' j+ text;
}
}
else debug('{{DISPLAYTITLE: is niet vervangen');
}
// tijdelijk (tbv "Lintfouten: Afsluitende tag ontbreekt")
text = text.replace(/{{cat\|?/ig, "{{Cat");
text = text.replace(/{{boekcat\|/ig, "{{Boekcat");
text = text.replace("'''{{PAGENAME}}", "'''{{PAGENAME}}'''");
*/
/* verplaatsen naar andere categorie:
text = text.replace(/\[\[Categorie:Aardrijkskunde/ig, "[[Categorie:Geografie");
*/
/* sig BeeBringer:
text = text.replace(/\[\[Bestand:BeeBringer.png\]\].*?\<\/sup>/, '\n[[Gebruiker:BeeBringer|BeeBringer]] [[Overleg_gebruiker:BeeBringer|overleg]]');
text = text.replace(/u wijzingen/, 'uw wijzigingen');
*/
/* div. typefouten */
// text = text.replace(/(?<=w)ijzingen/, 'ijzigingen');
text = text.replace(/paramaters/, 'parameters');
/*** Einde ***/
/* niets veranderd? */
if (obj.value == text) return; /* exit */
obj.value = text; /* klaar om op te slaan */
// obj.value = obj.value + '\n\n' + text; // TIJDELIJK!!
/*** Samenvatting ***/
var obj = document.getElementById('wpSummary');
// obj.value = 'cat';
// obj.value = 'Lintfouten: Verouderde HTML-elementen';
// obj.value = 'Lintfouten: Afsluitende tag ontbreekt';
/* tijdelijk (voor eenmalige acties): */
// obj.value = '[[Categorie:Sjablonen voor een bepaald boek]]';
// obj.value = '[[Categorie:Sjablonen Wikibooks-gebruikers]]';
/*** Niet volgen tenzij reeds eerder gevolgd ***/
var obj = document.getElementById('ca-watch');
if (obj) {document.getElementById('wpWatchthis').checked = false;}
return;
}
function addPurgeTab() {
/* Voegt een "purge" tabje toe
(bron: https://nl.wikipedia.org/wiki/Gebruiker:Pjetter/monobook.js) */
if(!document.getElementById) return;
var x = document.getElementById('ca-history');
if(! x) { return; }
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
if(x.children) { x = x.children[0]; }
else { x = x.childNodes[0]; }
addlilink(tabs, x.href.replace(/=history/, "=purge"), 'purge', 'ca-purge');
// ta['ca-purge'] = ['g', 'Purge the internal cache for this page']; // "ta is not defined"
}
function addlilink(tabs, url, name, id) {
/* voegt tabjes toe
(bron: https://nl.wikipedia.org/wiki/Gebruiker:Pjetter/monobook.js) */
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
li.id = id;
li.appendChild(na);
tabs.appendChild(li);
return li;
}
function experiment() { // (om 'Inklappen' resp. 'Uitklappen' te vervangen)
UitklapDivHide = '▲'; // U+25B2 kleiner: ▴ u+25B4 werkt niet
UitklapDivShow = '▼'; // U+25BC kleiner: ▾ u+25BE ,, ,,
}
function automatePurgeConfirmationDialog() {
/* Automate purge confirmation dialog. (https://en.wikipedia.org/wiki/Wikipedia:Purge) */
if (mw.config.get('wgAction') === 'purge' ) {
$('form[action*="action=purge"]').submit();
}
return;
}
function markeerLintErrors() { // 20220114
// Markeert aantallen > 0 op Speciaal:LintErrors met een rode achtergrond.
if (! (mw.config.get('wgPageName') == 'Speciaal:LintErrors')) return; /* exit */
var list = document.getElementsByTagName("BDI");
if (list.length == 0) return;
for (i=0; i<list.length; i++) {
if (! (list[i].innerHTML == '(0 fouten)')) {
list[i].style.background = '#ff8080';
}
}
return;
}
function createDebug() { // v2, 20220113
// Creëert een debug-venster direct boven het bewerkingsvak.
var obj = document.getElementById('wpTextbox1');
var parent = document.getElementById('editform');
var newItem = document.createElement("DIV");
newItem.id = 'debug';
newItem.style.display='none';
var textnode = document.createTextNode("");
newItem.appendChild(textnode);
parent.insertBefore(newItem, obj);
}
function debug(txt) {
// Voegt een regel tekst toe aan het debug-venster.
var obj = document.getElementById('debug');
if (obj == null) return; /* exit */
obj.style.display = 'block';
obj.innerHTML = obj.innerHTML + txt.replace(/</g,'<') + '<br>';
}
// </nowiki>