Utilisateur:Stanlekub/monobook.js
Un article de Wikipédia, l'encyclopédie libre.
Note : Après avoir sauvegardé, vous devez forcer le rechargement de la page pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, IE / Opera : Ctrl-F5, Safari : Cmd-R.
//<pre><nowiki> document.write('<script type="text/javascript" src="' + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:GôTô/objects.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); document.write('<script type="text/javascript" src="' + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:Dake/monobook.js/deluxehistory.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); /////////////////////////////// // Revert tools by Lorian // French translation and fr.wikipedia modification by Fmaunier function getElementsByClass(searchClass,node,tag) { // Function from http://www.dustindiaz.com/getelementsbyclass/ var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); for (i = 0, j = 0; i < elsLen; i++) { if ( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; } // _GET code from NoGray JS Library http://www.nogray.com/new_site/ var _GET = new Array(); var _uri = location.href; var _temp_get_arr = _uri.substring(_uri.indexOf('?')+1, _uri.length).split("&"); var _temp_get_arr_1 = new Array(); for(_get_arr_i=0; _get_arr_i<_temp_get_arr.length; _get_arr_i++){ _temp_get_arr_1 = _temp_get_arr[_get_arr_i].split("="); _GET[decodeURI(_temp_get_arr_1[0])] = decodeURI(_temp_get_arr_1[1]); } delete _uri; delete _temp_get_arr; delete _temp_get_arr_1; function getMessage (where, user1, user2) { var message = prompt ('Quel message voulez-vous laisser ?', ''); window.location = 'http://fr.wikipedia.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&'+where+'=2&user1='+user1+'&user2='+user2+'&message='+message; } addOnloadHook(function (){ if (location.href.match(/diff=/)) { // Get username of submitter var user1 = getElementsByClass('diff-otitle',null,'td'); user1 = user1[0].getElementsByTagName('a')[2].innerHTML; var user2 = getElementsByClass('diff-ntitle',null,'td'); user2 = user2[0].getElementsByTagName('a')[2].innerHTML; document.getElementById('contentSub').innerHTML = '(<a href="http://fr.wikipedia.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&revert=1&user1='+user1+'&user2='+user2+'">Révoquer</a> / <a href="javascript:var message = getMessage(\'revert\', \''+user1+'\', \''+user2+'\');">Message</a>) (<a href="http://fr.wikipedia.org/w/index.php?title=' + _GET['title'] + '&action=edit&oldid=' + _GET['oldid'] + '&vandalism=1&user1='+user1+'&user2='+user2+'">Vandalisme</a> / <a href="javascript:var message = getMessage(\'vandalism\', \''+user1+'\', \''+user2+'\');">Message</a>) (Avertissement : <a href="http://fr.wikipedia.org/w/index.php?title=User_talk:'+user2+'&action=edit§ion=new&warn=1">Test0</a> / <a href="http://fr.wikipedia.org/w/index.php?title=User_talk:'+user2+'&action=edit§ion=new&warn=2">Test1</a> / <a href="http://fr.wikipedia.org/w/index.php?title=User_talk:'+user2+'&action=edit§ion=new&warn=3">Bienvenue spammeur</a> / <a href="http://fr.wikipedia.org/w/index.php?title=User_talk:'+user2+'&action=edit§ion=new&warn=4">Bienvenue copyvio</a>)'; } else if (location.href.match(/revert=1/)) { document.getElementById('wpSummary').value = 'Révocation des modifications de [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (retour à la version ' + _GET['oldid']+' de [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']])'; document.getElementById('editform').submit(); //Décommenter la ligne suivante si utilisation de PatTrack //patTrackPing(2); } else if (location.href.match(/revert=2/)) { document.getElementById('wpSummary').value = 'Révocation des modifications de [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (retour à la version ' + _GET['oldid']+' de [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']]) ('+_GET['message']+')'; document.getElementById('editform').submit(); //Décommenter la ligne suivante si utilisation de PatTrack //patTrackPing(2); } else if (location.href.match(/vandalism=1/)) { document.getElementById('wpSummary').value = 'Révocation du vandalisme de [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (retour à la version ' + _GET['oldid']+' de [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']])'; document.getElementById('editform').submit(); //Décommenter la ligne suivante si utilisation de PatTrack //patTrackPing(2); } else if (location.href.match(/vandalism=2/)) { document.getElementById('wpSummary').value = 'Révocation du vandalisme de [[Special:Contributions/'+_GET['user2']+'|'+_GET['user2']+']] (retour à la version ' + _GET['oldid']+' de [[Special:Contributions/'+_GET['user1']+'|'+_GET['user1']+']]) ('+_GET['message']+')'; document.getElementById('editform').submit(); //Décommenter la ligne suivante si utilisation de PatTrack //patTrackPing(2); } else if (location.href.match(/warn=1/)) { document.getElementById('wpSummary').value = 'Avertissement Vandalisme'; document.getElementById('wpTextbox1').value = '{{sub'+'st:Test0}} ~~'+'~~'; document.getElementById('editform').submit(); } else if (location.href.match(/warn=2/)) { document.getElementById('wpSummary').value = 'Récidive Vandalisme'; document.getElementById('wpTextbox1').value = '{{sub'+'st:Test1}} ~~'+'~~'; document.getElementById('editform').submit(); } else if (location.href.match(/warn=3/)) { document.getElementById('wpSummary').value = 'Avertissement Spam'; document.getElementById('wpTextbox1').value = '{{sub'+'st:Bienvenue spammeur}} ~~'+'~~'; document.getElementById('editform').submit(); } else if (location.href.match(/warn=4/)) { var page_copyvio = prompt ('Quel est le nom de la page où a eu lieu le copyvio ? (Ne pas mettre les "[[]]")', ''); document.getElementById('wpSummary').value = 'Avertissement Copyvio'; document.getElementById('wpTextbox1').value = '{{sub'+'st:Bienvenue copyright|' + page_copyvio + '}} ~~'+'~~'; document.getElementById('editform').submit(); } }); ////////////////////////////////////////////////////////////////////////////// function addLoadEvent(func) { if (window.addEventListener) { window.addEventListener("load", func, false); } else if (window.attachEvent) { window.attachEvent("onload", func); } } ///////////////////////////////////////////////////////// // // Edit tools for the vandal whack-a-mole game // [[User:Kbh3rd/whackamole.js]] - please include this line // document.write('<script type="text/javascript" src="' + 'http://en.wikipedia.org/w/index.php?title=User:Kbh3rd/whackamole.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); ///////////////////////////////////////////////////////// function addToSummary(str) { document.editform.wpSummary.value += " " + str } function DeluxeSummary() { var sumLbl = document.getElementById("wpSummaryLabel") if (sumLbl) { //élargissement boite de résumé var sumInput = document.getElementById("wpSummary") sumInput.style.width = "90%" var titles = new Array() titles.push("wikif") titles.push("+ ébauche") titles.push("+ cat") titles.push("+ image") titles.push("+ interwiki") titles.push("+ portail") titles.push("corr lien int") titles.push("corr lien rouge") titles.push("corr homon") titles.push("MeP") titles.push("ortho/gram") titles.push("typo") titles.push("retouches") titles.push("MàJ") titles.push("recat") titles.push("blanchi - bac à sable") titles.push("blanchi - contenait « »") titles.push("+cat dédoublée") titles.push("+clé de tri") var inputs = new Array() inputs.push("wikif.") inputs.push("+ {{ébauche}}") inputs.push("+ catégorie") inputs.push("+ image") inputs.push("+ liens interwiki") inputs.push("+ portail") inputs.push("correction lien interne") inputs.push("correction lien rouge ") inputs.push("correction des [[Wikipédia:Projet/Liens vers les pages d\\\'homonymie|liens vers les pages d’homonymie]] ([[Bosnie]])") inputs.push("mise en page") inputs.push("correction orthographe/grammaire") inputs.push("typo") inputs.push("diverses retouches") inputs.push("mise à jour") inputs.push("changement catégorie") inputs.push("blanchi - bac à sable") inputs.push("blanchi - contenait « »") inputs.push("+ catégorie dédoublée ([[Wikipédia:Prise de décision/Catégorisation des personnalités par nationalité|PdD]])") inputs.push("+clé de tri pour catégorie ") var str = "" for (var cpt = 0; cpt < titles.length; cpt ++) { str += "<a href=\"javascript:addToSummary('" + inputs[cpt] + "')\"" + " class=\"sumLink\" title=\"Ajouter '" + inputs[cpt] +"' dans la boîte de résumé\">" + titles[cpt] + " |</a> " } sumLbl.innerHTML = str + "<br />" + sumLbl.innerHTML } } addLoadEvent(DeluxeSummary) ///////////////////////////////////////////////////// document.write('<script type="text/javascript" src="' + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:Stanlekub/boiteastro.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); document.write('<script type="text/javascript" src="' + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:Stanlekub/boiteastronautique.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); evalDefaut="Astronomie"; document.write('<script type="text/javascript" src="' + 'http://fr.wikipedia.org/w/index.php?title=Utilisateur:Stanlekub/evalbar.js' + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); ///////////////////////////////////////////////////// function nouvelleBoite() { var l = document.getElementById("column-one"); if (l) { l.innerHTML = l.innerHTML + '<div class="portlet" id="p-nbx">' + ' <h5>Boîte perso</h5>' + ' <div class="pBody">' + ' <ul>' + ' <li><a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Oracle">Oracle</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Special:Recentchangeslinked/Utilisateur:Stanlekub/Suivi_des_liens">Suivi Oracle</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Proposition_articles_de_qualit%C3%A9">AdQ</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/WP:-%28">WP:-(</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Projet/Liens_vers_les_pages_d%27homonymie">Homon.</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Projet/Restauration_lien_rouge">Liens rouges</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Le_Bistro">Bistro</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/WP:BA">B-d-Adm</a></li>' + ' <li><a href="http://fr.wikipedia.org/wiki/Projet:Wikip%C3%A9dia_1.0">WP 1.0</a></li>' + ' </ul>' + ' </div>' + '</div> '; } } addLoadEvent(nouvelleBoite); function OptimizedSuivi() { if (document.URL.indexOf("http://fr.wikipedia.org/wiki/Special:Watchlist")==0 || document.URL.indexOf("http://fr.wikipedia.org/w/index.php?title=Special:Watchlist")==0 ){ var allDays = document.getElementsByTagName("ul"); for (i=0; i<allDays.length; i++) { if (allDays[i].getAttribute("class") == "special") { var artList = allDays[i].getElementsByTagName("li"); for (j=0; j<artList.length; j++) { var elem = artList[j]; var aTag = elem.getElementsByTagName("a"); var articleName = aTag[0].getAttribute("title"); var stopWatch = "/w/index.php?title=" + articleName + "&action=unwatch" elem.innerHTML = "(<a href=\"" + stopWatch + "\">stop</a>) " + elem.innerHTML; } } } } } addLoadEvent(OptimizedSuivi); ////////////////////////////////////////////////// function URLencode(sStr) { return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); } function googleOnglet() { var a = document.getElementById("p-cactions"); if (a) { var pageName = document.title.replace(" - Wikipédia", ""); b = a.getElementsByTagName("ul"); if(b.length > 0) { b[0].innerHTML = b[0].innerHTML + '<li id="ca-nstab-user"><font style="color: blue; font-weight: bold; padding-left: 0.5em">G</font>' + '<a href="http://www.google.fr/search?num=20&hl=en&safe=off&q=site%3Afr.wikipedia.org+%22' + pageName + '%22&btnG=Search">' + 'wp-fr</a>' + '<a href="http://www.google.fr/search?num=20&hl=en&safe=off&q=site%3Aen.wikipedia.org+%22' + pageName + '%22&btnG=Search">' + 'wp-en</a>' + '<a href="http://www.google.fr/search?num=20&hl=fr&safe=off&q=%22' + pageName + '%22&btnG=Search&meta=lr%3Dlang_fr">' + 'web-fr</a>' + '<a href="http://www.google.fr/search?num=20&hl=en&safe=off&q=%22' + pageName + '%22&btnG=Search">' + 'web</a>' + '</li>'; } } } addLoadEvent(googleOnglet); ////////////////////////////////////////////////// function MiluxeBar() { if (document.createTextNode) { var toolbar = document.getElementById("toolbar"); if (!toolbar) return; ///// zone personnalisable //// var messages = new Array() // le texte a été splitté sinon Mediawiki casse tout... messages[0] = "{{subst:" + "bienvenu" + "}}" + "~~" + "~~"; messages[1] = "{{subst:" + "vandalisme|" + "}}" + "~~" + "~~"; messages[2] = "{{Portail astronautique}}"; messages[3] = "{{Catégorie astronautique}}"; messages[4] = "<small>''" + "~~" + "~~" + "''</small>."; var images = new Array() images[0] = "http://upload.wikimedia.org/wikipedia/fr/1/12/Button_accueilA.png"; images[1] = "http://upload.wikimedia.org/wikipedia/fr/0/00/Button_vandale.png"; images[2] = "http://upload.wikimedia.org/wikipedia/fr/1/12/Button_accueilA.png"; images[3] = "http://upload.wikimedia.org/wikipedia/fr/1/12/Button_accueilA.png"; images[4] = "http://upload.wikimedia.org/wikipedia/fr/a/ad/Button_vandale2.png"; var commentaires = new Array() commentaires[0] = "{{subst:" + "bienvenu" + "}}"; commentaires[1] = "{{subst:" + "vandalisme|" + "}}"; commentaires[2] = "{{Portail astronautique}} "; commentaires[3] = "{{Catégorie astronautique}} "; commentaires[4] = ""; //////////////////////////////// for (var i=0;i<messages.length;i++) { var img = document.createElement("img"); img.setAttribute("src", images[i]); var ref = document.createElement("a"); ref.setAttribute("href", "javascript:insertTags('', \"" + messages[i] + "\", '');" + "javascript:changeSummary(\"" + commentaires[i] + "\");" ); ref.appendChild(img); toolbar.appendChild(ref); } } } function changeSummary(sampleText) { document.editform.wpSummary.value = document.editform.wpSummary.value + sampleText; } addLoadEvent(MiluxeBar); addCustomButton('http://upload.wikimedia.org/wikipedia/fr/e/e3/Button_disambiguation.png','Homonymes',"{{Voir homonymes|","}}",'nom de la page d’homonymie'); ////////////////////////////////////////////////// function insertAfter(parent, node, referenceNode) { parent.insertBefore(node, referenceNode.nextSibling); } ///////////////////////////////////////////////////////////////////// loadJs('Utilisateur:Spooky/JSScripts/Navigation popups'); popupOnEditSelection = false; imagePopupsForImages = false; popupRedirAutoClick = 'wpPreview'; popupFixRedirs = true; popupFixDabs = true; popupFixRedirsSummary = 'Correction de lien vers redirect [[%s]] > [[%s]]'; popupRevertSummary = 'Révocation des dernières modifications'; popupQueriedRevertSummary = 'Révocation des dernières modifications - retour à la version du $2 de [[Utilisateur:$3|$3]]' popupRevertSummaryPrompt=true; popupFixDabsSummary = '[[Projet:Liens vers les pages d\'homonymie|Correction lien vers page d’homonymie]] ([[%s]] > [[%s]])' //////////////////////////////////////////////////////////////////// /* This tool hits the RSS feed for recent changes every 30 seconds or so and checks for common vandalism. It does not make a separate server request for every edit. Currently, the RSS feed is full of holes and so this may miss many edits. http://bugzilla.wikimedia.org/show_bug.cgi?id=3942 */ // <pre><nowiki> //DOWNLOADER window.recent2_download=function(bundle) { // mandatory: bundle.url // bundle.onSuccess // bundle.onFailure // bundle.otherStuff OK too var x = window.XMLHttpRequest ? new XMLHttpRequest() : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false; if (x) { x.onreadystatechange=function() { x.readyState==4 && recent2_downloadComplete(x,bundle); }; x.open("GET",bundle.url,true); // x.setRequestHeader('Accept','text/*'); x.send(null); } } window.recent2_downloadComplete=function(x,bundle) { x.status==200 && ( bundle.onSuccess && bundle.onSuccess(x,bundle) || true ) || ( bundle.onFailure && bundle.onFailure(x,bundle) || alert(x.statusText)); } window.gettingBadWords=false; window.badWords=null; window.recent2_getBadWords=function() { window.gettingBadWords=true; recent2_download( { url: 'http://en.wikipedia.org/w/index.php?title=User:Lupin/badwords&action=raw&ctype=text/css', onSuccess: recent2_processBadWords, onFailure: function () { recent2_runOnce(recent2_getBadWords, 15000); return true;}}); } window.recent2_processBadWords=function(d) { var data=d.responseText.split('\n'); var ret=[]; for (var i=0; i<data.length; ++i) { var s=data[i]; if (s.length==0) continue; if (s.charAt(0)=='<') continue; ret.push(s.replace(RegExp('([-|.()\\+:!,?*^${}\\[\\]])', 'g'), '\\$1')); } // (( repeatedchar ) | ( ... | ... | ... ))( bdy ) window.badWords=RegExp("<td>[+]</td><td .*?>.*?(([^-{}.\\s'=wI:*#0-9A-F])\\2{2,}|\\b(" + ret.join('|') + "))(\\b|[|]).*</td>", 'im'); } window.gettingWatchlist=false; window.watchlist=null; window.getWatchlist=function() { window.gettingWatchlist=true; recent2_download({url: 'http://fr.wikipedia.org/wiki/Special:Watchlist/edit', onSuccess: processWatchlist, onFailure: function () { recent2_runOnce(getWatchlist, 15000); return true; }}); } window.processWatchlist=function(req, bundle) { var watchlist={}; var lines=req.responseText.split('\n'); for (var i=0; i<lines.length; ++i) { if (lines[i].indexOf('<li><input type="checkbox" name="id[]" value=') > -1) { var article=lines[i].replace(/.*title="(.*?)">.*/, '$1'); watchlist[article]=true; } } window.watchlist=watchlist; } window.recent2_runOnce=function(f, time) { var i=recent2_runOnce.timers.length; var ff = function () { clearInterval(recent2_runOnce.timers[i]); f() }; var timer=setInterval(ff, time); recent2_runOnce.timers.push(timer); } recent2_runOnce.timers=[]; var feed='http://fr.wikipedia.org/w/index.php?title=Special:Recentchanges&feed=rss'; window.newOutputDiv=function(klass, position) { var h1=document.getElementsByTagName('h1')[0]; var ret=document.createElement('div'); if (klass) ret.className=klass; if (!position) position='bottom'; switch(position) { case 'top': h1.parentNode.insertBefore(ret, h1.nextSibling); break; case 'bottom': h1.parentNode.appendChild(ret); break; default: if (!newOutputDiv.alerted) { alert('Unknown position '+position+' in recent2.js, newOutputDiv'); window.newOutputDiv.alerted=true; } return newOutputDiv(klass, 'bottom'); } ret.id=newOutputDiv.uid++; window.outputDivs.push(ret); return ret; } window.newOutputDiv.alerted=false; window.newOutputDiv.uid=0; window.outputDivs=[]; window.grabRecentChanges=function(feed) { if (! window.badWords && window.recent2_filter_badwords ) { if ( ! window.gettingBadWords ) recent2_getBadWords(); return recent2_runOnce(function(){grabRecentChanges(feed);}, 500); } if (! window.watchlist && window.recent2_filter_watchlist) { if (! window.gettingWatchlist ) getWatchlist(); return recent2_runOnce(function(){grabRecentChanges(feed);}, 500); } var pos=window.recent2_outputPosition; if (window.recent2_outputPosition=='top') { var output=newOutputDiv('recent2_lines', pos); var status=newOutputDiv('recent2_status', pos); } else { var status=newOutputDiv('recent2_status', pos); var output=newOutputDiv('recent2_lines', pos); } status.style.borderStyle='solid'; status.style.borderColor='orange'; status.innerHTML=greyFont+'(' + count + ') updating...</font>'; recent2_download({url: feed, onSuccess: processRecentChanges, output: output, status: status, onFailure: feedFailed}); } var greyFont='<font color="#777">'; window.feedFailed=function(x,bundle) { try { bundle.status.innerHTML+=greyFont+'failed: '+x.statusText + '</font>'; } catch (err) { bundle.status.innerHTML+=greyFont+'failed badly: '+err+'</font>'; } return true; } window.recent2_newWindows=true; window.linkmaker=function(url, text) { var s='<a href="' + url + '"'; window.recent2_newWindows && (s += ' target="_blank"'); s += '>' + text + '</a>'; return s; } window.recent2_ipUserRegex=RegExp('(User:)?((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])'); window.processRecentChanges=function(req, bundle){ var initialId=processRecentChanges.id; var doc=req.responseXML.documentElement; var items=doc.getElementsByTagName('item'); var latest=processRecentChanges.lastDate; var output=[]; // <ul class="special">'; for (var i=0; i< items.length; ++i) { var timestamp = Date.parse(getFirstTagContent(items[i],'pubDate')); if (timestamp <= processRecentChanges.lastDate) continue; latest = (timestamp > latest) ? timestamp : latest; var diffText=getFirstTagContent(items[i],'description').split('</tr>').join('</tr>\n'); var editSummary=diffText.replace(RegExp('^<p>(.*?)</p>[\\s\\S]*'), '$1'); var editor=getFirstTagContent(items[i], 'creator') || getFirstTagContent(items[i], 'dc:creator'); var articleTitle; if (window.recent2_filter_anonsOnly && !window.recent2_ipUserRegex.test(editor)) continue; if (window.recent2_filter_watchlist && (articleTitle=getFirstTagContent(items[i], 'title')) && ! window.watchlist[articleTitle.replace(/^Talk:/, '').replace(/[ _]talk:/, ':')]) continue; if (window.recent2_filter_badwords) { var badMatch=null; if (window.vandals[editor] > 0) badMatch=['', '[previously rolled back this editor]']; else badMatch=badWords.test(diffText); // .test() is meant to be faster than a full match if (badMatch) { badMatch=diffText.match(badWords); var article=getFirstTagContent(items[i], 'link'); articleTitle=getFirstTagContent(items[i], 'title'); var id=processRecentChanges.id; // highlighting badMatch[0]=badMatch[0].split(badMatch[1]).join('<span style="background-color: #FF6">'+badMatch[1]+'</span>'); output.push(recent2_doLine({timestamp: timestamp, article:article, articleTitle:articleTitle, editor:editor, id:id, badWord:badMatch[1], badDiffFragment:badMatch[0], diff:diffText, summary:editSummary})); processRecentChanges.id++; } } else { var article=getFirstTagContent(items[i], 'link'); var articleTitle=getFirstTagContent(items[i], 'title'); if (window.recent2_CustomFilter && ! window.recent2_CustomFilter({timestamp:timestamp, article:article, articleTitle:articleTitle, editor:editor, diff:diffText, summary:editSummary})) continue; var id=processRecentChanges.id; output.push(recent2_doLine({timestamp: timestamp, article:article, articleTitle:articleTitle, editor:editor, id:id, diff:diffText, summary:editSummary})); processRecentChanges.id++; } } /* end for loop */ //output+='</ul>'; var outputString=''; if (window.recent2_outputPosition=='top') { outputString=output.join(''); } else { for (var i=output.length-1; i>=0; --i) { outputString+=output[i]; } } bundle.output.innerHTML+=outputString; recent2_runOnce(function() {recent2_doPopups(bundle.output)}, 300); processRecentChanges.lastDate=latest; // - 1; // overlap better than missing some out, i think; FIXME do this properly var statusTail=greyFont+'done up to ' + formatTime(latest) + '</font>'; if (processRecentChanges.id > initialId) { statusTail+=' <a href="javascript:showHideDetailRange(' + initialId + ',' + processRecentChanges.id + ')">montrer tous les détails</a> |'; } statusTail += ' <a href="javascript:deleteEarlierOutputDivs(' + bundle.status.id + ')">effacer les éditions précédentes</a>'; statusTail+='<br>'; bundle.status.innerHTML+=statusTail; } processRecentChanges.lastDate=0; processRecentChanges.id=0; window.deleteEarlierOutputDivs=function(cur) { for(var i=0; i<outputDivs.length; ++i) { if (!outputDivs[i] || !outputDivs[i].id) continue; if (outputDivs[i].id >= 0 && outputDivs[i].id < cur) { // FIXME BUG: if we go from the bottom up, then we'll delete one too many or too few, or something :-) outputDivs[i].parentNode.removeChild(outputDivs[i]); outputDivs[i]=null; } } // scroll to the top if we're appending output to the bottom, to keep the div we've clicked visible after the deletions if (window.recent2_outputPosition!='top') document.location='#'; } window.showHideDetailRange=function(start,end) { // use the first div to see if we should show or hide var div=document.getElementById('diff_div_' + start); if (!div) return; var state=false; // hide if (div.style.display=='none') state=true; // show for (var i=start; i<end; ++i) { showHideDetail(i, true, state); } } window.toggleSysopEdits=function() { var divs=document.getElementsByTagName('div'); for (var i=0; i<divs.length; ++i) { if (divs[i].className=='sysop_edit_line') divs[i].style.display= ( toggleSysopEdits.hidden ? 'none' : 'inline' ); } toggleSysopEdits.hidden = ! toggleSysopEdits.hidden; } window.bundles={}; window.vandalColour = function(vandal) { var num=window.vandals[vandal]; if (!num) return ''; switch (num) { case 1: return '#DDFFDD'; case 2: return '#BBFFBB'; } var i= 9-(num - 3) *2; if (i < 0) i=0; return '#' + i + i + 'FF' + i + i; } window.clickDetails=function(action, max) { if(!action) action='show'; if (!max) max = document.links.length; var count=0; for (var i=0; i<document.links.length && count < max; ++i) { if(document.links[i].innerHTML==action + ' details' && document.links[i].href.indexOf('javascript:') == 0) { ++count; eval(document.links[i].href.replace('javascript:', '')); } } } window.recent2_pendingLines=[]; window.recent2_togglePausedOutput=function() { if (!window.recent2_pausedOutput) { window.recent2_pausedOutput = true; return true; } else window.recent2_pausedOutput=false; var outputBuffer=''; while (window.recent2_pendingLines.length) { outputBuffer+=recent2_doLine(window.recent2_pendingLines.pop()); } var pos=window.recent2_outputPosition; var output=newOutputDiv('recent2_lines', pos); output.innerHTML=outputBuffer; return false; } window.recent2_togglePaused=function() { if(!window.recent2_paused) { window.recent2_paused=true; return true; } window.recent2_paused=false; loopRecentChanges(loopRecentChanges.url, loopRecentChanges.iterations); return false; } window.recent2_doLine=function(bundle) { if (window.recent2_pausedOutput) { window.recent2_pendingLines.push(bundle); return ''; } var wikiBase='http://fr.wikipedia.org/wiki/'; var sysop = null; if (typeof sysops != 'undefined') sysop=sysops.test(bundle.editor); var lastDiffPage=bundle.article + '?diff=cur&oldid=prev'; bundle.url=lastDiffPage; saveBundle(bundle); var div=''; if (window.vandals[bundle.editor] > 0) { div='<div style="background-color:' + vandalColour(bundle.editor) + '">'} else if (sysop) {div='<div class="sysop_edit_line">'}; return div + '<li>' + formatTime(bundle.timestamp) + ' ' + //latest + ' ' + processRecentChanges.lastDate + ' ' + linkmaker(lastDiffPage, bundle.articleTitle) + ( bundle.badWord ? ' matched <b>' + bundle.badWord + '</b> . . ' : ' . . ') + linkmaker(wikiBase + 'Utilisateur:' + bundle.editor, bundle.editor) + ' (' + linkmaker(wikiBase + 'Discussion Utilisateur:' + bundle.editor, 'discuter') + ' | ' + linkmaker(wikiBase + 'Discussion Utilisateur:' + bundle.editor + '?action=edit' + '&autoedit=s#$#\\n{{subst:vandalisme|' + bundle.articleTitle + '}}~~~~#&autosummary=vandalisme [[' + bundle.articleTitle + ']]', 'avertir') + ' | ' + linkmaker(wikiBase + 'Special:Contributions/' + bundle.editor, 'contribs') + ' | ' + linkmaker(wikiBase + 'Special:Blockip/' + bundle.editor, 'bloquer') + ') . . ' + ( bundle.summary ? '<i>('+bundle.summary+')</i> . . ' : '') + '<a href="javascript:showHideDetail(' + bundle.id + ')" id="showdiff_link_' + bundle.id + '">montrer détails</a>' + ' [<a href="javascript:tryRollback(' + bundle.id + ')">révoquer</a>]' + '<p><div id="diff_div_' + bundle.id + '" style="display: none">' + '</div></li>' + ( div ? '</div>' : '') ; } window.saveBundle= function(bundle) { var z={}; for (var prop in bundle) { z[prop]=bundle[prop]; } window.bundles[bundle.id]=z; } window.vandals={} window.tryRollback=function(id) { var b=window.bundles[id]; var vandal=b.editor; if (window.vandals[vandal]==null) window.vandals[vandal]=1; else window.vandals[vandal]++; if (!b) { alert('No bundle! Please tell Lupin how to reproduce this error - it should not really happen.'); return; } var onSuccess=function (x, bundle) { var rollRe=RegExp('<a href="(/w/index.php[^"]*?action=rollback[^"]*?from=([^&]*)[^"]*?)".*?<br />(<span[^>]*>)?(.*?)(</span>)?<br /></td>'); // match[0]: useless // match[1]: url (escaped) // match[2]: last editor (escaped) // match[4]: last edit summary (wikiText - FIXME strip this to plain text) var match=rollRe.exec(x.responseText); if (!match) { alert('No rollback link found.\nSadly rollback is only available to admins. Alternatively, this may be a bug.'); return; } var lastEditor=match[2].split('+').join(' '); var lastSummary=match[4]; // var vandal=b.editor; // from the closure if (lastEditor != vandal) { var summary=lastSummary.replace(RegExp('<[^>]*?>','g'),''); if (!summary) summary=lastSummary; alert( 'Could not rollback - someone else has edited since the vandal.\n\nPage: '+ b.articleTitle + '\nVandal: '+vandal+'\nLast editor: '+lastEditor+'\nEdit summary: '+summary); return; } var rollbackUrl=match[1].split('&').join('&'); // confirm('Rollback edits by '+vandal + ' to '+b.articleTitle+'?') && window.open(rollbackUrl, '_blank'); } var onFailure = function(x,bundle) { alert('HTTP failed when trying to get rollback link in url\n' + bundle.url + '\n\nHTTP status text: ' + x.statusText); return true; } recent2_download({ url:b.url, onSuccess: onSuccess, id: b.id, onFailure:onFailure}); } window.recent2_doPopups=function(div) { if (typeof(mouseOverWikiLink)!='undefined' && typeof(mouseOutWikiLink) !='undefined' && typeof(killPopup) !='undefined') { var anchors=div.getElementsByTagName('A'); for (var i=0; i<anchors.length; ++i) { var a=anchors[i]; if (a.href.indexOf('javascript')==0) continue; a.onmouseover=mouseOverWikiLink; a.onmouseout= mouseOutWikiLink; a.onclick= killPopup; } } } window.formatTime=function(timestamp) { var date=new Date(timestamp); nums=[date.getHours(), date.getMinutes(), date.getSeconds()]; for (var i=0; i<nums.length; ++i) if (nums[i]<10) nums[i]='0'+nums[i]; return nums.join(':'); } window.showHideDetail = function(id, force, state) { var div=document.getElementById('diff_div_' + id); var lk=document.getElementById('showdiff_link_' + id); if (!div) return; var bundle=window.bundles[id]; if (!div.innerHTML) div.innerHTML= ( bundle.badDiffFragment ? bundle.badDiffFragment:'') + bundle.diff; if ((force && state==true) || (!force && div.style.display=='none')) { div.style.display='inline'; lk.innerHTML='hide details'; } else { div.style.display='none'; lk.innerHTML='show details'; } } window.getFirstTagContent=function(parent, tag) { var e=parent.getElementsByTagName(tag); if (e && (e=e[0]) ) { var ret = e.firstChild.nodeValue || e.nodeValue; if (typeof ret != typeof '') return ''; return ret; } } var count=0; window.loopRecentChanges=function(url, iterations) { if (!iterations) iterations=20; loopRecentChanges.iterations=iterations; loopRecentChanges.url=url; grabRecentChanges(url); recent2_runOnce(function () { if (window.recent2_paused) {++count; return; } if (++count >= iterations && ! confirm('Continue monitoring recent changes?') ) return; count %= iterations; loopRecentChanges(url, iterations); }, 30000); } window.marvin=function() { window.sysops=RegExp("^(\\-\\- April|23skidoo|A Man In Black|ABCD|ALoan|Academic Challenger|Acetic Acid|Adam Bishop|Ahoerstemeier|Alabamaboy|Alai|AlainV|Alex S|Alex756|AlistairMcMillan|Alkivar|Allen3|AllyUnion|Alteripse|Ambi|Ams80|Andres|Andrevan|Andrew Yong|Andrewa|Andris|Android79|Angela|Angr|Antandrus|Anthere|AntonioMartin|Aranel|Arcadian|Aris Katsaris|Arminius|Arvindn|Arwel Parry|Asbestos|AstroNomer|Ausir|AxelBoldt|BanyanTree|BaronLarf|Bcorr|Bdesham|Bearcat|Beland|Benc|Bhadani|Biekko|BillyH|Bishonen|Bkonrad|Blankfaze|Bluemoose|Bmicomp|Bovlb|Bratsche|Brian Kendig|Brian0918|BrianSmithson|Briangotts|Brighterorange|Brion VIBBER|Brockert|BrokenSegue|Brookie|Bryan Derksen|Bumm13|Burgundavia|CJCurrie|COGDEN|CSTAR|CYD|Cacycle|Caltrop|CambridgeBayWeather|Camembert|Canderson7|Capitalistroadster|Carbonite|Carnildo|Catbar|CatherineMunro|Cburnett|Cdc|Cecropia|Cedar\\-Guardian|Celestianpower|CesarB|Cgs|Chadloder|Chancemill|Changlc|Charles Matthews|Chmod007|Chris 73|Chris Roy|ChrisO|Christopher Mahan|Chuck SMITH|Chuq|Cimon avaro|Clarkk|Clifford Adams|ClockworkSoul|Commander Keane|ContiE|Cool Hand Luke|Cprompt|Craigy144|Cryptic|CryptoDerk|Curps|Cutler|Cyan|Cyberjunkie|CyborgTosser|Cyp|Cyrius|DESiegel|DF08|DJ Clayworth|Dale Arnett|Dan100|DanKeshet|Daniel Quinlan|DanielCD|Danny|Dante Alighieri|Darwinek|Dave souza|David Gerard|David Newton|David\\.Monniaux|DavidLevinson|DavidWBrooks|Davidcannon|Davodd|Dbachmann|Dbenbenn|Dbiv|Dcoetzee|Deb|Decumanus|Delirium|Denelson83|Denni|Derek Ross|Dgrant|Diberri|Dieter Simon|Dino|Dmcdevit|Dmn|Doc glasgow|Docu|Dori|Dpbsmith|DrBob|DragonflySixtyseven|Dragons flight|Drini|DropDeadGorgias|Duk|Duncharris|Durin|Dvyost|Dwheeler|Dysprosia|Earl Andrew|Ed Poor|Ed g2s|Edcolins|Edward|Efghij|Egil|El C|Elf|Ellsworth|Eloquence|Enchanter|Essjay|Eugene van der Pijll|Evercat|Everyking|Evil Monkey|Evil saltine|Evilphoenix|Exploding Boy|Ezhiki|FCYTravis|Fabiform|Fantasy|Fastfission|Fawcett5|Feco|FeloniousMonk|Fennec|Ferkelparade|Fernando Rizo|Ffirehorse|Filiocht|Finlay McWalter|Fire Star|FireFox|Flcelloguy|Flockmeal|Francs2000|Frazzydee|Fred Bauder|Fredrik|Freestylefrappe|FreplySpang|Friday|Func|Furrykef|Fuzheado|Fvw|G\\-Man|Gabbe|Gadfium|Gamaliel|Garzo|Gaz|Gdr|GeneralPatton|Geni|Gentgeen|Geogre|Gerald Farinas|Goatasaur|Golbez|Graft|GregAsche|GregRobson|Grenavitar|Grm wnr|Ground Zero|Grue|Grunt|Grutness|Gtrmp|Guettarda|Gwalla|Gyrofrog|Hadal|Hajor|Hall Monitor|HappyCamper|Hashar|Hawstom|Hcheney|Hedley|Hemanshu|Henrygb|Hephaestos|Hermione1980|Heron|Homeontherange|Humblefool|Hyacinth|Icairns|IceKarma|Ihcoyc|Ike9898|Ilyanep|Improv|Imran|Infrogmation|Ingoolemo|Inter|Isomorphic|Ixfd64|J\\.J\\.|JCarriker|JHK|JIP|JRM|JYolkowski|Jake Nelson|Jallan|JamesTeterenko|Jamesday|Jasonr|Jaxl|Jay|Jayjg|Jcw69|Jdavidb|Jdforrester|JeLuF|Jeffrey O\\. Gustafson|Jengod|JeremyA|Jeronimo|Jerzy|JesseW|Jfdwolff|Jiang|Jimbo Wales|Jimfbleak|Jimregan|Jinian|Jitse Niesen|Jmabel|Jnc|Jni|JoJan|John Kenney|JohnOwens|Johnleemk|Johntex|JonMoore|Jondel|Joolz|Josh Grosse|Jossifresco|Journalist|Joy|Joy Stovall|Jpgordon|Jrdioko|Jredmond|Jtdirl|Jtkiefer|Justinc|Jwrosenzweig|K1Bond007|KF|Kaihsu|Kaldari|Karada|Karen Johnson|Karmafist|Katefan0|Kbdank71|Kelly Martin|Khaosworks|Khendon|Khym Chanur|Kingturtle|Kirill Lokshin|Kmccoy|Knowledge Seeker|Kosebamse|Ktsquare|Kwamikagami|Kzollman|LC|Lachatdelarue|Lacrimosus|Lectonar|Lee Daniel Crocker|Lexor|Linuxbeak|LittleDan|Llywrch|Lommer|Longhair|Lord Emsworth|LordAmeth|LouI|Lowellian|Lucky 6\\.9|Ludraman|Lupin|Lupo|MC MasterChef|MacGyverMagic|Mackensen|Mackeriv|Madchester|Magnus Manske|Mailer diablo|Mairi|Malcolm Farmer|Manning Bartlett|Marianocecowski|Marine 69\\-71|Mark|Mark Christensen|Mark Dingemanse|Mark Richards|MarkSweep|Markalexander100|Marshman|Marudubshinki|Marumari|Master Thief Garrett|Matt Crypto|Maury Markowitz|Maveric149|Maximus Rex|Mbecker|Meelar|Mel Etitis|Menchi|Merovingian|Merphant|Mic|Michael Hardy|Michael Snow|Mike Halterman|Mikkalai|Mindspillage|Minesweeper|Mintguy|Mirv|Mirwin|Mkmcconn|Mkweise|Modemac|Moink|Moncrief|Montrealais|Moriori|Morven|Morwen|Mulad|Mustafaa|MyRedDice|MykReeve|Mysekurity|Mzajac|Nabla|Nandesuka|Nanobug|Necrothesp|Neutrality|Ngb|Nichalp|NicholasTurnbull|Nickptar|Nickshanks|Niteowlneils|Nohat|Noldoaran|Notheruser|Nufy8|Nunh\\-huh|Nv8200p|Oberiko|OldakQuill|Oleg Alexandrov|Oliver Pereira|Olivier|Omegatron|Optim|Ortolan88|Oven Fresh|OwenX|PFHLai|PMA|PRueda29|PZFUN|Pakaran|Pamri|Patrick|Paul A|Paul August|Pcb21|PedanticallySpeaking|Petaholmes|Peter Winnberg|Pfortuny|Pharos|Phil Bordelon|Phil Boswell|Phils|Philwelch|Phroziac|Physchim62|PierreAbbat|Piotrus|Pjacobi|Pollinator|Poor Yorick|Postdlf|Pratyeka|Premeditated Chaos|Proteus|Psy guy|Qaz|Quadell|Quercusrobur|R\\. fiend|R3m0t|RHaworth|RJFJR|RN|Radiant\\!|RadicalBender|Ragib|Ral315|Ram\\-Man|Rama|Ramallite|Ran|Raul654|Rbrwr|Rd232|Rdsmith4|RedWolf|RedWordSmith|Redux|Redwolf24|Refdoc|Reflex Reaction|Rfl|Rhobite|Rholton|Rhymeless|Rich Farmbrough|Rick Block|RickK|Rje|Rlandmann|Rlquall|Rmhermen|Roadrunner|RobLa|Robchurch|Robert Merkel|RobertG|Robin Patterson|RobyWayne|Roozbeh|RoseParks|Rossami|RoyBoy|RoySmith|Rx StrangeLove|Ryan Delaney|SD6\\-Agent|SWAdair|Salsa Shark|Sam Hocevar|Sam Korn|Sango123|Sannse|Sarge Baldy|Sasquatch|Schissel|Schneelocke|Scimitar|Scipius|Scott Burley|ScottDavis|Seabhcan|Sebastiankessel|Secretlondon|Seglea|Sesel|Seth Ilys|Sfoskett|Shanes|Shauri|Sheldon Rampton|Shimgray|SimonP|Siroxo|Sj|Sjakkalle|Sjc|Slambo|SlimVirgin|Slowking Man|Slrubenstein|Smith03|Sn0wflake|Snowspinner|Snoyes|Solipsist|Someone else|Sortior|Spangineer|Spencer195|Splash|Ssd|Stan Shebs|Starblind|Stevenj|Stevertigo|Stewartadcock|Stormie|Sugarfish|Sundar|Sverdrup|TPK|TUF\\-KAT|Ta bu shi da yu|Talrias|Tannin|Tarquin|Taw|Taxman|TenOfAllTrades|Texture|Thames|The Anome|The Cunctator|The Epopt|The Singing Badger|The wub|TheCoffee|TheoClarke|Theresa knott|Thryduulf|Thue|Thunderbrand|Tillwe|Tim Ivorson|Tim Starling|Timc|Timrollpickering|Timshell|Timwi|Titoxd|Tkinias|Toby Bartels|Tom\\-|Tomf688|Tompagenet|Tony Sidaway|Topbanana|Tregoweth|Trevor macinnis|Triddle|Trilobite|Tristanb|Ugen64|Ulayiti|Uncle G|UninvitedCompany|Urhixidur|Utcursch|UtherSRG|Vague Rant|VampWillow|Vancouverguy|Vaoverland|Viajero|Vicki Rosenzweig|Violetriga|Visorstuff|Voice of All\\(MTG\\)|Vsmith|Waltpohl|Wapcaplet|Warofdreams|Wayward|Wernher|Wesley|WhisperToMe|Who|Wiglaf|Wikiacc|Wikibofh|Wile E\\. Heresiarch|Wilfried Derksen|Willmcw|Woggly|WojPob|Woohookitty|Worldtraveller|Ww|Wwoods|XJamRastafire|Xezbeth|Y0u|Yacht|Zanimum|Zero0000|Zippy|Zocky|Zoe|Zoicon5|Zoney|Zscout370|Zzyzx11)$"); loopRecentChanges(feed, 200); } // ************************************************** // Installation // ************************************************** window.recent2_addlilink=function(tabs, url, name, id, title, key){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); tabs.appendChild(li); if(id) { if(key && title) ta[id] = [key, title]; else if(key) ta[id] = [key, '']; else if(title) ta[id] = ['', title]; } // re-render the title and accesskeys from existing code in wikibits.js akeytt(); return li; } window.recent2_addToolboxLink=function(url, name, id){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; recent2_addlilink(tb, url, name, id); } window.addMarvin=function() { recent2_addToolboxLink('http://fr.wikipedia.org/wiki/Utilisateur:Stanlekub/Filter_recent_changes', 'Modifications récentes (filtrées)', 'toolbox_filter_changes'); recent2_addToolboxLink('http://fr.wikipedia.org/wiki/Utilisateur:Stanlekub/All_recent_changes', 'Modifications récentes (toutes)', 'toolbox_all_changes'); recent2_addToolboxLink('http://fr.wikipedia.org/wiki/Utilisateur:Stanlekub/Recent_IP_edits', 'Éditions d’IP', 'toolbox_IP_edits'); recent2_addToolboxLink('http://fr.wikipedia.org/wiki/Utilisateur:Stanlekub/Monitor_my_watchlist', 'Monitorer la liste de suivi', 'toolbox_watchlist_edits'); //document.getElementById('toolbox_filter_changes').onclick=marvin; } window.maybeStart=function() { var loc=document.location.href; if (RegExp('Utilisateur:Stanlekub/Filter[_ ]recent[_ ]changes','i').test(loc)) { window.recent2_filter_badwords=true; recent2_runOnce(marvin, 1000); } else if (RegExp('Utilisateur:Stanlekub/All[_ ]recent[_ ]changes','i').test(loc)) { window.recent2_filter_badwords=false; recent2_runOnce(marvin, 1000); } else if (RegExp('Utilisateur:Stanlekub/Recent[_ ]IP[_ ]edits','i').test(loc)) { window.recent2_filter_anonsOnly=true; recent2_runOnce(marvin, 1000); } else if (RegExp('Utilisateur:Stanlekub/Monitor[_ ]my[_ ]watchlist', 'i').test(loc)) { window.recent2_filter_watchlist=true; recent2_runOnce(marvin, 1000); } } // onload addOnloadHook(maybeStart); addOnloadHook(addMarvin); // </nowiki></pre> ////////////////////////////////////////////////////////////////////////////// //******************************************************************************* //A helper function to add a button to one of the toolbars in the interface. An improved(I hope) //version of [[Wikipedia:WikiProject User scripts/Scripts/Add LI link|addlilink]]. [[User:JesseW/sig|JesseW, the juggling //janitor]] 05:33, 8 November 2005 (UTC) function addLink(where, url, name, id, title, key, after){ //* where is the id of the toolbar where the button should be added; // i.e. one of "p-cactions", "p-personal", "p-navigation", or "p-tb". // //* url is the URL which will be called when the button is clicked. // javascript: urls can be used to do more complex things. // //* name is what will appear as the name of the button. // //* id is the id of the button; it's best to define one. // Use a prefix to make sure its unique. Optional. // //* title is the tooltip title that gives a longer description // of the button; if you define a accesskey, mention it here. Optional. // //* key is the char you want for the accesskey. Optional. // //* after is the id of the button you want to follow this one. Optional. // var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); var tabs = document.getElementById(where).getElementsByTagName('ul')[0]; if(after) { tabs.insertBefore(li,document.getElementById(after)); } else { tabs.appendChild(li); } if(id) { if(key && title) { ta[id] = [key, title]; } else if(key) { ta[id] = [key, '']; } else if(title) { ta[id] = ['', title];} } // re-render the title and accesskeys from existing code in wikibits.js akeytt(); return li; } ////////////////////////////////////////////////////////////////////////////// //******************************************************************************* function addlilink(tabs, url, name, id, title, key){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); if(id) li.id = id; li.appendChild(na); tabs.appendChild(li); if(id) { if(key && title) { ta[id] = [key, title]; } else if(key) { ta[id] = [key, '']; } else if(title) { ta[id] = ['', title]; } } // re-render the title and accesskeys from existing code in wikibits.js akeytt(); return li; } ////////////////////////////////////////////////////////////////////////////// //******************************************************************************* // This will add an [edit top] link at the top of all pages except preview pages // by User:Pile0nades // http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Edit_Top // Add an [edit top] link to pages addOnloadHook(function () { // if this is preview page or generated page, stop if(document.getElementById("wikiPreview") || window.location.href.indexOf("/wiki/Special:") != -1) return; // get the page title var pageTitle = document.title.split(" - ")[0].replace(" ", "_"); // create div and set innerHTML to link var divContainer = document.createElement("div"); divContainer.innerHTML = '<div class="editsection" style="float:right;margin-left:5px;margin-right:15px;margin-top:3px;">[<a href="/w/index.php?title='+pageTitle+'&action=edit§ion=0" title="'+document.title.split(" - ")[0]+'">edit top</a>]</div>'; // insert divContainer into the DOM before the h1 if(window.location.href.indexOf("&action=edit") == -1) document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]); if(window.location.href.indexOf("&action=edit§ion=0") != -1) document.getElementById("wpSummary").value = "/* Intro */ "; }); ////////////////////////////////////////////////////////////////////////////// //******************************************************************************* // http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Add_purge_to_tabs // addPurge addOnloadHook( function (){ var x = document.getElementById('ca-history'); if(!x) return; if(x.children) x = x.children[0].href; else x = x.childNodes[0].href; addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', 0); }); ////////////////////////////////////////////////////////////////////////////// //******************************************************************************* //From http://en.wikipedia.org/w/index.php?title=User:JesseW/monobook.js&oldid=20755510 function addSinceTab() { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if (window.location.href.indexOf("&action=history&gotosince=true")!=-1) { do_since_I_last_edited() } else if (!/wiki\/Special:|w\/index.php?title=Special:/.test(window.location.href)) { var thetitle=document.title.slice(0, String(document.title).indexOf(" - ")); var l=addlilink(tabs, "/w/index.php?title="+thetitle+"&action=history&gotosince=true", 'since', ''); l.lastChild.title="Changes since I last edited"; } } function do_since_I_last_edited() { var csub=document.getElementById("contentSub"); var msg=document.createElement("p"); msg.appendChild(document.createTextNode ("Parsing history... please wait...")); msg.className="error"; csub.insertBefore(msg, csub.firstChild) var username=document.getElementById("pt-userpage").textContent; var hists=document.getElementById("pagehistory").childNodes; for (n=0;n<hists.length;n++) { if (hists[n].getElementsByTagName("span")[0].textContent==username) { document.location=hists[n].childNodes[1].href; return; } } msg.replaceChild(document.createTextNode ("You have not edited this page! (recently)"), msg.firstChild); } addOnloadHook(addSinceTab); ////////////////////////////////////////////////////////////////////////////// // *************************************************************************** // fix diff width // http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Fix_diff_width // inline style sheet to keep this whole thing self-contained: document.write('<style type="text/css">' + ' .xdiff { width: 100%; background: white; }' + ' .xdiff-row { width: 100%; margin: 0 0 3px 0; overflow: hidden; }' + ' .xdiff-col { width: 49%; margin: 0; float: left; clear: none; position: relative; }' + ' .xdiff-sign, .xdiff-outer, .xdiff-inner { display: block; margin: 0; }' + ' .xdiff-sign { position: absolute; top: 0; left: 0; width: 2em; text-align: center; }' + ' .xdiff-outer { padding: 0 0 0 2em; }' + ' .xdiff-inner { overflow: auto; overflow-y: visible; width: 100%; }' + ' .xdiff-inner.diff-addedline { font-size: 85%; background: #cfc; }' + ' .xdiff-inner.diff-deletedline { font-size: 85%; background: #ffa; }' + ' .xdiff-inner.diff-context { font-size: 85%; background: #eee; }' + (!document.recalc ? '' : // IE kluge: ' * html .xdiff-inner { padding-bottom: expression(this.scrollWidth > this.offsetWidth ? "16px" : 0); }' + ' * html .xdiff-sign { top: expression((this.parentNode.clientHeight - this.offsetHeight)/2 + "px"); }') + '<'+'/style>'); addOnloadHook(function () { var diffSigns = new Array(); var fixDiffWidth = function () { var tables = document.getElementsByTagName('table'); for (var i = 0; i < tables.length; i++) { if (tables[i].className != 'diff') continue; var rows = tables[i].getElementsByTagName('tr'); var diffDiv = document.createElement('div'); diffDiv.className = 'xdiff'; for (var j = 0; j < rows.length; j++) { var rowDiv = document.createElement('div'); rowDiv.className = 'xdiff-row'; var colDiv = null; var cols = rows[j].getElementsByTagName('td'); for (var k = 0; k < cols.length; k++) { if (!colDiv) { colDiv = document.createElement('div'); colDiv.className = 'xdiff-col'; rowDiv.appendChild(colDiv); } if (cols[k].getAttribute('colspan') == 2 || cols[k].className.substring(0,5) == 'diff-') { // use spans instead of divs so that an eventual non-js solution will look nice in lynx! var outerSpan = document.createElement('span'); var innerSpan = document.createElement('span'); outerSpan.className = 'xdiff-outer'; innerSpan.className = 'xdiff-inner ' + cols[k].className; innerSpan.style.textAlign = cols[k].getAttribute('align'); for (var node = cols[k].firstChild; node; node = node.nextSibling) innerSpan.appendChild(node.cloneNode(true)); innerSpan.appendChild(document.createTextNode(String.fromCharCode(0xa0))); // add nbsp outerSpan.appendChild(innerSpan); colDiv.appendChild(outerSpan); colDiv = null; // start new column } else if (cols[k].firstChild && (cols[k].firstChild.nextSibling || cols[k].firstChild.nodeType != 3 || cols[k].firstChild.nodeValue.match(/\S/))) { // use spans instead of divs so that an eventual non-js solution will look nice in lynx! var signSpan = document.createElement('span'); signSpan.className = 'xdiff-sign'; if (!signSpan.style.setExpression) diffSigns[diffSigns.length] = signSpan; for (var node = cols[k].firstChild; node; node = node.nextSibling) signSpan.appendChild(node.cloneNode(true)); colDiv.appendChild(signSpan); } } diffDiv.appendChild(rowDiv); } tables[i].parentNode.replaceChild(diffDiv, tables[i]); } }; // finally, a kluge to vertically center the +/- signs var centerDiffSigns = function () { for (var i = 0; i < diffSigns.length; i++) { var parentHeight; if (!( parentHeight = diffSigns[i].parentNode )) continue; if (!( parentHeight = parentHeight.clientHeight )) continue; diffSigns[i].style.top = ((parentHeight - diffSigns[i].offsetHeight)/2) + "px"; } }; fixDiffWidth(); if (diffSigns.length) { hookEvent('resize', centerDiffSigns); setTimeout(centerDiffSigns, 250); } }); ////////////////////////////////////////////////////////////////////////////// //</nowiki></pre>