User:Wayoshi/monobook.js

/*

/* function formatRecentChanges { /*   * formatRecentChanges * (c) Tim Laqua, 2007 (http://en.wikipedia.org/wiki/User:Tim_Laqua/Scripts/formatRecentChanges.js) */  if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Recentchanges' ) { var colorPrimaryRow = '#77beea'; var colorAltRow = '#82b9e6'; var colorPatrolledRow = '#77beea'; var colorHeaderRow = '#67aeca'; var colorFooterRow = '#67aeca'; var columns = '7'; var colUL = document.getElementsByTagName('ul'); if ( colUL.length > 0 ) { var tableWrapper = document.createElement('table'); var tableNode = document.createElement('tbody'); tableWrapper.width = '100%'; var contentDiv = document.getElementById('content'); contentDiv.appendChild(tableWrapper); tableWrapper.appendChild(tableNode); for(var i=0; i<colUL.length; i++) { if (colUL[i].className == 'special') { var altRow = false; var nodeListHeading = document.getElementsByTagName('h4')[0]; var rowHeading = document.createElement('tr'); var cellHeading = document.createElement('td'); cellHeading.appendChild(nodeListHeading); cellHeading.colSpan = columns; rowHeading.appendChild(cellHeading); rowHeading.style.backgroundColor = colorHeaderRow; tableNode.appendChild(rowHeading); var colLI = colUL[i].getElementsByTagName('li'); for(var j=0; j<colLI.length; j++) { var minor = false; var bot = false; var unpatrolled = false; var newpage = false; var rowNode = document.createElement('TR'); var flagNode = document.createElement('TD'); flagNode.style.whiteSpace = 'nowrap'; var changedNode = document.createElement('TD'); changedNode.style.whiteSpace = 'nowrap'; changedNode.style.textAlign = 'right'; var messageNode = document.createElement('TD'); //var colSPAN = colLI[j].getElementsByTagName('span'); var colSPAN = colLI[j].childNodes; for(var k=0; k < colSPAN.length; k++) { if (colSPAN[k].nodeType == 1) { switch (colSPAN[k].className.toLowerCase) { case 'mw-plusminus-neg': //add to changedNode changedNode.appendChild(colSPAN[k--]); break; case 'mw-plusminus-null': //add to changedNode changedNode.appendChild(colSPAN[k--]); break; case 'mw-plusminus-pos': //add to changedNode changedNode.appendChild(colSPAN[k--]); break; case 'unpatrolled': //add to flagNode unpatrolled = true; flagNode.appendChild(colSPAN[k--]); break; case 'minor': //add to flagNode minor = true; flagNode.appendChild(colSPAN[k--]); break; case 'newpage': //add to flagNode newpage = true; flagNode.appendChild(colSPAN[k--]); break; case 'bot': //add to flagNode bot = true; flagNode.appendChild(colSPAN[k--]); break; case 'comment': //add to messageNode messageNode.appendChild(colSPAN[k--]); break; default: //do nothing }              }             }             //check for unpatrolled flag if (unpatrolled) { rowNode.style.backgroundColor = colorPatrolledRow; } else { if (altRow) { rowNode.style.backgroundColor = colorAltRow; } else { rowNode.style.backgroundColor = colorPrimaryRow; }            }             altRow = altRow ? false : true; var regexp = /; (\d\d:\d\d)/i; var colMatches = colLI[j].innerHTML.match(regexp); var time = colMatches[1]; var cleanText = colLI[j].innerHTML.replace(regexp,''); var arrLI = cleanText.split(' . . '); var timeNode = document.createElement('TD'); timeNode.innerHTML = time; timeNode.style.whiteSpace = 'nowrap'; var contextNode = document.createElement('TD'); contextNode.innerHTML = arrLI[0]; contextNode.style.whiteSpace = 'nowrap'; var titleNode = document.createElement('TD'); //titleNode.style.whiteSpace = 'nowrap'; var nameNode = document.createElement('TD'); nameNode.style.whiteSpace = 'nowrap'; if (arrLI.length == 4) { //standard entry titleNode.innerHTML = arrLI[1]; nameNode.innerHTML = arrLI[3]; } else if (arrLI.length == 2) { //log message - append fragment to message node nameNode.innerHTML = arrLI[1]; }            if (changedNode.firstChild) { changedNode.firstChild.innerHTML = changedNode.firstChild.innerHTML.replace(/(^\s*\|(\)\s*$)/ig,''); }            if (messageNode.firstChild) { messageNode.firstChild.innerHTML = messageNode.firstChild.innerHTML.replace(/(^\s*\|(\)\s*$)/ig,''); }            rowNode.appendChild(timeNode); rowNode.appendChild(contextNode); rowNode.appendChild(flagNode); rowNode.appendChild(titleNode); rowNode.appendChild(messageNode); rowNode.appendChild(nameNode); rowNode.appendChild(changedNode); tableNode.appendChild(rowNode); }          colUL[i].parentNode.removeChild(colUL[i--]); }      }     }   } } addOnloadHook(formatRecentChanges);

function addTab(id, after, caption, url) { if (!document.getElementById(id)) { var edit = document.getElementById(after); if (!edit) return; //If the previous tab doesn't exist, don't add this one var editparent = edit.parentNode; var aseclinkcaption = document.createTextNode(caption) var aseclink = document.createElement('a'); aseclink.setAttribute('href',url); var addsectionlinkcaption = aseclink.appendChild(aseclinkcaption); var asec = document.createElement('li'); asec.setAttribute('id',id); var addsectionlink = asec.appendChild(aseclink); var addsection = editparent.insertBefore(asec,edit.nextSibling); } }

function addEditSection { var arti = wgPageName; addTab("ca-addsection", 'ca-edit', '+', wgScriptPath+"/index.php?title="+escape(arti)+"&action=edit&section=new"); addTab("ca-editfirst", 'ca-edit', '0', wgScriptPath+"/index.php?title="+escape(arti)+"&action=edit&section=0"); } if (window.addEventListener) window.addEventListener("load",addEditSection,false); else if (window.attachEvent) window.attachEvent("onload",addEditSection); function addEditSection { var arti = wgPageName; addTab("ca-addsection", 'ca-edit', '+', wgScriptPath+"/index.php?title="+escape(arti)+"&action=edit&section=new"); addTab("ca-editfirst", 'ca-edit', '0', wgScriptPath+"/index.php?title="+escape(arti)+"&action=edit&section=0"); } if (window.addEventListener) window.addEventListener("load",addEditSection,false); else if (window.attachEvent) window.attachEvent("onload",addEditSection);

// credit: http://en.wikipedia.org/wiki/User:Alex_Smotrov/histcomb.js

var histComb = new function{ if (!window.histCombMyBg) histCombMyBg = '#77beea' if (!window.histCombTalk) histCombTalk = 't' if (!window.histCombContrib) histCombContrib = 'c' var pagehis, histRow, histSize, isCombEdits = false this.onLoad = function{ if (!(pagehis = document.getElementById('pagehistory'))) return histRow = pagehis.getElementsByTagName('li') histSize = new Array (histRow.length) //histSumm = new Array (histRow.length) var row, spans, i, aa, author, author_p = '', size_digits var sameAuthor = 0, thisMinor, allMinor = true for (var rr=histRow.length-1; rr>=0; rr--){ //main loop: bottom to top row = histRow[rr] thisMinor = false spans = row.getElementsByTagName('span') //check all spans for (i=0; i<spans.length; i++) switch (spans[i].className){ case 'history-size': size_digits = spans[i].innerHTML.match(/\d+/g) histSize[rr] = size_digits ? size_digits.join('') : '0' if (histSize[rr+1]){ spans[i].title = spans[i].innerHTML.replace(/ /g,' ') insertDiffValue(spans[i], histSize[rr] - histSize[rr+1]) }     break case 'minor': thisMinor = true break case 'history-user': // get user name and shorten talk/contribs aa = spans[i].getElementsByTagName('a') author = aa[1].title.split(':')[1] aa[1].innerHTML = histCombTalk if (aa.length >= 3 && (aa[2].title.indexOf(':Contributions/') != -1)) //for anons this could be 'block' aa[2].innerHTML = histCombContrib break case 'mw-history-undo': aa = spans[i].getElementsByTagName('a')[0] aa.title = aa.innerHTML aa.innerHTML = '×' break //case 'comment': histSumm = spans[i].innerHTML  break }//end switch inside for if (!histSize[rr] && histSize[rr+1]) histSize[rr] = histSize[rr+1] //assume it was '(un)protect' edit if (wgUserName == author) histRow[rr].style.backgroundColor = histCombMyBg //check how many consequent edits if (author == author_p) sameAuthor++ else { if (sameAuthor > 1) createCombineEdit(rr+1, sameAuthor, allMinor) sameAuthor = 1 author_p = author allMinor = thisMinor } if (!thisMinor) allMinor = false }//main loop if (sameAuthor>1) createCombineEdit(0, sameAuthor, allMinor) if (isCombEdits) { //add all expand/collapse link var togAll = document.createElement('a') togAll.appendChild(document.createTextNode('[±]')) togAll.href = 'javascript:histComb.toggleAll' //togAll.style.marginLeft = '0.2em' pagehis.parentNode.insertBefore(togAll, pagehis.previousSibling) } //bonus: link to toоlserver var lnk = document.createElement('a') lnk.style.marginLeft = '20px' lnk.href = 'http://www.mariowiki.com/index.php?title=Special%3AContributors&target='+encodeURIComponent(wgPageName) lnk.appendChild(document.createTextNode('Contributors')) lnk.title = 'All authors sorted by edits (on toolserver)' if (i=document.getElementById('contentSub')) i.appendChild(lnk) } this.toggleAll = function{ var links = getElementsByClassName(pagehis, 'a', 'collapsedEdits') for (var i=0; i 0 ? 1 : 0] // "last" link var i, oldid, clss var isHiding = (plus.innerHTML == '[–]') if (isHiding) {//need to collapse − plus.innerHTML = '[' + len + ']' row.style.borderLeft = '1px solid transparent' //hide other rows for (i=m+1; i<m+len; i++) histRow[i].style.display = 'none' //get values for left radio button and "diff from last" link from the lowest collapsed edit radios[0].value = histRow[m+len-1].getElementsByTagName('input')[0].value diffLastLnk['old'] = diffLastLnk.href oldid = histRow[m+len-1].getElementsByTagName('a')[1].href.match(/oldid=(\d+)/)[1] diffLastLnk.href = diffLastLnk.href.replace(/&oldid=\d+/, '&oldid='+oldid) }else{ //need to expand plus.innerHTML = '[–]' //show other rows and visually reference the whole group row.style.borderLeft = '1px dotted gray' for (i=m+1; i<m+len; i++){ histRow[i].style.display = 'block' histRow[i].style.borderLeft = '1px dotted gray' histRow[i].style.listStyle = 'none none' }  histRow[m+len-1].style.borderBottom = '1px dotted gray' //change back radio button and diff link radios[0].value = radios[1].value diffLastLnk.href = diffLastLnk['old'] } //hide/show/modify spans in this row for (i=0; i<spans.length; i++) switch (spans[i].className.split(' ')[0]){ case 'minor': spans[i].style.display = (isHiding && !isMinor)?'none':'inline' break case 'history-size': //switch to combined diff size and back insertDiffValue(spans[i], histSize[m] - (isHiding ? histSize[m+len] : histSize[m+1])) break case 'comment': //hide/show spans[i].style.display = (isHiding && !window.histCombLeaveComment)?'none':'inline' break case 'mw-history-undo': var undoLnk = spans[i].getElementsByTagName('a')[0] if (isHiding) { undoLnk['old'] = undoLnk.href undoLnk.href = undoLnk.href.replace(/&undoafter=\d+/, '&undoafter='+oldid) }else undoLnk.href = undoLnk['old'] break //case 'history-user': } } function createCombineEdit(m, len, isMinor){ //creates collapsing link for row m down to row m+len var row = histRow[m] row.style.listStyle = 'none none' row.style.position = 'relative' var plus = document.createElement('a') plus.className = 'collapsedEdits' plus.appendChild(document.createTextNode('[–]')) plus.style.position = 'absolute' plus.style.left = '-22px' plus.style.top = '2px' plus.href = 'javascript:histComb.toggle('+m+','+len+','+isMinor+')' row.appendChild(plus) histComb.toggle(m, len, isMinor) //and collapse isCombEdits = true } function insertDiffValue(span, value){ var html, class2 if (value>0) { html = '(+' + value + ')' class2 = ' mw-plusminus-pos' } else if (value<0) { html = '(' + value + ')' class2 = ' mw-plusminus-neg' } else { html = '(0)' class2 = ' mw-plusminus-null' } span.style.fontWeight = (value < -500) ? 'bold' : 'normal' span.innerHTML = html span.className = span.className.split(' ')[0] + class2 } }//obj if (doneOnloadHook) histComb.onLoad else if (wgAction == 'history') addOnloadHook(histComb.onLoad)

// user:Where/usertabs // This is a good one! addOnloadHook(function { if (wgTitle.indexOf("/") != -1 || document.title.indexOf("- History -") != -1)  //no subpages or history     return;  if (wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk") {     var username = encodeURIComponent( wgTitle );     addPortletLink("p-cactions", "/index.php?title=Special:EditCount&target="+ username + "&doeditcount=Show+count", "edit count", "ca-editcount", "Get this user's edit count.");     addPortletLink("p-cactions", wgServer + "/index.php?title=Special:Prefixindex&from=" + username + "&namespace=2", "userspace", "", "List of pages in this user's userspace");  } }); /* */