User:Nathan/modern.js

importScript('User:Mr.Z-man/rollbackSummary.js');

importScript('User:Voice_of_All/Addtabs/monobook.js');

importScript('User:Misza13/statusChanger.js');

importScript('User:AzaToth/twinkle.js');

importScript('User:Ioeth/friendly.js');

// User:Henrik/live-edit-counter

importScript('User:Henrik/js/live-edit-counter.js');

//

importScript('User:Voice of All/Addtabs/monobook.js');

var WindowObjectReference;

function openTab(url) {

WindowObjectReference = window.open(url, "_blank", "");

}

// Section organizer for ANI {{{

if (mw.config.get('wgPageName') == "Wikipedia:Administrators\'_noticeboard/Incidents" && mw.config.get('wgAction') == "view") {

addOnloadHook(function ani_sections() {

var headers = document.getElementsByTagName('H2');

for(var i=1;i

// starting from 1, to skip the toc header.

var section = document.createElement("DIV");

section.className = "sectionContainer";

var anchor = headers[i].previousSibling;

while(anchor.nodeType != 1) anchor = anchor.previousSibling;

headers[i].parentNode.insertBefore(section,headers[i]);

section.appendChild(anchor);

section.appendChild(headers[i]);

var innerSection = document.createElement("DIV");

innerSection.className = "sectionContentHolder";

section.appendChild(innerSection);

while(section.nextSibling && section.nextSibling.tagName != 'H2' && section.nextSibling.id != 'catlinks') {

// look ahead

var anchorcheck = section.nextSibling.nextSibling;

while(anchorcheck && anchorcheck.nodeType!=1) anchorcheck = anchorcheck.nextSibling;

if(anchorcheck && anchorcheck.tagName == 'H2') break;

innerSection.appendChild(section.nextSibling);

}

var ntimestamps = 0;

// evil evil hack

var lastTimestamp = new Date(0);

var lastTimestampText = '(No Timestamp)';

innerSection.textContent.replace(/[0-9][0-9]:[0-9][0-9], [0-3]?[0-9] [A-Z][a-z]* [0-9][0-9][0-9][0-9]/g,function(match) {

var thisTimestamp = new Date(match);

if(thisTimestamp.valueOf() > lastTimestamp.valueOf()) {

lastTimestamp = thisTimestamp;

lastTimestampText = match;

}

ntimestamps++;

});

// was done incorrrectly in local time, convert from UTC

lastTimestamp.setMinutes(

lastTimestamp.getMinutes()-lastTimestamp.getTimezoneOffset()

);

var age = (new Date()).getTime() - lastTimestamp.getTime();

var hideDefault = false;

if (age > 21600000) // 6 hours

hideDefault = true;

if(innerSection.textContent.length < 600) // bytes

hideDefault = false; // no reason to hide in this case

if(ntimestamps < 2) // unanswered

hideDefault = false;

// hide if resolved, also, place the resolved header in the visible part.

var resolved = getElementsByClassName(innerSection,'DIV','resolved');

if(resolved.length) {

resolved = resolved[0];

// [1] to skip an annoying whitespace node

if (resolved != innerSection.firstChild && resolved != innerSection.childNodes[1]) resolved = resolved.cloneNode(true);

section.insertBefore(resolved,innerSection);

hideDefault = true;

}

section.insertBefore(document.createTextNode('Last: ' + lastTimestampText + ". "),innerSection);

section.insertBefore(document.createTextNode(innerSection.textContent.length + " text bytes. "),innerSection);

section.insertBefore(document.createTextNode(ntimestamps + " comments. "),innerSection);

(function ani_sections_closure(){

var header = headers[i];

var innerSectionFix = innerSection;

var button = document.createElement('BUTTON');

if(hideDefault)

button.textContent = 'show';

else

button.textContent = 'hide';

button.onclick = function ani_sections_onclick() {

if(innerSectionFix.style.display == 'none') {

innerSectionFix.style.display = 'block';

this.textContent = 'hide'; }

else {

innerSectionFix.style.display = 'none';

this.textContent = 'show'; }

}

header.insertBefore(button,header.firstChild);

button.style.cssText='float: right';

if(hideDefault) innerSection.style.display='none';

})();

}

});

}

// User:Random832 script for finding "resolved" tags. {{{

// semi-experimental, not yet adapted for anything but ANI.

if (mw.config.get('wgPageName') == "Wikipedia:Administrators\'_noticeboard/Incidents" && mw.config.get('wgAction') == "view") {

addOnloadHook(function ANI_toc_hook(){

var sections = $('toc').getElementsByTagName("li");

for(var i=0;i

try {

var link = sections[i].firstChild;

var target=document.getElementsByName(link.hash.slice(1))[0];

var next = target.parentNode.nextSibling;

// discard text nodes

while(next.nodeType != 1) next = next.nextSibling;

// now we have the header, now skip another

if(next.tagName != "H2") { continue; }

next = next.nextSibling;

while(next.nodeType != 1) next = next.nextSibling;

if ((/\bresolved\b/.test(next.className))) {

//resolved

sections[i].className = "ani_resolved"

sections[i].style.fontStyle = 'italic'

//sections[i].appendChild(document.createTextNode("resolved"))

} else {

//not resolved

sections[i].className = "ani_unresolved"

sections[i].style.fontWeight = 'bold'

}

// BUG: chokes on sections beginning with a digit

// (anchor has name instead of id).

} catch(x) {

if(window.console) //firebug

console.log("caught %o",x);

}//end try

}//end for

});//end onloadhook function

}//end if WP:ANI

// }}}

// Edit summary check {{{

addOnSubmitValidator(function() {

var editsummary = document.getElementById('wpSummary').value;

if( /^\/\*.*\*\/\s*$/.test(editsummary)) editsummary = ''

if(!editsummary) return confirm("Submit this edit without an edit summary?");

else return true;

});

// }}} */

*/

// Adapted from:

//http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Force_edit_summary

// The original value of the edit summary field is stored here

var editsummOriginalSummary = new String();

// A global ref to the dropdown with canned edit summaries

var editsummDropdown = null;

function editsummInitialize()

{

// Save the original value of the edit summary field

editsummOriginalSummary = document.forms.editform.wpSummary.value;

// For convenience, add a dropdown box with some canned edit

// summaries to the form.

var dropdown = document.createElement("select");

dropdown.onchange = new Function("editsummOnCannedSummarySelected()");

editsummAddOptionToDropdown(dropdown,"");

editsummAddOptionToDropdown(dropdown,"add categories");

editsummAddOptionToDropdown(dropdown,"add category");

editsummAddOptionToDropdown(dropdown,"add citation");

editsummAddOptionToDropdown(dropdown,"add external link");

editsummAddOptionToDropdown(dropdown,"add internal link");

editsummAddOptionToDropdown(dropdown,"add quotation");

editsummAddOptionToDropdown(dropdown,"add ref");

editsummAddOptionToDropdown(dropdown,"add section");

editsummAddOptionToDropdown(dropdown,"create redirect page");

editsummAddOptionToDropdown(dropdown,"create stub article");

editsummAddOptionToDropdown(dropdown,"delete external link");

editsummAddOptionToDropdown(dropdown,"delete internal link");

editsummAddOptionToDropdown(dropdown,"delete section");

editsummAddOptionToDropdown(dropdown,"fix broken link");

editsummAddOptionToDropdown(dropdown,"fix case");

editsummAddOptionToDropdown(dropdown,"fix grammar");

editsummAddOptionToDropdown(dropdown,"fix punctuation");

editsummAddOptionToDropdown(dropdown,"fix quote marks");

editsummAddOptionToDropdown(dropdown,"fix spelling");

editsummAddOptionToDropdown(dropdown,"indent");

editsummAddOptionToDropdown(dropdown,"make existing text into link (wikify)");

editsummAddOptionToDropdown(dropdown,"make link into plain text (dewikify)");

editsummAddOptionToDropdown(dropdown,"move section");

editsummAddOptionToDropdown(dropdown,"move unrefd material to talk page");

editsummAddOptionToDropdown(dropdown,"new article");

editsummAddOptionToDropdown(dropdown,"remove repetition");

editsummAddOptionToDropdown(dropdown,"reorder links");

editsummAddOptionToDropdown(dropdown,"sectioning");

editsummAddOptionToDropdown(dropdown,"start article");

var insertBeforeThis = document.forms.editform.wpSummary.nextSibling;

var theParent = insertBeforeThis.parentNode;

theParent.insertBefore(dropdown,insertBeforeThis);

// Store a global ref to it

editsummDropdown = dropdown;

}

function editsummAddOptionToDropdown(dropdown,optionText)

{

var option = document.createElement("option");

var optionTextNode = document.createTextNode(optionText);

option.appendChild(optionTextNode);

dropdown.appendChild(option);

}

// There's a cross-browser issue when accessing the selected text:

// *In Firefox you can use: selectObj.value

// *In IE, you have to use: selectObj.options[selectObj.selectedIndex].text

// *The latter method also works in Firefox

function editsummOnCannedSummarySelected()

{

var idx = editsummDropdown.selectedIndex;

var canned = editsummDropdown.options[idx].text;

var newSummary = editsummOriginalSummary;

if (newSummary.length!=0) newSummary += " - ";

newSummary += canned;

document.forms.editform.wpSummary.value = newSummary;

}