User:Writ Keeper/Scripts/teahouseSectionMover.js

//

//We only need this to work on the Teahouse page, and only when we're just looking, rather than editing or looking at the history or something if(mw.config.get("wgPageName") == "Wikipedia:Teahouse/Questions" && mw.config.get("wgAction") == "view") {	//This function, called from the onClick event handler on the button, actually moves the section to the top function moveSection {		//TODO: API call to retrieve raw page data, fancy regex to retrieve section content from raw page data, figure out how to strip it (or just make another API 		//call), another fancy regex to find the top section, figure out how to insert the section at the top, another API call to save }

//This function adds the buttons to each header, next to the normal edit section link. function moveSectionSetup {		//Use JQuery to retrieve all of the headers in the body of the page. var sectionHeaders= $("#mw-content-text h2");

//Iterate over the sections, creating and adding buttons as we go		sectionHeaders.each(function(index, element)		{			var editSectionLink= $(element).children(".editsection")

//Make sure the section has an edit link (otherwise, it's not a normal section, so we shouldn't touch it) if(editSectionLink.length > 0) {				//retrieve DOM element from JQuery wrapper editSectionLink = editSectionLink[0];

//create and initialize button var autoCloser = document.createElement("a"); autoCloser.href = "#"; $(autoCloser).attr("sectionIndex", index + offset); autoCloser.innerHTML = "Move to top"; var editSectionContents = $(editSectionLink).html;

//add button with some formatting, to make it look similar editSectionLink.innerHTML = "["; editSectionLink.appendChild(autoCloser); editSectionLink.innerHTML = editSectionLink.innerHTML + "] " + editSectionContents; }		});

//add click handler (do it separately to ensure that the element has been added to the page already; otherwise, it fails silently and causes no end of heartache		$("#bodyContent [sectionIndex]").click(moveSection);	}	//Calls the button adder when the page is done loading	$(document).ready(moveSectionSetup); } //