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<headers.length;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<sections.length;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; }