User:Bob/script/hideyellowboxes.js
From OpenWetWare
Jump to navigationJump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
addOnloadHook(function(){ if(wgNamespaceNumber > 0 && wgNamespaceNumber % 2 != 0) { // if we're on a talk page /* do you want the templates to be collapsed on page load? */ var autocollapse = true; var els = new Array(); els['chick'] = "next($('contentSub'))"; els['modern'] = "next($('contentSub'))"; els['monobook'] = "next($('contentSub'))"; els['myskin'] = "next($('contentSub'))"; els['simple'] = "next($('contentSub'))"; els['standard'] = "next($('catlinks'))"; els['cologneblue'] = "next($('article').childNodes[1])"; els['nostalgia'] = "$('article').childNodes[0]"; var pageEl = eval(els[skin]); while(pageEl.className.search(/catlinks|pagetitle|subtitle/i) != -1 || pageEl.id.search(/jump-to-nav|contentSub/i) != -1) { pageEl = next(pageEl); } if (isYellowBox(pageEl)) { // if there's a yellow box at the beginning var tableIndex = 'YellowBoxes'; var collapseCaption = "hide"; var expandCaption = "show"; var table = document.createElement('table'); table.className = 'messagebox standard-talk collapsible collapsed'; table.style.background = 'transparent'; table.style.border = '1px solid #AAAAAA'; table.setAttribute( "id", "collapsibleTable" + tableIndex ); var headtr = table.insertRow(0); var header = document.createElement("th"); header.appendChild( document.createTextNode( "Talk page templates" ) ); header.style.textAlign = "center"; var bodytr = table.insertRow(1); var td = bodytr.insertCell(0); headtr.appendChild(header); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = "right"; Button.style.cssFloat = "right"; Button.style.fontWeight = "normal"; Button.style.textAlign = "right"; Button.style.width = "6em"; ButtonLink.style.color = header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable('" + tableIndex + "');" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); header.insertBefore( Button, header.childNodes[0] ); pageEl.parentNode.insertBefore(table,pageEl); // insert our table var templates = new Array(); while(isYellowBox(pageEl)) { // keep moving through the page until we run out of yellow boxes templates.push(pageEl); pageEl = next(pageEl); } for (i = 0; i < templates.length; i++) { templates[i] = wrapInMessageBox(templates[i],td); // put the templates in our new table } if(autocollapse) collapseTable('YellowBoxes'); // collapse the table } } }); function isYellowBox(el) { if(el.className.search(/messagebox|standard-talk/i) != -1) return true; else return false; } function wrapInMessageBox(el,wrapper) { var newEl = el.cloneNode(true); wrapper.appendChild(newEl); el.parentNode.removeChild(el); return newEl; } function next(el) { el = el.nextSibling; while (el.nodeType != 1) { // fix for Firefox el = el.nextSibling; } return el; } function $() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; }