Utilisateur:TiChou/t-Revert.js
Un article de Wikipédia, l'encyclopédie libre.
Note : Après avoir publié la page, vous devrez forcer son rechargement pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, Internet Explorer / Opera : Ctrl-F5, Safari : Cmd-R.
/* * t-Revert * * Outil de révocation et d'avertissement sur les pages de diff * * Auteur : [[:fr:User:TiChou]] * Date création : 24 mars 2007 * Date révision : 23 août 2007 * Compatibilité : Firefox 2.x, Opera 9.x */ if (wgAction == 'view' && /^\?.*\bdiff=\b/.test(location.search)) { if (typeof(wpfunctions) == "undefined") document.write('<script type="text/javascript" src="http://fr.wikipedia.org/w/index.php?title=Utilisateur:TiChou/wpfunctions.js&action=raw&ctype=text/javascript&dontcountme=s"></script>'); function doRevert() { var chkRevert = document.getElementById('rv-undo'); var chkAvert = document.getElementById('rv-avert'); if (!chkRevert.checked && !chkAvert.checked) return; var raison = document.getElementById('rv-raison'); var message = document.getElementById('rv-message'); var bouton = document.getElementById('rv-go'); var contentSub = document.getElementById('contentSub'); chkRevert.disabled = true; chkAvert.disabled = true; raison.disabled = true; message.disabled = true; bouton.disabled = true; var bodyContent = document.getElementById('bodyContent'); var otitle = bodyContent.getElementsByClassName('diff-otitle')[0]; var ntitle = bodyContent.getElementsByClassName('diff-ntitle')[0]; var undo = ntitle.getElementsByTagName('a')[2].href; var regex = new RegExp(/\bundoafter=(\d+)&undo=(\d+)/); var match = regex.exec(undo); if (!match) return; var revid1 = match[1]; var revid2 = match[2]; if (revid2 == 0) revid2 = wgCurRevisionId; var user1 = otitle.getElementsByTagName('br')[0].nextSibling.text; var user2 = ntitle.getElementsByTagName('br')[0].nextSibling.text; user1 = decodeEntities(user1); user2 = decodeEntities(user2); var div,span,text; div = document.createElement('div'); div.id = 'rv-statut1'; div.style.display = 'none'; text = document.createTextNode('Annulation des modifications : '); div.appendChild(text); span = document.createElement('span'); div.appendChild(span); contentSub.appendChild(div); div = document.createElement('div'); div.id = 'rv-statut2'; div.style.display = 'none'; text = document.createTextNode('Avertissement de l\'utilisateur ' + user2 + ' : '); div.appendChild(text); span = document.createElement('span'); div.appendChild(span); contentSub.appendChild(div); var statut; if (chkRevert.checked) { statut = document.getElementById('rv-statut1').childNodes[1]; wpEditPage(wgPageName, { undoafter: revid1, undo: revid2 }, startRevert, endRevert, { user1: user1, user2: user2, statut: statut }); } else { statut = document.getElementById('rv-statut2').childNodes[1]; wpEditPage('User Talk:' + user2, {}, startAvert, endAvert, { user2: user2, statut: statut }); } statut.parentNode.style.display = 'block'; statut.style.color = 'orange'; text = document.createTextNode('en cours'); statut.appendChild(text); } function startRevert(wpTextbox1, wpSummary, doc, data) { data.statut.style.textDecoration = 'blink'; if (!doc.getElementById('wikiDiff')) return { error: stopRevert, data: data }; wpSummary = 'Révocation des modifications de [[Special:Contributions/' + data.user2 + '|' + data.user2 + ']] ;' + ' retour à la version de [['; if (/^\d+\.\d+\.\d+\.\d+$/.test(data.user1)) wpSummary += 'Special:Contributions/'; else wpSummary += 'User:'; wpSummary += data.user1 + '|' + data.user1 + ']]'; var raison = document.getElementById('rv-raison').value; if (raison) wpSummary += ' ; ' + raison; return { wpTextbox1: wpTextbox1, wpSummary: wpSummary, data: data }; } function stopRevert(data) { data.statut.style.color = 'red'; data.statut.style.textDecoration = 'none'; data.statut.firstChild.textContent = 'impossible de défaire ; conflit avec les modifications intermédiaires'; } function endRevert(doc, data) { data.statut.style.color = 'green'; data.statut.style.textDecoration = 'none'; data.statut.firstChild.textContent = 'faite !'; if (document.getElementById('rv-avert').checked) { data.statut = document.getElementById('rv-statut2').childNodes[1]; data.statut.parentNode.style.display = 'block'; data.statut.style.color = 'orange'; text = document.createTextNode('en cours'); data.statut.appendChild(text); wpEditPage('User Talk:' + data.user2, {}, startAvert, endAvert, data); } else { window.location.replace(wgServer + wgScriptPath + '/index.php?title=' + wpURLEncode(wgPageName) + '&diff=cur&oldid=' + wgCurRevisionId); } } function startAvert(wpTextbox1, wpSummary, doc, data) { data.statut.style.textDecoration = 'blink'; var message = document.getElementById('rv-message').value; wpSummary = 'Avertissement ! ' + lstAvert[message].string + ' !'; wpTextbox1 = '{{subst:' + lstAvert[message].template + (lstAvert[message].hasPage ? '|' + wgPageName.replace(/_/g, ' ') : '') + '}}\u007E\u007E\u007E\u007E\n' + wpTextbox1; return { wpTextbox1: wpTextbox1, wpSummary: wpSummary, data: data }; } function endAvert(doc, data) { data.statut.style.color = 'green'; data.statut.style.textDecoration = 'none'; data.statut.firstChild.textContent = 'fait !'; if (document.getElementById('rv-undo').checked) window.location.replace(wgServer + wgScriptPath + '/index.php?title=' + wpURLEncode(wgPageName) + '&diff=cur&oldid=' + wgCurRevisionId); } function tRevert() { var Content = document.getElementById('content'); if (Content.getElementsByClassName('firstrevisionheader').length) return; var contentSub = document.getElementById('contentSub'); //contentSub.removeChild(contentSub.firstChild); var text,input,label,select,option,button,br,div; br = document.createElement('br'); contentSub.appendChild(br); contentSub.style.fontSize = '100%'; input = document.createElement('input'); input.id = 'rv-undo'; input.name = 'rv-undo'; input.type = 'checkbox'; input.checked = true; input.style.verticalAlign = 'middle'; contentSub.appendChild(input); label = document.createElement('label'); label.setAttribute('for', 'rv-undo'); text = document.createTextNode('défaire'); label.appendChild(text); contentSub.appendChild(label); text = document.createTextNode('\u00a0•\u00a0'); contentSub.appendChild(text); label = document.createElement('label'); label.setAttribute('for', 'rv-raison'); text = document.createTextNode('raison : '); label.appendChild(text); contentSub.appendChild(label); input = document.createElement('input'); input.id = 'rv-raison'; input.name = 'rv-raison'; input.style.verticalAlign = 'middle'; contentSub.appendChild(input); text = document.createTextNode('\u00a0\u00a0••\u00a0\u00a0'); contentSub.appendChild(text); input = document.createElement('input'); input.id = 'rv-avert'; input.name = 'rv-avert'; input.type = 'checkbox'; input.checked = false; input.style.verticalAlign = 'middle'; contentSub.appendChild(input); label = document.createElement('label'); label.setAttribute('for', 'rv-avert'); text = document.createTextNode('avertir'); label.appendChild(text); contentSub.appendChild(label); text = document.createTextNode('\u00a0•\u00a0'); contentSub.appendChild(text); label = document.createElement('label'); label.setAttribute('for', 'rv-message'); text = document.createTextNode('message : '); label.appendChild(text); contentSub.appendChild(label); select = document.createElement('select'); select.id = 'rv-message'; select.name = 'rv-message'; select.style.verticalAlign = 'middle'; for (var i = 0, len = lstAvert.length; i < len; i++) { option = document.createElement('option'); option.value = i; option.text = lstAvert[i].string; select.appendChild(option); } contentSub.appendChild(select); text = document.createTextNode('\u00a0\u00a0••\u00a0\u00a0'); contentSub.appendChild(text); button = document.createElement('button'); button.id = 'rv-go'; button.onclick = doRevert; text = document.createTextNode('Go'); button.appendChild(text); contentSub.appendChild(button); } if (typeof(lstAvert) == "undefined") { var lstAvert = [ { template: "Test 0" , string: "Test 0" , hasPage: false }, { template: "Test 1" , string: "Test 1" , hasPage: false }, { template: "Test 2" , string: "Test 2" , hasPage: false }, { template: "Test 3" , string: "Test 3" , hasPage: false }, { template: "Vandalisme" , string: "Vandal" , hasPage: true }, { template: "Spammeur" , string: "Spam" , hasPage: true }, { template: "Motivation_modif" , string: "Résumé" , hasPage: true }, { template: "Signature" , string: "Signature" , hasPage: false }, { template: "Bienvenue_copyright" , string: "Copyright" , hasPage: false } ]; } addOnloadHook(tRevert); }