User:Quarl/userwarn.js
// User:Quarl/autowarn.js - application for warning bad users.
// Interface for selecting the best warning. Parses a user's contribution
// history and presents checkboxes to select which edits to reference in the
// warning.
// (Version 1, a more basic implementation, is archived at
// User:Quarl/autowarn_basic.js)
// depends: wikipage.js, wikiedit.js, wikitabs.js
// enhanced by: advanced_sig.js
// quarl 2006-02-10 version 2 - contribution parsing and such
//
/* TODO
add warn links to history
add warn tab if relevantUser
insert an opening div as with redirector
option for referencing pages vs diffs. default page.
if reqWithPage: reference first page; then bullets for others
if altWithPage and pages: reference first page; then bullets for others
extra parameters
*/
autowarn = new Object();
autowarn.warnings = [
{ heading: "Generic testing or vandalism",
warnings: [
[ "selftest", "Thanks for reverting your test; use sandbox", {altWithPage:"selftest-n"} ],
[ "test1", "Your test worked, and has been reverted", {altWithPage:"test-n"} ],
[ "test2", "Stop adding nonsense", {altWithPage:"test2-n"} ],
[ "test3", "Stop vandalizing, or face block", {altWithPage:"test3-n"} ],
[ "test4", "Last warning, will be blocked", {altWithPage:"test4-n"} ],
[ "test4im", "This is your ONLY WARNING, will be blocked" ],
[ "test5", "You have been temporarily BLOCKED", {altWithPage:"test5-n"} ],
[ "test6", "You have been BLOCKED for repeated vandalism" ],
[ "bv", "Blatant vandal" ]
]},
{ heading: "Testing - removing content",
warnings: [
[ "test1a", "Please don't remove content" ],
[ "test2a", "Stop removing content" ]
]},
{ heading: "Blanking",
warnings: [
[ "blank2", "Don't blank; blanks are harmful" ],
[ "blank3", "Stop blanking, or face block" ],
[ "blank4", "Last warning, will be blocked" ],
[ "blank5", "You have been BLOCKED for blanking" ]
]},
{ heading: "Page move vandalism",
warnings: [
[ "test2m", "Please do not move to nonsensical" ]
]},
{ heading: "Non-notable",
warnings: [
[ "nn-test", "Welcome; edits considered non-notable and reverted" ]
]},
{ heading: "Bad-faith errors",
warnings: [
[ "verror2", "Please stop deliberately introducing errors" ],
[ "verror3", "Please stop, or face block" ],
[ "verror4", "Last warning, will be blocked" ]
]},
{ heading: "Spam",
warnings: [
[ "spam1", "Please don't add commercial links" ],
[ "spam2", "Please stop spamming" ],
[ "spam3", "Last warning, will be blocked" ],
[ "spam4", "You have been BLOCKED for spamming" ],
] },
{ heading: "3RR",
warnings: [
[ "3RR", "Please don't revert more than 3 times in 24 hours" ],
[ "3RR2", "Danger of violating 3RR; may be blocked" ],
[ "3RR3", "You have been temporarily BLOCKED for violation of 3RR" ]
]},
{ heading: "Civility",
warnings: [
[ "civil1", "Please be civil; no personal attacks" ],
[ "civil2", "Please be civil! No edit wars!" ]
]},
{ heading: "Copyright violation",
warnings: [
[ "nothanks", "Please, no copyrighted work", {reqWithPage:"1"} ],
[ "nothanks-sd", "Please, no copyright violation of URL - speedy deletion", {reqWithPage:"pg", params:["url"]} ]
]},
{ heading: "Miscellaneous",
warnings: [
[ "newvoter", "New voter: Your vote may be discounted", {reqWithPage:"1"} ],
[ "tilde", "Please sign your posts on Talk pages" ],
[ "wr", "Please do not remove warnings" ],
]}
];
autowarn.run = function() {
}
// 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 + '}} ~~~~\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() {
if (wikiDoc.relevantUser) {
autowarn.tab = wikitabs.addTab('Warn', 'javascript:autowarn.run()', 'ca-autowarn', 'Warn a mis-behaving user');
}
}
addOnloadHook(autowarn._load);
//
//