Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Internet Explorer / Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5
  • Opera: Pressione Ctrl-F5.
// <source lang="csharp">
/*
* Insère des liens Bienvenue sur la page Special:Log/newusers
*
* auteur : [[:fr:TiChou]]
* date : 6 juin 2007
*/
if (wgPageName == 'Especial:Log' 
&& (/^\/wiki\/Especial:Log\/newusers\b/.test(location.pathname)
|| /^\?.*\btype=newusers\b/.test(location.search))) {
 
// getElementsByClassName
if (!document.getElementsByClassName) {
document.getElementsByClassName = function() {
var nodes;
var elements = new Array();
elements.item = function(index) { return elements[index]; }
 
if (this.getElementsByTagNameNS)
nodes = this.getElementsByTagNameNS("*", "*");
else if (this.getElementsByTagName)
nodes = this.getElementsByTagName("*");
else
return null;
 
var element;
var match, regex = new RegExp();
 
var i,j;
var leni = nodes.length;
var lenj = arguments.length;
for (i = 0; i < leni; i++) {
element = nodes[i];
match = true;
for (j = 0; j < lenj && match; j++) {
regex.compile("(^|\\s)" + arguments[j] + "(\\s|$)");
if (!regex.test(element.className)) match = false;
}
if (match) elements.push(element);
}
return elements;
}
}
 
// getElementById
if (typeof(getElementById) == "undefined") {
getElementById = function(id) {
var element = null;
if (this.id == id) {
element = this;
element.getElementsByClassName = document.getElementsByClassName;
}
for (var child = this.firstChild; !element && child; child = child.nextSibling)
if (child.nodeType == 1) {
child.getElementById = getElementById;
element = child.getElementById(id);
}
return element;
}
}
 
// URL encode
if (typeof(wpURLEncode) == "undefined") {
wpURLEncode = function(string) {
if (!string) return "";
return string.replace(/ /g, "_").replace(/[\x00-\x2C\x3B-\x40\x5B-\x5E\x60\x7B-\uFFFF]/g,
function (match) {
var c = match.charCodeAt(0);
var s = new Array();
if (c < 0x80) s.push(c);
else if (c < 0x0800) s.push(c >>  6 | 0xC0, c & 0x3F | 0x80);
else if (c < 0x010000) s.push(c >> 12 | 0xE0, c >>  6 & 0x3F | 0x80, c & 0x3F | 0x80);
else if (c < 0x110000) s.push(c >> 18 | 0xF0, c >> 12 & 0x3F | 0x80, c >>  6 & 0x3F | 0x80, c & 0x3F | 0x80);
for (var i = 0, len = s.length; i < len; i++)
s[i] = (s[i] < 16 ? "%0" : "%") + s[i].toString(16).toUpperCase();
return s.join("");
});
}
}
 
// HTTP
if (typeof(httpRequest) == "undefined") {
httpRequest = function(bundle) {
// mandatory: bundle.url
// optional:  bundle.async
// optional:  bundle.method
// optional:  bundle.headers
// optional:  bundle.content
// optional:  bundle.onSuccess (request, bundle)
// optional:  bundle.onFailure (request, bundle)
// optional:  bundle.data
var request;
try {
request = new XMLHttpRequest();
} catch(e) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
request = false;
}
}
}
 
if (request) {
request.onreadystatechange = function() {
if (request.readyState == 4)
httpComplete(request, bundle);
};
request.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async == false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
request.setRequestHeader(field, bundle.headers[field]);
}
request.send(bundle.content ? bundle.content : null);
}
return request;
}
}
 
if (typeof(httpComplete) == "undefined") {
httpComplete = function(request, bundle) {
if (request.status >= 200 && request.status < 300) {
if (bundle.onSuccess) {
var contentType = request.getResponseHeader("Content-Type");
var regex = new RegExp(/^([^\/]+\/[^;]+).*/);
contentType = contentType.replace(regex, "$1");
if (contentType == "text/html") {
if (navigator.appName == "Microsoft Internet Explorer") {
var doc = document.createElement("div");
doc.innerHTML = request.responseText;
doc.getElementsByClassName = document.getElementsByClassName;
doc.getElementById = getElementById;
bundle.onSuccess(doc, bundle.data);
} else {
var doc = (new DOMParser()).parseFromString(request.responseText, 'application/xhtml+xml');
bundle.onSuccess(doc, bundle.data);
}
} else if (contentType == "text/xml") {
var xml = null;
if (navigator.appName == "Microsoft Internet Explorer") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(request.responseText);
} else if (window.DOMParser) {
xml = new DOMParser();
xml = xml.parseFromString(request.responseText, 'text/xml');
}
bundle.onSuccess(xml, bundle.data);
} else {
bundle.onSuccess(request, bundle.data);
}
}
} else if (bundle.onFailure) {
bundle.onFailure(request, bundle.data);
} else {
alert(request.statusText);
}
}
}
 
function goBienvenue(user) {
httpRequest({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=User_Talk:' + user + '&action=edit',
onSuccess: postBienvenue,
data: { user: user } });
}
 
function postBienvenue(doc, data) {
var user = data.user;
 
var wpTextbox1 = encodeURIComponent('{{subst:' + wpBienvenue.message + '}}~~~~' + doc.getElementById('wpTextbox1').value);
 
var inputs = doc.getElementById('editform').getElementsByTagName('input');
var editform = new Array();
for (var i = 0, len = inputs.length; i < len; i++) {
editform[inputs[i].name] = inputs[i].value;
}
var wpStarttime = encodeURIComponent(editform['wpStarttime']);
var wpEdittime = encodeURIComponent(editform['wpEdittime']);
var wpEditToken = encodeURIComponent(editform['wpEditToken']);
 
var wpSummary = encodeURIComponent('Boas-vindas !');
 
var headers = new Array();
headers['Content-Type'] = 'application/x-www-form-urlencoded';
httpRequest({ url: mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?title=User_Talk:' + user + '&action=submit',
method: 'POST',
headers: headers,
content: 'wpSave=1&wpTextbox1=' + wpTextbox1 + '&wpStarttime=' + wpStarttime + '&wpEdittime=' + wpEdittime
+ '&wpEditToken=' + wpEditToken + '&wpSummary=' + wpSummary,
onSuccess: delBienvenue,
data: data });
}
 
function delBienvenue(doc, data) {
var li = document.getElementById(data.user);
if (li != null) {
if (wpBienvenue.cacher) {
li.parentNode.removeChild(li);
} else {
li.getElementsByTagName('a')[1].removeAttribute('class');
li.removeChild(li.childNodes[6]);
li.removeChild(li.childNodes[6]);
}
}
}
 
function bienvenue() {
var bodyContent = document.getElementById('bodyContent');
var lis = bodyContent.getElementsByTagName('li');
var a,text,user;
for (var i = lis.length - 1; i >= 0; i--)
if (lis[i].getElementsByTagName('a')[2].className == 'new'
|| lis[i].getElementsByTagName('a')[0].className != 'new'
|| lis[i].getElementsByTagName('a')[1].className != 'new') {
if (wpBienvenue.cacher) lis[i].parentNode.removeChild(lis[i])
} else {
user = wpURLEncode(lis[i].getElementsByTagName('a')[0].firstChild.nodeValue);
lis[i].id = user;
text = document.createTextNode(' | ');
lis[i].insertBefore(text, lis[i].childNodes[6]);
a = document.createElement('a');
a.href = 'javascript: goBienvenue(\'' + user + '\');';
text = document.createTextNode('Enviar boas-vindas');
a.appendChild(text);
lis[i].insertBefore(a, lis[i].childNodes[7]);
}
}
 
if (typeof(wpBienvenue) == "undefined") { var wpBienvenue = { message: "bv", cacher: false }; }
$(bienvenue);
}
// </source>