User:DaxServer/DiscussionCloser.js

//

//Temporary fork from [[User:DannyS712/DiscussionCloser.js]

//Credits to Equazcion, Evad37, and Abelmoschus Esculentus

//Date: 6 Mar 2019

//Forked from [[User:Abelmoschus Esculentus/DiscussionCloser.js]

//Maintained by DaxServer

function dc_radio(i) {

$('#DC-e').val("");

if (i == 1) {

$('#DC-e').prop('disabled', false);

}

if (i == 2) {

$('#DC-e').prop('disabled', true);

}

}

$(function() {

var api, uri;

const DiscussionCloser_config = {

name: 'DiscussionCloser',

version: '1.7.3-8',

debug: false

};

const DiscussionCloser_ending = ' (' + DiscussionCloser_config.name + ' v.' + DiscussionCloser_config.version + ')';

/* HELPER FUNCTIONS */

function dc_make_bottom(template){

var bottom;

switch (template) {

case "atop":

case "atopr":

case "atopy":

case "atopg":

case "subst:RMT":

bottom = "abot";

break;

case "hat":

bottom = "hab";

break;

default:

bottom = "closed rfc bottom";

break;

}

bottom = "{{" + bottom + "}}";

return bottom;

}

function alreadyClosed ( content ){

content = content.toLowerCase();

if (content.includes('{{atop') ||

content.includes('{{hat') ||

content.includes('{{abot') ||

content.includes('{{archive') ||

content.includes('{{rfctop') ||

content.includes('{{rfc bottom') ||

content.includes('{{archive bottom') ||

content.includes('{{hidden archive bottom') ||

content.includes('')

) return true;

return false;

}

function generate_template_text(template, status, comment) {

var templateText = '\n{{'+template;

if (status !== '') templateText += '\n| status = '+status+'\n';

if (comment !== '') templateText += '\n| result = '+comment+'\n'

templateText += '}}';

return templateText;

}

function getWikiText(template, status, comment, section, callback) {

api.get({

action:"query",

titles: mw.config.get('wgPageName'),

rvsection: section,

prop: "revisions|info",

rvslots: "main",

rvprop: "content",

formatversion: 2,

}).done(function(response) {

const content = response.query.pages[0].revisions[0].slots.main.content;

const discussiontext = content.substring(content.indexOf('\n'));

const title = content.substring(0, content.indexOf('\n'));

const sectiontitle = title.replace(/=/g, '').trim();

const templateText = generate_template_text(template, status, comment);

const bottom = dc_make_bottom(template);

var wikitext = title + templateText + discussiontext + '\n' + bottom;

if (template === "closed rfc top") {

wikitext = wikitext.replace(/(\r|\n)?{{rfc[^\}]*}}/g, '')

.replace(/(\r|\n)?{{[^C]+ClueBot\sIII\/DoNotArchiveUntil\|\d*}}/g, '');

} else if (template === "subst:RMT") {

wikitext = wikitext.replace(/{{requested move\/dated\|[^}]*?}}\n?/i, '');

}

callback(wikitext, sectiontitle, alreadyClosed(content));

});

}

/* MAIN FUNCTIONs */

function dc_init(){

if ((($('#ca-addsection').length > 0) ||

(mw.config.get('wgPageName') == 'Wikipedia:Administrators\'_noticeboard/Edit_warring') ||

(mw.config.get('wgPageName') == 'Wikipedia:In_the_news/Candidates')) &&

(mw.config.get('wgAction') == 'view')) {

dc_run();

}

}

function dc_run() {

$('div:not(.mw-archivedtalk) > div.mw-heading').each(function(index, value) {

const editSectionUrl = $(this).find('.mw-editsection a:first').attr('href');

const sectionRaw = /§ion=(\d+)/.exec(editSectionUrl);

if (sectionRaw === null || typeof sectionRaw[1] === 'undefined') {

return;

}

const sectionHeadingRaw = /mw-heading mw-heading(\d)/.exec($(this).attr('class'));

if (sectionHeadingRaw === null || typeof sectionHeadingRaw[1] === 'undefined' || ![2, 3, 4].includes(parseInt(sectionHeadingRaw[1]))) {

return;

}

const section = parseInt(sectionRaw[1]);

if (isNaN(section)) {

return;

}

const uriFragment = $(this).find('h'+section).attr('id');

$(this).append('

');

$(this).find('a.DC-closeLink').click(function(){

$('body').prepend('

'+

'

'+

'

'+

'


'+

'

'+

'


'+

'

'+

'

'+

'

');

$("#DC-interface-header, #DC-interface-content, #DC-interface-footer").empty();

$("#DC-interface-header").text("Discussion Closer");

$("#DC-interface-content").append(

$('

').append(

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio1','value':'atop','checked':'true','onchange':'dc_radio(1)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio2','value':'atopg','onchange':'dc_radio(1)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio3','value':'atopy','onchange':'dc_radio(1)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio4','value':'atopr','onchange':'dc_radio(1)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio5','value':'closed rfc top','onchange':'dc_radio(2)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio6','value':'hat','onchange':'dc_radio(2)'}),

$('

$('').attr({'type':'radio', 'name':'DC-radio','id':'DC-radio7','value':'subst:RMT','onchange':'dc_radio(2)','disabled':true}),

$('

),

$('

').append(

$('

$('').attr({'type':'text','name':'DC-e','id':'DC-e'})

),

$('

').append(

$('

$('').css({'float':'right','color':'indianred'}).text('Signature is automatically added if comment is added'),

$('