मीडियाविकि:Gadget-twinklearv.js: रिवीजन सभ के बीचा में अंतर
Content deleted Content added
Update to commit 5370fe |
Update to commit 051eb9 |
||
लाइन 15:
Twinkle.arv = function twinklearv() {
var username = Morebits.getPageAssociatedUser();
if ( username === false ) {
Line 68 ⟶ 67:
} );
categories.append( {
} );
form.append( {
type: 'field',
label: 'Work area',
name: 'work_area'
} );
form.append( { type: 'submit' } );
form.append( {
type: 'hidden',
Line 104 ⟶ 103:
/* falls through */
default:
work_area = new Morebits.quickForm.element( {
type: 'field',
label: 'Report user for vandalism',
Line 151 ⟶ 150:
name: 'arvtype',
list: [
{
label: 'Vandalism after final (level 4 or 4im) warning given',
value: 'final'
},
{
label: 'Vandalism after recent (within 1 day) release of block',
value: 'postblock'
},
{
label: 'Evidently a vandalism-only account',
value: 'vandalonly',
disabled: Morebits.isIPAddress( root.uid.value )
},
{
label: 'Account is evidently a spambot or a compromised account',
value: 'spambot'
},
{
label: 'Account is a promotion-only account',
value: 'promoonly'
Line 183 ⟶ 182:
break;
case 'username':
work_area = new Morebits.quickForm.element( {
type: 'field',
label: 'Report username violation',
name: 'work_area'
} );
work_area.append ( {
type: 'header',
label: 'Type(s) of inappropriate username',
tooltip: 'Wikipedia does not allow usernames that are misleading, promotional, offensive or disruptive. Domain names and email addresses are likewise prohibited. These criteria apply to both usernames and signatures. Usernames that are inappropriate in another language, or that represent an inappropriate name with misspellings and substitutions, or do so indirectly or by implication, are still considered inappropriate.'
} );
Line 202 ⟶ 201:
tooltip: 'Misleading usernames imply relevant, misleading things about the contributor. For example, misleading points of fact, an impression of undue authority, or the suggestion that the account is operated by a group, project or collective rather than one individual.'
},
{
label: 'Promotional username',
value: 'promotional',
tooltip: 'Promotional usernames are advertisements for a company, website or group. Please do not report these names to UAA unless the user has also made promotional edits related to the name.'
},
{
label: 'Offensive username',
value: 'offensive',
tooltip: 'Offensive usernames make harmonious editing difficult or impossible.'
},
{
label: 'Disruptive username',
value: 'disruptive',
Line 229 ⟶ 228:
case 'puppet':
work_area = new Morebits.quickForm.element( {
type: 'field',
label: 'Report suspected sockpuppet',
Line 267 ⟶ 266:
break;
case 'sock':
work_area = new Morebits.quickForm.element( {
type: 'field',
label: 'Report suspected sockpuppeteer',
Line 280 ⟶ 279:
tooltip: 'The username of the sockpuppet without the User:-prefix',
min: 2
} );
work_area.append( {
type: 'textarea',
Line 303 ⟶ 301:
old_area.parentNode.replaceChild( work_area, old_area );
break;
work_area = new Morebits.quickForm.element( {
} );
work_area.append( {
type: 'input',
name: 'page',
label: 'Page',
tooltip: 'The page being reported'
} );
work_area.append( {
type: 'button',
name: 'load',
event: function(e) {
var root = e.target.form;
var value = root.page.value;
Line 335 ⟶ 330:
var api = new mw.Api();
api.get({
}).done(function(data){
return;
var rev = page.revisions[i];
var $entry = $('<div/>', {
});
var $input = $('<input/>', {
});
$input.data('revinfo',rev);
$input.appendTo($entry);
$entry.append('<span>"'+rev.parsedcomment+'" at <a href="'+mw.config.get('wgScript')+'?diff='+rev.revid+'">'+moment(rev.timestamp).calendar()+'</a></span>').appendTo($diffs);
}
}).fail(function(data){
});
var $warnings = $(root).find('[name=warnings]');
Line 375 ⟶ 367:
api.get({
}).done(function(data){
return;
var rev = page.revisions[i];
var $entry = $('<div/>', {
});
var $input = $('<input/>', {
});
$input.data('revinfo',rev);
$input.appendTo($entry);
$entry.append('<span>"'+rev.parsedcomment+'" at <a href="'+mw.config.get('wgScript')+'?diff='+rev.revid+'">'+moment(rev.timestamp).calendar()+'</a></span>').appendTo($warnings);
}
}).fail(function(data){
});
var $resolves = $(root).find('[name=resolves]');
Line 421 ⟶ 409:
api.get({
}).done(function(data){
return;
var rev = page.revisions[i];
var $entry = $('<div/>', {
});
var $input = $('<input/>', {
'type': 'checkbox',
'name': 's_resolves',
'value': rev.revid
});
$input.data('revinfo',rev);
$input.appendTo($entry);
$entry.append('<span>"'+rev.parsedcomment+'" at <a href="'+mw.config.get('wgScript')+'?diff='+rev.revid+'">'+moment(rev.timestamp).calendar()+'</a></span>').appendTo($resolves);
}
// add free form input
var $free_entry = $('<div/>', {
'class': 'entry'
});
var $
});
var $free_label = $('<label/>', {
'for': 's_resolves_free',
'html': 'Diff to additional discussions: '
});
}).fail(function(data){
});
} );
work_area.append( {
type: 'field',
name: 'diffs',
label: 'User\'s reverts',
tooltip: 'Select the edits you believe are reverts'
} );
work_area.append( {
type: 'field',
name: 'warnings',
label: 'Warnings given to subject',
tooltip: 'You must have warned the subject before reporting'
} );
work_area.append( {
type: 'field',
name: 'resolves',
label: 'Resolution initiatives',
tooltip: 'You should have tried to resolve the issue on the talk page first'
} );
work_area.append( {
type: 'textarea',
label: 'Comment:',
} );
work_area = work_area.render();
old_area.parentNode.replaceChild( work_area, old_area );
break;
}
};
Twinkle.arv.callback.evaluate = function(e) {
var form = e.target;
var reason = "";
Line 657 ⟶ 635:
case "puppet":
var sockParameters = {
evidence: form.evidence.value.trimRight(),
checkuser: form.checkuser.checked,
notify: form.notify.checked
};
Line 678 ⟶ 656:
break;
var diffs = $.map( $('input:checkbox[name=s_diffs]:checked',form), function(o){ return $(o).data('revinfo'); });
if(diffs.length < 3) {
}
Line 690 ⟶ 667:
if(!warnings.length && !confirm("You have not selected any edits where you warn the offender; You wish to make the report anyway?")) {
}
Line 697 ⟶ 674:
var an3_next = function(free_resolves) {
return;
'uid': uid,
'page': form.page.value.trim(),
'comment': form.comment.value.trim(),
'diffs': diffs,
'warnings': warnings,
'resolves': resolves,
'free_resolves': free_resolves
};
if(free_resolves) {
action: 'query',
prop: 'revisions',
format: 'json',
rvprop: 'ids|timestamp|comment',
indexpageids: true,
revids: oldid
var pageid = data.query.pageids[0];
var page = data.query.pages[pageid];
an3_next(page);
console.log( 'API failed :(', error );
} else {
}
break;
Line 784 ⟶ 761:
// prepare the SPI report
var text = "\n\n{{subst:SPI report|socksraw=" +
params.sockpuppets.map( function(v) {
return "* {{" + ( Morebits.isIPAddress( v ) ? "checkip" : "checkuser" ) + "|1=" + v + "}}";
} ).join( "\n" ) + "\n|evidence=" + params.evidence + " \n";
Line 808 ⟶ 785:
Twinkle.arv.processAN3 = function( params ) {
}
}
var api = new mw.Api();
api.get({
action: 'query',
prop: 'revisions',
format: 'json',
rvprop: 'sha1|ids|timestamp|comment',
rvlimit: 100,
rvstartid: minid,
rvexcludeuser: params.uid,
indexpageids: true,
redirects: true,
titles: params.page
}).done(function(data){
Morebits.wiki.addCheckpoint(); // prevent notification events from causing an erronous "action completed"
var orig;
if(data.length) {
var sha1 = data[0].sha1;
for(var i = 1; i < data.length; ++i) {
if(data[i].sha1 == sha1) {
orig = data[i];
break;
}
}
if(!orig) {
orig = data[0];
}
}
origtext = "";
if(orig) {
origtext = '{{diff2|' + orig.revid + '|' + orig.timestamp + '}} "' + orig.comment + '"';
}
var grouped_diffs = {};
var revid, parentid, lastid;
if( cur.revid && cur.revid != parentid || lastid === null ) {
lastid = cur.revid;
grouped_diffs[lastid] = [];
}
parentid = cur.parentid;
grouped_diffs[lastid].push(cur);
}
var difftext = $.map(grouped_diffs, function(sub, index){
var ret = "";
if(sub.length >= 2) {
var last = sub[0];
var first = sub.slice(-1)[0];
var label = "Consecutive edits made from " + moment(first.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]') + " to " + moment(last.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]');
ret = "# {{diff|oldid="+first.parentid+"|diff="+last.revid+"|label="+label+"}}\n";
}
ret += sub.reverse().map(function(v){
return (sub.length >= 2 ? '#' : '') + '# {{diff2|' + v.revid + '|' + moment(v.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]') + '}} "' + v.comment + '"';
}).join("\n");
return ret;
}).reverse().join("\n");
var warningtext = params.warnings.reverse().map(function(v){
return '# ' + ' {{diff2|' + v.revid + '|' + moment(v.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]') + '}} "' + v.comment + '"';
}).join("\n");
var resolvetext = params.resolves.reverse().map(function(v){
return '# ' + ' {{diff2|' + v.revid + '|' + moment(v.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]') + '}} "' + v.comment + '"';
}).join("\n");
var page = params.free_resolves;
var rev = page.revisions[0];
resolvetext += "\n# " + ' {{diff2|' + rev.revid + '|' + moment(rev.timestamp).utc().format('HH:mm, D MMMM YYYY [(UTC)]') + ' on ' + page.title + '}} "' + rev.comment + '"';
}
var comment = params.comment.replace(/~*$/g, '').trim();
if(comment) {
comment += " ~~~~";
}
var text = "\n\n"+'{{subst:AN3 report|diffs='+difftext+'|warnings='+warningtext+'|resolves='+resolvetext+'|pagename='+params.page+'|orig='+origtext+'|comment='+comment+'|uid='+params.uid+'}}';
var reportpage = 'Wikipedia:Administrators\' noticeboard/Edit warring';
Morebits.wiki.actionCompleted.redirect = reportpage;
Morebits.wiki.actionCompleted.notice = "Reporting complete";
var an3Page = new Morebits.wiki.page( reportpage, 'Retrieving discussion page' );
an3Page.setFollowRedirect( true );
an3Page.setEditSummary( 'Adding new report for [[Special:Contributions/' + params.uid + '|' + params.uid + ']].'+ Twinkle.getPref('summaryAd') );
an3Page.setAppendText( text );
an3Page.append();
// notify user
var notifyEditSummary = "Notifying about edit warring noticeboard discussion." + Twinkle.getPref('summaryAd');
var notifyText = "\n\n{{subst:an3-notice|1=" + mw.util.wikiUrlencode(params.uid) + "|auto=1}} ~~~~";
var talkPage = new Morebits.wiki.page( 'User talk:' + params.uid, 'Notifying edit warrior' );
talkPage.setFollowRedirect( true );
talkPage.setEditSummary( notifyEditSummary );
talkPage.setAppendText( notifyText );
talkPage.append();
Morebits.wiki.removeCheckpoint(); // all page updates have been started
}).fail(function(data){
console.log( 'API failed :(', error );
});
};
})(jQuery);
|