User:Euphoria/common.js: Difference between revisions

From Test Wiki
Content deleted Content added
mw.notify
fix
Line 82: Line 82:
if (!link.length) {
if (!link.length) {
mw.notify('Cannot find target article link!', {title: 'VfDcloser', type: 'error'});
mw.notify('Cannot find target article link!', {title: 'VfDcloser', type: 'error'});
location.reload();
return;
return;
}
}
const targetPage = link.attr('title');
const targetPage = link.attr('title') || link.text().trim();
if (!targetPage) {
mw.notify('Cannot determine target page title!', {title: 'VfDcloser', type: 'error'});
return;
}


if (actionObj.name === 'delete') {
if (actionObj.name === 'delete') {
// Delete target article and talk page
// Delete target article
api.postWithToken('csrf', {action: 'delete', title: targetPage, reason: '[[' + mw.config.get('wgPageName') + ']]'})
api.postWithToken('csrf', {action: 'delete', title: targetPage, reason: '[[' + mw.config.get('wgPageName') + ']]'})
.done(() => {
.done(() => {
const talkPage = 'Talk:' + targetPage;
const talkPage = 'Talk:' + targetPage;

api.postWithToken('csrf', {action: 'delete', title: talkPage, reason: 'Parent page deleted via VfD'})
.done(() => {
// Check if talk page exists before deletion
mw.notify('Discussion closed and "' + targetPage + '" deleted with talk page.', {title: 'VfDcloser', type: 'success'});
api.get({action: 'query', titles: talkPage, format: 'json'}).done(data => {
location.reload();
const talkPages = data.query.pages;
}).fail(err => mw.notify('Error deleting talk page: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));
const talkId = Object.keys(talkPages)[0];

}).fail(err => mw.notify('Error deleting page: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));
if (talkId !== "-1") {
api.postWithToken('csrf', {action: 'delete', title: talkPage, reason: 'Parent page deleted via VfD'})
.done(() => {
mw.notify('Discussion closed. Article and talk page deleted.', {title: 'VfDcloser', type: 'success'});
location.reload();
}).fail(err => mw.notify('Error deleting talk page: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));
} else {
mw.notify('Discussion closed. Article deleted. No talk page found.', {title: 'VfDcloser', type: 'success'});
location.reload();
}
});
}).fail(err => mw.notify('Error deleting article: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));
} else {
} else {
// Keep / No consensus: update target and talk page
// Keep / No consensus: update target and talk page
Line 111: Line 126:
const articleId = Object.keys(articlePages)[0];
const articleId = Object.keys(articlePages)[0];
let articleContent = articlePages[articleId].revisions[0].slots.main['*'];
let articleContent = articlePages[articleId].revisions[0].slots.main['*'];

articleContent = articleContent.replace(/\{\{vfd-new\}\}/gi, '').trim();
articleContent = articleContent.replace(/\{\{vfd-new\}\}/gi, '').trim();


Line 147: Line 161:
minor: true
minor: true
}).done(() => {
}).done(() => {
mw.notify('Discussion closed and "' + targetPage + '" updated. Talk page updated.', {title: 'VfDcloser', type: 'success'});
mw.notify('Discussion closed. Article and talk page updated.', {title: 'VfDcloser', type: 'success'});
location.reload();
location.reload();
}).fail(err => mw.notify('Error editing talk page: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));
}).fail(err => mw.notify('Error editing talk page: ' + JSON.stringify(err), {title: 'VfDcloser', type: 'error'}));