// /* * Insère des liens Bienvenue sur la page Special:Log/newusers * * auteur : [[:fr:TiChou]] * date : 6 juin 2007 */ if (wgPageName == 'Special:Log' && (/^\/wiki\/Special: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: wgServer + 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('Bienvenue !'); var headers = new Array(); headers['Content-Type'] = 'application/x-www-form-urlencoded'; httpRequest({ url: wgServer + 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('Bienvenue'); a.appendChild(text); lis[i].insertBefore(a, lis[i].childNodes[7]); } } if (typeof(wpBienvenue) == "undefined") { var wpBienvenue = { message: "Bienvenue nouveau", cacher: false }; } addOnloadHook(bienvenue); } //