User:Quarl/autowarn.js

// THIS SCRIPT IS OBSOLETE -- SEE User:Quarl/userwarn.js

// User:Quarl/autowarn.js - warn user using templates. Adds a "warn"

// menu. (formerly User:Quarl/auto_testn.js)

// Prompts for relevant pages; e.g. enter "foo && bar && baz", and outputs

// "This message concerns the pages foo, bar, and baz. Thanks for

// experimenting..."

// depends: wikipage.js, wikiedit.js, wikitabs.js

// enhanced by: advanced_sig.js

//

if(typeof window.makeSignature=='undefined')makeSignature=function(){return "~~~~"};

autowarn = new Object();

autowarn.warn = function(template) {

var pagenames = prompt("Vandalism to which article(s) (separate using &&)?");

if (typeof pagenames != 'string') return;

wikiPage.getEditorAsync(autowarn._edit, template, pagenames);

}

autowarn._englishJoin = function(words) {

if (words.length == 0) {

return '';

} else if (words.length == 1) {

return words[0];

} else if (words.length == 2) {

return words[0] + ' and ' + words[1];

} else {

words[words.length-1] = 'and ' + words[words.length-1];

return words.join(', ');

}

}

autowarn._splitPageNames = function(s) {

var words = s.split('&&');

var pages = [];

for (var i in words) {

var word = trimspaces(words[i]);

if (!word) continue;

word = word.replace(/^\[\[/, '');

word = word.replace(/\]\]$/, '');

pages.push('' + word + '');

}

return pages;

}

autowarn._edit = function(editor, template, pagenames) {

if (typeof(template) != 'string') { alert("autowarn Internal error 5f95d195-b1c8-4f7e-b751-740230b1926a"); return; }

var pagesw = autowarn._splitPageNames(pagenames);

var pages = autowarn._englishJoin(pagesw);

var text = '{{subst:' + template + '}} ' + makeSignature() + '\n';

if (pages) {

text = ('This message concerns the ' + (pagesw.length==1?'page':'pages') + ' ' +

pages + '. ' + text);

}

text = '\n\n' + text;

var summary = "Warning {{" + template + "}}";

if (pages) {

summary += ", concerning " + pages;

}

// if (editor.refuseCreate()) return;

editor.wpTextbox1 = trim_lines(editor.wpTextbox1) + text;

editor.wpSummary = summary;

editor.submit();

}

autowarn._load = function() {

// Only add tab to User talk pages (but not subpages)

if (wikiPage.sandboxP ||

wikiPage.namespace == 'User talk' && !wikiPage.subarticle)

{

autowarn._addTabs();

}

}

autowarn._addTabs = function()

{

var menu = wikitabs.addTabMenu('Warn', 'mn-warn');

var qt = function(s) { return s ? '"'+s+'"' : 'null'; }

var warning = function(template /*, alttemplate */, title) {

title = "Warn user using template {{"+template+"}}: " + title;

wikitabs.addLiLink(menu, 'javascript:autowarn.warn(' + qt(template) /* + ', ' + qt(alttemplate)*/ + ')',

template, 'ca-autowarn-'+template,

title);

}

warning('nn-test', 'Non-notable additions');

// warning('test0', 'Before making controversial edits, please discuss');

warning('selftest', 'Thanks for reverting yourself');

warning('test1', 'Your test worked, and has been reverted');

warning('test2', 'Stop adding nonsense ');

warning('test2a', 'Vandalism level 2 (blanking)');

warning('test3', 'Stop vandalizing, or face block');

warning('test4', 'Last warning before block');

warning('test4im', 'This is your ONLY WARNING before block');

warning('test5', 'You have been temporarily BLOCKED');

warning('test6', 'You have been BLOCKED for repeated vandalism');

warning('bv', 'Blatant vandal');

// warning('spam1',);

// warning('spam2',);

}

$(autowarn._load);

//

//