User:Zyephyrus/global.js
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.
// install [[User:Cacycle/wikEdDiff]] enhanced diff
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Cacycle/wikEdDiff.js&action=raw&ctype=text/javascript' );
/***
*Regular expressions
*Author: ThomasV, Pathoschild
*Note : this tool uses the javascript syntax: use $ (and not \) to call a group
*Tutoriel : http://www.regular-expressions.info/tutorial.html
****/
/* create form */
function custom() {
/* if already open */
if(document.getElementById('regexform')) customremove()
else {
var editbox = document.getElementById('wpTextbox1');
/* container */
var regexform = document.createElement('div');
regexform.setAttribute('id','regexform');
editbox.parentNode.insertBefore(regexform,editbox.parentNode.firstChild);
/* form tag */
var formform = document.createElement('form');
formform.setAttribute('id','regexformform');
//formform.setAttribute('onSubmit','customgo(); return false;');
regexform.appendChild(formform);
// add input boxes
var newinput = document.createElement('input');
newinput.setAttribute('id','formsearch');
var newlabel = document.createElement('label');
newlabel.setAttribute('for','formsearch');
newlabel.appendChild(document.createTextNode("Repl. "));
formform.appendChild(newlabel);
formform.appendChild(newinput);
var newinput = document.createElement('input');
newinput.setAttribute('id','formreplace');
var newlabel = document.createElement('label');
newlabel.setAttribute('for','formreplace');
newlabel.appendChild(document.createTextNode(' par '));
formform.appendChild(newlabel);
formform.appendChild(newinput);
// go! link
var go_button = document.createElement('input');
go_button.setAttribute('type',"button");
go_button.setAttribute('onclick',"customgo();");
go_button.setAttribute('title',"go!");
go_button.setAttribute('value',"go!");
formform.appendChild(go_button);
}
}
/* run patterns */
function customgo() {
/* get search and replace strings */
var msearch = document.getElementById('formsearch').value;
msearch = msearch.replace(/\\n/g, '\n');
var mreplace = document.getElementById('formreplace').value;
mreplace = mreplace.replace(/\\n/g, '\n');
/* convert input to regex */
// without delimiters
if(!msearch.match(/^\s*\/[\s\S]*\/[a-z]*\s*$/i)) {
var search_re = new RegExp(msearch,'g');
}
// with delimiters
else {
// break into parts
var regpattern = msearch.replace(/^\s*\/([\s\S]*)\/[a-z]*\s*$/i,'$1');
var regmodifiers = msearch.replace(/^\s*\/[\s\S]*\/([a-z]*)\s*$/,'$1');
// filter invalid flags
regmodifiers = regmodifiers.replace(/[^gim]/ig,'');
var search_re = new RegExp(regpattern, regmodifiers);
}
/* perform */
var editbox = document.getElementById('wpTextbox1');
editbox.value = editbox.value.replace(search_re,mreplace);
}
/* remove form */
function customremove() {
var regexform = document.getElementById('regexform');
regexform.parentNode.removeChild(regexform);
patterncount = -1;
}
function addButtonToWikiEditorToolbar( b ){
var tools = {};
tools[ b.imageId ] = {
label: b.speedTip,
type: 'button',
icon: b.imageFile,
action: {
type: 'callback',
execute: b.onClick
}
};
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'proofreadpage-tools',
group: 'other',
tools: tools
} );
$( '[rel="' + b.imageId + '"]' ).width( 22 );
}
function addButtonToClassicToolbar( b ){
mw.toolbar.addButton( {
imageFile: b.imageFile,
speedTip: b.speedTip,
imageId: b.imageId
} );
$( '#' + b.imageId ).off( 'click' ).click( function () {
b.onClick();
return false;
} ).width( 23 );
}
function customizeToolbar()
{
var modules, add, img;
// This can be the string "0" if the user disabled the preference ([[bugzilla:52542#c3]])
if( mw.user.options.get( 'usebetatoolbar' ) == 1 ){
modules = [ 'ext.wikiEditor' ];
if (mw.config.get('wgCanonicalNamespace') == 'Page') {
modules.push('ext.proofreadpage.page.edit');
}
img = '//upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Toolbaricon_RegEx.svg/22px-Toolbaricon_RegEx.svg.png';
add = addButtonToWikiEditorToolbar;
} else if ( mw.user.options.get( 'showtoolbar' ) == 1 ){
modules = 'mediawiki.toolbar';
img = '//upload.wikimedia.org/wikipedia/commons/a/a0/Button_references_alt.png';
add = addButtonToClassicToolbar;
} else {
return;
}
$.when(
mw.loader.using( modules ),
$.ready
).then( function(){
add( {
imageFile: img,
speedTip: 'regexp',
imageId: 'wsRegexp',
onClick: custom
} );
} );
}
mw.loader.using( 'user.options' ).done( customizeToolbar );
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hedonil/XTools/XTools.js&action=raw&ctype=text/javascript');
mw.loader.load( '//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript' );
/*
Ce gadget provient de https://pl.wikipedia.org/wiki/MediaWiki:Gadget-searchbox.js
Auteurs : [[:en:User:Zocky]], Maciej Jaros [[:pl:User:Nux]]
Ce script dépend de [[MediaWiki:Gadget-lib-beau.js]], qui définit les fonctions
importScriptFromWikipedia et importStylesheetFromWikipedia
(la dépendance est indiquée dans [[MediaWiki:Gadgets-definition]]).
*/
// test, line#0
// EOC@line#24
var tmp_VERSION = '2.2.2';
// EOC@line#30
// EOC@line#42
// EOC@line#48
var tmp_nuxsr_lang = {'_' : ''
,'_num_ ocurrences of _str_ replaced with _str_' : 'Remplacement de $1 [$2] par [$3].'
,'searching from the beginning' : 'Recherche depuis le début'
,'name conflict error' : 'Erreur fatale : conflit de nom.'
};
// EOC@line#58
var nuxsr = new Object();
window.nuxsr = nuxsr;
nuxsr.ver = nuxsr.version = tmp_VERSION;
nuxsr.lang = tmp_nuxsr_lang;
nuxsr.btns =
{
sr :
{
attrs :
{
title : 'Rechercher et remplacer',
alt : "Boite",
style : "width:auto;height:auto",
id : 'SearchIcon'
},
icons :
{
oldbar : '//upload.wikimedia.org/wikipedia/commons/1/12/Button_find.png',
newbar : '//commons.wikimedia.org/w/thumb.php?f=Crystal_Clear_action_viewmag.png&width=21px'
}
},
tc :
{
attrs :
{
title : 'Modifier la casse',
alt : "Casse",
style : "width:auto;height:auto"
},
icons :
{
oldbar : '//upload.wikimedia.org/wikipedia/commons/1/12/Button_case.png',
newbar : '//commons.wikimedia.org/w/thumb.php?f=Wynn.svg&width=23px'
}
},
so1 :
{
attrs :
{
title : 'Trier dans l\'ordre alphabétique',
alt : "Trier haut",
style : "width:auto;height:auto"
},
icons :
{
oldbar : '//upload.wikimedia.org/wikipedia/commons/6/6f/Button_arrow_up.PNG',
newbar : '//commons.wikimedia.org/w/thumb.php?f=Wynn.svg&width=23px'
}
},
so2 :
{
attrs :
{
title : 'Trier dans l\'ordre décroissant',
alt : "Trier bas",
style : "width:auto;height:auto"
},
icons :
{
oldbar : '//upload.wikimedia.org/wikipedia/commons/2/2b/Button_arrow_down.PNG',
newbar : '//commons.wikimedia.org/w/thumb.php?f=Wynn.svg&width=23px'
}
}
}
nuxsr.boxHTML =
'<form name="nuxsr_form"><div id="srBox" style="line-height: 1.5em;">'
+'<div>'
+'<span style="float:left;padding-top:0px;">'
+'<span class="label">Rechercher</span><br />'
+'<input size="25" type="text" name="nuxsr_search" id="nuxsr_search" accesskey="F" tabindex="8" onkeypress="event.which == 13 && nuxsr.next()"; value="" />'
+'</span>'
+'<span style="float:left;padding-top:0px;">'
+'<span class="label">Remplacer</span><br />'
+'<input size="25" type="text" name="nuxsr_replace" id="nuxsr_replace" accesskey="G" tabindex="9" onkeypress="event.which == 13 && nuxsr.next()"; value="" />'
+'</span>'
+'<span>'
+'<label><input type="checkbox" name="nuxsr_case" onclick="nuxsr.t.focus()" tabindex="10" />Respecter la casse</label>'
+'<label><input type="checkbox" name="nuxsr_regexp" onclick="nuxsr.t.focus()" tabindex="11" />RegEx</label>'
+'<br />'
+'<a href="javascript:nuxsr.back()" title="rechercher le précédent [alt-2]" accesskey="2"><</a> '
+'<a href="javascript:nuxsr.next()" title="rechercher le suivant [alt-3]" accesskey="3">suivant</a> '
+'<a href="javascript:nuxsr.replace();nuxsr.back()" title="Remplacer le précédent [alt-4]" accesskey="4"><</a> '
+'<a href="javascript:nuxsr.replace()" title="Remplacer le courant">remplacer</a> '
+'<a href="javascript:nuxsr.replace();nuxsr.next()" title="Remplacer le suivant [alt-5]" accesskey="5">></a> '
+'<a href="javascript:nuxsr.replaceAll()" title="Remplacer dans toute la page [alt-7]" accesskey="7">tout remplacer</a> '
+'</span>'
+'</div>'
+'<div style="clear:both;padding-top:3px;">'
+'<span>'
+'<a href="javascript:nuxsr.mem.remind()" style="background:inherit">Regex prédéfini</a>'
// +' <a href="javascript:nuxsr.mass_rep(nuxsr.mass_rep_htmlspecialchars)" title="Zamień specjalne znaki HTML na encje HTML">HTMLSpecialChars</a>'
+'</span>'
+' '
+'<span>'
+'<a href="javascript:nuxsr.gotoLine()" style="background:inherit" title="Aller à la ligne n°">Ligne n°</a>'
+' <input type="text" name="nuxsr_goto_line" tabindex="12" style="width:55px" />'
+'</span>'
+'</div>'
+'<div style="clear:both"></div>'
+'</div></form>'
;
// nuxsr.i=document.getElementById('SearchIcon');
// EOC@line#154
nuxsr.getSearchString = function ()
{
var str = nuxsr.s.value;
if (!nuxsr.f.nuxsr_regexp.checked)
{
str = str.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1')
}
return str;
}
nuxsr.getReplaceString = function ()
{
var str = nuxsr.r.value;
if (!nuxsr.f.nuxsr_regexp.checked)
{
//str=str.replace(/([\$\\])/g,'\\$1');
}
else
{
//str=str.replace(/\\n/g,"\n").replace(/\\t/g,"\t").replace(/&backslash;/g,"\\").replace(/$/g,"\$")
str = str.replace(/'/g,"\\'");
eval ("str='"+str+"'");
}
return str;
}
// EOC@line#183
nuxsr.back = function ()
{
if (nuxsr.s.value=='')
{
nuxsr.t.focus();
return;
}
var searchString = nuxsr.getSearchString();
var selBB = sel_t.getSelBound(nuxsr.t);
searchString="^([\\s\\S]*)("+searchString+")";
var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "" : "i"));
var res = re.exec (nuxsr.t.value.substring(0,selBB.start));
if (!res)
{
var res = re.exec (nuxsr.t.value)
}
if (res)
{
sel_t.setSelRange (nuxsr.t, res[1].length, res[1].length+res[2].length)
}
else
{
selBB.start = selBB.end;
sel_t.setSelBound (nuxsr.t, selBB, false);
}
nuxsr.sync();
}
nuxsr.next = function (norev)
{
if (nuxsr.s.value=='')
{
nuxsr.t.focus();
return
}
var searchString = nuxsr.getSearchString();
var selBB = sel_t.getSelBound(nuxsr.t);
var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
re.lastIndex=selBB.end;
var res = re.exec (nuxsr.t.value)
if (!res && !norev)
{
nuxsr.msg(nuxsr.lang['searching from the beginning'])
re.lastIndex=0;
var res = re.exec (nuxsr.t.value)
}
if (res)
{
sel_t.setSelRange (nuxsr.t, res.index, res.index+res[0].length)
}
else
{
selBB.start = selBB.end;
sel_t.setSelBound (nuxsr.t, selBB, false);
}
nuxsr.sync();
}
// EOC@line#258
nuxsr.replace = function ()
{
//
var str = sel_t.getSelStr(nuxsr.t, true);
//
var searchString = nuxsr.getSearchString();
var replaceString = nuxsr.getReplaceString();
var selBB = sel_t.getSelBound(nuxsr.t);
var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
//
var matchesArr = re.exec(str);
if (matchesArr && matchesArr[0].length==str.length)
{
str = str.replace(re, replaceString);
var sel_tmp = {
start : selBB.start,
strlen_post : str.length
}
sel_t.qsetSelStr(nuxsr.t, str, true);
sel_t.setSelRange (nuxsr.t, sel_tmp.start, sel_tmp.start + sel_tmp.strlen_post);
}
//
nuxsr.t.focus();
}
nuxsr.replaceAll = function ()
{
//
var str = sel_t.getSelStr(nuxsr.t, true);
//
var searchString = nuxsr.getSearchString();
var replaceString = nuxsr.getReplaceString();
var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
//
var matchesArr = str.match(re);
//
str = str.replace(re, replaceString);
//
sel_t.qsetSelStr(nuxsr.t, str, true);
nuxsr.t.focus();
//
if (matchesArr && matchesArr.length)
{
nuxsr.msg(nuxsr.lang['_num_ ocurrences of _str_ replaced with _str_'].replace(/\$1/, matchesArr.length).replace(/\$2/, nuxsr.s.value).replace(/\$3/, nuxsr.r.value));
}
return;
}
// EOC@line#339
nuxsr.toggleCase = function ()
{
var selBB = sel_t.getSelBound(nuxsr.t);
if (selBB.end>selBB.start)
{
var str = sel_t.getSelStr(nuxsr.t);
if (str==str.toUpperCase())
{
str = str.toLowerCase()
}
else if (str==str.toLowerCase() && selBB.end-selBB.start>1)
{
str = str.substring(0,1).toUpperCase()+str.substring(1).toLowerCase()
}
else
{
str = str.toUpperCase()
}
sel_t.setSelStr(nuxsr.t, str, false);
}
nuxsr.sync();
}
nuxsr.sort1 = function ()
{
var selBB = sel_t.getSelBound(nuxsr.t);
if (selBB.end>selBB.start)
{
var str = sel_t.getSelStr(nuxsr.t);
blackboard=str.split("\n")
blackboard = blackboard.sort()
sel_t.setSelStr(nuxsr.t, blackboard.join("\n"), false);
}
nuxsr.sync();
}
nuxsr.sort2 = function ()
{
var selBB = sel_t.getSelBound(nuxsr.t);
if (selBB.end>selBB.start)
{
var str = sel_t.getSelStr(nuxsr.t);
blackboard=str.split("\n")
blackboard = blackboard.reverse()
sel_t.setSelStr(nuxsr.t, blackboard.join("\n"), false);
}
nuxsr.sync();
}
// EOC@line#368
nuxsr.sync = function ()
{
nuxsr.t.focus();
}
// EOC@line#376
nuxsr.init = function ()
{
if(document.getElementById('wpTextbox1'))
{
//
nuxsr.t=document.editform.wpTextbox1;
//
nuxedtoolkit.prepare();
var group_el = nuxedtoolkit.addGroup();
nuxedtoolkit.addBtn(
group_el, 'nuxsr.showHide()',
nuxsr.btns.sr.icons, nuxsr.btns.sr.attrs
);
nuxedtoolkit.addBtn(
group_el, 'nuxsr.toggleCase()',
nuxsr.btns.tc.icons, nuxsr.btns.tc.attrs
);
nuxedtoolkit.addBtn(
group_el, 'nuxsr.sort1()',
nuxsr.btns.so1.icons, nuxsr.btns.so1.attrs
);
nuxedtoolkit.addBtn(
group_el, 'nuxsr.sort2()',
nuxsr.btns.so2.icons, nuxsr.btns.so2.attrs
);
nuxsr.i=document.getElementById('SearchIcon');
nuxsr.i.accessKey="F";
//
var srbox = document.createElement('div');
srbox.innerHTML = nuxsr.boxHTML;
srbox.firstChild.style.display = 'none';
//el=document.getElementById('editform');
el=document.getElementById('wpTextbox1');
el.parentNode.insertBefore(srbox,el);
nuxsr.srbox = srbox;
nuxsr.f=document.nuxsr_form;
nuxsr.s=document.nuxsr_form.nuxsr_search;
nuxsr.r=document.nuxsr_form.nuxsr_replace;
//
if (document.editform.messages == undefined)
{
el=document.createElement('textarea');
el.cols=nuxsr.t.cols;
el.style.cssText=nuxsr.t.style.cssText;
el.rows=5;
el.id='messages';
el.style.display='none';
el.style.width='auto';
nuxsr.t.parentNode.insertBefore(el,nuxsr.t.nextSibling);
}
}
}
// EOC@line#440
nuxsr.showHide = function ()
{
if (nuxsr.f.style.display=='none')
{
document.editform.messages.style.display='block';
nuxsr.f.style.display='block';
nuxsr.i.accessKey="none";
//nuxsr.t.style.width='auto';
nuxsr.s.focus();
// EOC@line#457
}
else
{
document.editform.messages.style.display='none';
nuxsr.f.style.display='none';
nuxsr.i.accessKey="F";
}
}
// EOC@line#470
nuxsr.gotoLine = function ()
{
if (nuxsr.f.nuxsr_goto_line.value=='')
{
nuxsr.t.focus();
return;
}
var lineno = parseInt(nuxsr.f.nuxsr_goto_line.value);
var index = (lineno==1) ? 0 : nuxsr.indexOfNthMatch (nuxsr.t.value, '\n', lineno-1);
if (index>=0)
{
if (index>0)
{
index++;
}
sel_t.setSelRange (nuxsr.t, index, index)
}
nuxsr.sync();
}
nuxsr.indexOfNthMatch = function (haystack, needle, n)
{
var index = -1;
for (var i=1; i<=n && ((index=haystack.indexOf(needle, index+1)) != -1); i++)
{
if (i == n)
{
return index;
}
}
return -1;
}
// EOC@line#516
function importStylesheetFromWikipedia(page) {
mw.loader.load('//pl.wikipedia.org/w/index.php?action=raw&ctype=text/css&title=' + encodeURIComponent(page), 'text/css');
}
importStylesheetFromWikipedia('MediaWiki:Gadget-searchbox.css');
var searchboxModules = [
'//pl.wikipedia.org/w/index.php?title=MediaWiki:Gadget-sel_t.js&action=raw&ctype=text/javascript',
'//pl.wikipedia.org/w/index.php?title=MediaWiki:Gadget-nuxedtoolkit.js&action=raw&ctype=text/javascript'
];
mw.loader.implement( "searchboxModules", searchboxModules, {}, {}, {} );
mw.loader.using( "searchboxModules", function(){
$(nuxsr.init);
$(function(){
var el=document.getElementById('wpTextbox1');
if (el) el.parentNode.insertBefore(nuxsr.srbox,el);
});
});
// EOC@line#528
nuxsr.mem = {
s : [
' - ',
'"(.*?)"([^>])'
],
r : [
' – ',
'„$1”$2'
]
};
nuxsr.mem.index = -1;
nuxsr.mem.remind = function()
{
nuxsr.mem.index++;
nuxsr.mem.index%=nuxsr.mem.s.length;
nuxsr.s.value = nuxsr.mem.s[nuxsr.mem.index];
nuxsr.r.value = nuxsr.mem.r[nuxsr.mem.index];
}
// EOC@line#573
nuxsr.mass_rep_htmlspecialchars = {
s : ['&', '>', '<'],
r : ['&', '>', '<']
};
nuxsr.mass_rep = function (obj)
{
//
//
var prev_ser_RE = nuxsr.f.nuxsr_regexp.checked;
nuxsr.f.nuxsr_regexp.checked = true;
// EOC@line#593
//
//
var selBB = sel_t.getSelBound(nuxsr.t);
var field_len = nuxsr.t.value.length;
var field_len_diff = 0;
//
//
for (var i=0; i<obj.s.length; i++)
{
nuxsr.s.value = obj.s[i];
nuxsr.r.value = obj.r[i];
nuxsr.replaceAll();
// recalculate end of the user's selection
if (selBB.start!=selBB.end)
{
field_len_diff = nuxsr.t.value.length - field_len;
selBB.end += field_len_diff;
field_len = nuxsr.t.value.length;
}
sel_t.setSelBound(nuxsr.t, selBB, false);
}
//
//
nuxsr.f.nuxsr_regexp.checked = prev_ser_RE;
}
nuxsr.msg = function (str)
{
document.editform.messages.value = str+'\n'+document.editform.messages.value;
}
// test, EOF
/***
* Move syntax shortcuts from the 'CharInsert' gadget into the editor toolbox.
* @author [[User:Tpt]] + [[user:Pathoschild]]
*/
$(function() {
if(!$.fn.wikiEditor)
return;
// create toolbox
$('#wpTextbox1').wikiEditor('addToToolbar', {
sections: {
'wikisource': {
type: 'booklet',
label: 'Wikisource',
pages: {
'wiki': {
layout: 'characters',
label: 'Syntaxe wiki',
characters: ['waat']
}
}
}
}
});
// add character links
var oldToolbox = $('#editpage-specialchars');
var newToolbox = $('.section-wikisource .page-wiki div');
oldToolbox.find('a').each(function() {
var link = $(this);
$('<span>')
.text(link.text())
.attr({ rel: link.text() })
.click(function() { link.click(); })
.appendTo(newToolbox);
});
oldToolbox.hide();
});