User:BZPN/RfD.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary Tags: Mobile edit Mobile web edit |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
// <nowiki> |
|||
(function() { |
|||
(function($) { |
|||
if (mw.config.get('wgNamespaceNumber') < 0 || mw.config.get('wgIsArticle') === false) return; |
|||
// Główny obiekt skryptu |
|||
var QuickCloseRfD = {}; |
|||
// Dodaj przycisk "Nominate for deletion" do paska narzędzi |
|||
var nominateLink = mw.util.addPortletLink( |
|||
// Konfiguracja przestrzeni nazw |
|||
'p-tb', // Pasek narzędzi |
|||
const ALLOWED_NAMESPACES = ['Wikipedia:Requests for deletion']; |
|||
'#', // link docelowy |
|||
'Nominate for deletion', // Tekst przycisku |
|||
QuickCloseRfD.setup = function() { |
|||
'ca-nominate-deletion', // ID linku |
|||
// Sprawdzenie, czy jesteśmy na odpowiedniej stronie |
|||
'Nominate this page for deletion' // Podpowiedź tekstowa |
|||
var wgPageName = mw.config.get('wgPageName'); |
|||
); |
|||
var wgNamespaceNumber = mw.config.get('wgNamespaceNumber'); |
|||
// Jeśli dodanie przycisku się powiodło, przypisz funkcję do obsługi kliknięcia |
|||
if (ALLOWED_NAMESPACES.includes(wgPageName) || |
|||
if (nominateLink) { |
|||
ALLOWED_NAMESPACES.some(ns => wgPageName.startsWith(ns + '/'))) { |
|||
$('span.mw-editsection-bracket:first-child').each(function() { |
|||
openDeletionPopup(); |
|||
try { |
|||
// Pobieranie numeru sekcji |
|||
} |
|||
var sectionNumber = this.parentElement.childNodes[1].href |
|||
// === Wstaw ten fragment PRZED openDeletionPopup === |
|||
.match(/action=edit§ion=(\d+)/)[1]; |
|||
// Dodanie zakładki Quick Delete do popupu |
|||
// Dodawanie przycisku Quick Close |
|||
function addQuickDeleteTab(popup) { |
|||
$(this).after(' | '); |
|||
// Tworzenie zakładki QD i formularza |
|||
$(this).after( |
|||
const quickDeleteTab = $('<div>').attr('id', 'quick-delete-tab').css({ |
|||
$('<a href="javascript:void(0)" class="QuickCloseRfD-close" ' + |
|||
'display': 'none' // Domyślnie ukryty, widoczny po przełączeniu na zakładkę QD |
|||
'data-section="' + sectionNumber + '">Quick Close</a>') |
|||
}).appendTo(popup); |
|||
); |
|||
} catch(e) {} |
|||
$('<h3>').text('Quick Delete').css({ |
|||
}); |
|||
// Obsługa kliknięcia przycisku |
|||
}).appendTo(quickDeleteTab); |
|||
QuickCloseRfD.bindEvents(); |
|||
$('<p>').text('Choose a reason for quick deletion from the list below:').css({ |
|||
'font-size': '14px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(quickDeleteTab); |
|||
// Lista wyboru powodu QD |
|||
const quickDeleteSelect = $('<select>').attr('id', 'quick-delete-reason').css({ |
|||
'width': '100%', |
|||
'padding': '6px', |
|||
'font-size': '14px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(quickDeleteTab); |
|||
// Dodanie opcji do listy |
|||
const reasons = [ |
|||
{ value: 'A1', text: 'Little or no meaning' }, |
|||
{ value: 'A2', text: 'No content' }, |
|||
{ value: 'A3', text: 'Article is transwikied' }, |
|||
{ value: 'A4', text: 'Does not say why it is notable' }, |
|||
{ value: 'A5', text: 'Not in English' }, |
|||
{ value: 'A6', text: 'Hoax' }, |
|||
// Dodaj inne powody według potrzeb |
|||
]; |
|||
reasons.forEach(reason => { |
|||
$('<option>').attr('value', reason.value).text(`${reason.value} - ${reason.text}`).appendTo(quickDeleteSelect); |
|||
}); |
|||
// Przycisk zatwierdzenia QD |
|||
$('<button>').text('Submit Quick Delete').css({ |
|||
'width': '100%', |
|||
'padding': '10px', |
|||
'background-color': '#d9534f', |
|||
'color': '#fff', |
|||
'border': 'none', |
|||
'border-radius': '5px', |
|||
'cursor': 'pointer', |
|||
'font-size': '16px', |
|||
'margin-top': '10px' |
|||
}).on('click', function() { |
|||
const selectedReason = quickDeleteSelect.val(); |
|||
if (selectedReason) { |
|||
insertQuickDeleteTag(selectedReason); |
|||
} else { |
|||
alert('Please select a reason for quick deletion.'); |
|||
} |
} |
||
}; |
|||
}).appendTo(quickDeleteTab); |
|||
} |
|||
QuickCloseRfD.bindEvents = function() { |
|||
$('.QuickCloseRfD-close').click(function(e) { |
|||
// Funkcja wstawiająca tag QD na górę strony |
|||
var sectionNumber = $(this).data('section'); |
|||
function insertQuickDeleteTag(reason) { |
|||
QuickCloseRfD.showQuickCloseDialog(sectionNumber); |
|||
const tag = `{{QD|${reason}}}`; |
|||
const editSummary = `Tagging page for quick deletion (Reason: ${reason})`; |
|||
new mw.Api().postWithToken('csrf', { |
|||
action: 'edit', |
|||
title: mw.config.get('wgPageName'), |
|||
prependtext: tag + '\n', |
|||
summary: editSummary, |
|||
watchlist: 'watch', |
|||
}).done(function() { |
|||
alert('Page tagged for quick deletion.'); |
|||
}).fail(function() { |
|||
alert('Failed to tag the page for quick deletion. Please try again.'); |
|||
}); |
|||
} |
|||
// === Koniec fragmentu PRZED openDeletionPopup === |
|||
// Tworzenie i otwarcie okna popup dla nominacji do usunięcia |
|||
function openDeletionPopup() { |
|||
// Tworzenie nakładki |
|||
const overlay = $('<div>').attr('id', 'deletion-popup-overlay').css({ |
|||
'position': 'fixed', |
|||
'top': '0', |
|||
'left': '0', |
|||
'width': '100%', |
|||
'height': '100%', |
|||
'background-color': 'rgba(0, 0, 0, 0.5)', |
|||
'z-index': '1000', |
|||
}).appendTo('body'); |
|||
// Tworzenie okna popup |
|||
const popup = $('<div>').attr('id', 'deletion-popup').css({ |
|||
'width': '90%', |
|||
'max-width': '400px', |
|||
'margin': '10% auto', |
|||
'padding': '15px', |
|||
'background-color': '#fff', |
|||
'border-radius': '8px', |
|||
'box-shadow': '0 4px 8px rgba(0, 0, 0, 0.2)', |
|||
'text-align': 'left', |
|||
'position': 'relative' |
|||
}).appendTo(overlay); |
|||
// === Wstaw ten fragment NA POCZĄTKU openDeletionPopup === |
|||
// Dodaj przyciski do przełączania między zakładkami RfD i QD |
|||
$('<div>').css({ |
|||
'display': 'flex', |
|||
'justify-content': 'space-around', |
|||
'margin-bottom': '10px' |
|||
}).append( |
|||
$('<button>').text('Request for Deletion').css({ |
|||
'flex': '1', |
|||
'padding': '6px', |
|||
'font-size': '14px', |
|||
'border': 'none', |
|||
'background-color': '#0073e6', |
|||
'color': '#fff', |
|||
'cursor': 'pointer' |
|||
}).on('click', function() { |
|||
$('#request-deletion-tab').show(); |
|||
$('#quick-delete-tab').hide(); |
|||
}), |
|||
$('<button>').text('Quick Delete').css({ |
|||
'flex': '1', |
|||
'padding': '6px', |
|||
'font-size': '14px', |
|||
'border': 'none', |
|||
'background-color': '#d9534f', |
|||
'color': '#fff', |
|||
'cursor': 'pointer' |
|||
}).on('click', function() { |
|||
$('#quick-delete-tab').show(); |
|||
$('#request-deletion-tab').hide(); |
|||
}) |
|||
).prependTo(popup); |
|||
// Dodaj zakładkę Quick Delete do popupu |
|||
addQuickDeleteTab(popup); |
|||
// === Koniec fragmentu NA POCZĄTKU openDeletionPopup === |
|||
// Przycisk zamknięcia popup |
|||
$('<span>').text('×').css({ |
|||
'position': 'absolute', |
|||
'top': '10px', |
|||
'right': '15px', |
|||
'cursor': 'pointer', |
|||
'font-size': '18px', |
|||
'font-weight': 'bold' |
|||
}).on('click', closeDeletionPopup).appendTo(popup); |
|||
// Tytuł okna |
|||
$('<h3>').text('Nominate for deletion').css({ |
|||
'font-size': '18px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(popup); |
|||
// Informacja o zasadach RfD |
|||
$('<p>').text('Before nominating, please read the deletion policy and guidelines on the Wikipedia:Requests for deletion page.').css({ |
|||
'font-size': '14px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(popup); |
|||
$('<a>').attr('href', '/wiki/Wikipedia:Requests_for_deletion').text('Go to Wikipedia:Requests for deletion').css({ |
|||
'font-size': '14px', |
|||
'color': '#0073e6', |
|||
'text-decoration': 'underline', |
|||
'display': 'block', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(popup); |
|||
// Pole na krótki powód - poprawka do krawędzi dolnej |
|||
$('<label>').attr('for', 'deletion-short-reason').text('Short reason:').css({ |
|||
'display': 'block', |
|||
'margin-top': '10px', |
|||
'font-size': '14px' |
|||
}).appendTo(popup); |
|||
const shortReasonInput = $('<input>').attr({ |
|||
'type': 'text', |
|||
'id': 'deletion-short-reason', |
|||
'placeholder': 'Enter short reason...' |
|||
}).css({ |
|||
'width': '100%', |
|||
'padding': '6px', |
|||
'margin': '5px 0', |
|||
'font-size': '14px', |
|||
'box-sizing': 'border-box', |
|||
'line-height': '1.5', // poprawka dla dolnej krawędzi |
|||
}).appendTo(popup); |
|||
// Pole na szczegółowy powód |
|||
$('<label>').attr('for', 'deletion-detailed-reason').text('Detailed reason for discussion:').css({ |
|||
'display': 'block', |
|||
'margin-top': '10px' |
|||
}).appendTo(popup); |
|||
const detailedReasonInput = $('<textarea>').attr({ |
|||
'id': 'deletion-detailed-reason', |
|||
'placeholder': 'Detailed reason...' |
|||
}).css({ |
|||
'width': '100%', |
|||
'padding': '6px', |
|||
'font-size': '14px', |
|||
'height': '80px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(popup); |
|||
// Checkbox potwierdzenia zapoznania się z polityką |
|||
const policyCheckbox = $('<input>').attr({ |
|||
'type': 'checkbox', |
|||
'id': 'policy-confirmation' |
|||
}).css({ |
|||
'margin-right': '5px' |
|||
}); |
}); |
||
}; |
|||
const policyLabel = $('<label>').attr('for', 'policy-confirmation').text('I have read and understand the deletion policy.'); |
|||
$('<div>').append(policyCheckbox, policyLabel).css({ |
|||
QuickCloseRfD.showQuickCloseDialog = function(sectionNumber) { |
|||
'margin-bottom': '15px' |
|||
// Prosty popup do zamykania dyskusji |
|||
var $dialog = $('<div class="quick-close-dialog">' + |
|||
'<h3>Close Deletion Request</h3>' + |
|||
'<div>' + |
|||
'<label>Outcome:</label>' + |
|||
// Przycisk wyślij |
|||
'<select id="quick-close-outcome">' + |
|||
$('<button>').text('Submit nomination').css({ |
|||
' |
'<option value="{{delete}}">Delete</option>' + |
||
' |
'<option value="{{keep}}">Keep</option>' + |
||
'<option value="{{merge}}">Merge</option>' + |
|||
'background-color': '#0073e6', |
|||
' |
'<option value="{{redirect}}">Redirect</option>' + |
||
'</select>' + |
|||
' |
'</div>' + |
||
' |
'<div>' + |
||
' |
'<label>Additional Comments (optional):</label>' + |
||
'<textarea id="quick-close-comment" rows="3"></textarea>' + |
|||
}).on('click', function() { |
|||
'</div>' + |
|||
const shortReason = shortReasonInput.val().trim(); |
|||
(mw.config.get('wgUserGroups').includes('sysop') ? |
|||
const detailedReason = detailedReasonInput.val().trim(); |
|||
'<div>' + |
|||
'<label><input type="checkbox" id="quick-close-delete-page"> Delete this page</label>' + |
|||
if (shortReason && detailedReason && policyConfirmed) { |
|||
'</div>' : '') + |
|||
'<div class="quick-close-buttons">' + |
|||
} else if (!policyConfirmed) { |
|||
'<button id="quick-close-confirm">Close Discussion</button>' + |
|||
'<button id="quick-close-cancel">Cancel</button>' + |
|||
} else { |
|||
'</div>' + |
|||
alert('Please provide both a short and detailed reason.'); |
|||
'</div>'); |
|||
// Dodanie arkusza stylów dla dialogu |
|||
} |
|||
$('head').append(` |
|||
<style> |
|||
// Funkcja zamykająca popup |
|||
.quick-close-dialog { |
|||
function closeDeletionPopup() { |
|||
background: white; |
|||
$('#deletion-popup-overlay').remove(); |
|||
border: 1px solid #a2a9b1; |
|||
} |
|||
border-radius: 5px; |
|||
padding: 15px; |
|||
// Funkcja inicjująca proces usunięcia |
|||
width: 400px; |
|||
function initiateDeletionProcess(shortReason, detailedReason) { |
|||
margin: 0 auto; |
|||
position: fixed; |
|||
createDiscussionPage(detailedReason); |
|||
top: 50%; |
|||
left: 50%; |
|||
transform: translate(-50%, -50%); |
|||
z-index: 1000; |
|||
} |
|||
box-shadow: 0 4px 6px rgba(0,0,0,0.1); |
|||
} |
|||
.quick-close-dialog h3 { |
|||
function tagPageForDeletion(reason) { |
|||
margin-top: 0; |
|||
border-bottom: 1px solid #eaecf0; |
|||
const editSummary = 'Nominating for deletion ([[User:BZPN/RfD.js|RfD]])'; |
|||
padding-bottom: 10px; |
|||
} |
|||
new mw.Api().postWithToken('csrf', { |
|||
.quick-close-dialog div { |
|||
margin-bottom: 10px; |
|||
} |
|||
.quick-close-dialog label { |
|||
display: block; |
|||
margin-bottom: 5px; |
|||
}).done(function() { |
|||
} |
|||
.quick-close-dialog select, |
|||
.quick-close-dialog textarea { |
|||
alert('Failed to tag the page for deletion. Please try again.'); |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
} |
|||
.quick-close-buttons { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
.quick-close-buttons button { |
|||
padding: 5px 10px; |
|||
} |
|||
</style> |
|||
`); |
|||
$('body').append($dialog); |
|||
// Zamykanie dialogu |
|||
$('#quick-close-cancel').click(function() { |
|||
$dialog.remove(); |
|||
}); |
}); |
||
// Potwierdzenie zamknięcia |
|||
$('#quick-close-confirm').click(function() { |
|||
// Funkcja do tworzenia strony dyskusji o usunięciu |
|||
var outcome = $('#quick-close-outcome').val(); |
|||
function createDiscussionPage(reason) { |
|||
var comment = $('#quick-close-comment').val() || 'The outcome of this discussion is: '; |
|||
const discussionPageTitle = `Wikipedia:Requests for deletion/Requests/2024/${mw.config.get('wgPageName')}`; |
|||
var deleteRequest = $('#quick-close-delete-page:checked').length > 0; |
|||
const discussionContent = `{{subst:RfD/Preload/Template|deletereason=${reason}}}\n\n==Deletion discussion==\nMore detailed reason why this page should be deleted:\n* ${reason}`; |
|||
QuickCloseRfD.closeDiscussion( |
|||
new mw.Api().postWithToken('csrf', { |
|||
sectionNumber, |
|||
outcome, |
|||
comment, |
|||
deleteRequest |
|||
); |
|||
$dialog.remove(); |
|||
}).fail(function() { |
|||
alert('Failed to create deletion discussion page. Please try again.'); |
|||
}); |
}); |
||
} |
}; |
||
QuickCloseRfD.closeDiscussion = function(sectionNumber, outcome, comment, deleteRequest) { |
|||
// Funkcja dodająca dyskusję do listy |
|||
var pageTitle = mw.config.get('wgPageName'); |
|||
function addToDeletionList() { |
|||
var pageName = pageTitle.split('/').pop(); |
|||
const deletionListTitle = 'Wikipedia:Requests for deletion/Current discussions'; |
|||
const discussionLink = `{{Wikipedia:Requests for deletion/Requests/2024/${mw.config.get('wgPageName')}}}`; |
|||
new mw.Api().get({ |
|||
action: 'parse', |
|||
new mw.Api().edit(deletionListTitle, function(revision) { |
|||
page: pageTitle, |
|||
prop: 'wikitext', |
|||
section: sectionNumber |
|||
summary: 'Adding new deletion discussion ([[User:BZPN/RfD.js|RfD]])', |
|||
}).done(function(result) { |
|||
watchlist: 'watch', |
|||
var wikitext = result.parse.wikitext['*']; |
|||
// Dodanie zamknięcia dyskusji |
|||
var closingText = |
|||
}).fail(function() { |
|||
'<div class="boilerplate" style="background-color: #EDEAFF; padding: 0px 10px 0px 10px; border: 1px solid #8779DD;">\n' + |
|||
alert('Failed to add the discussion to the deletion list. Please try again.'); |
|||
':\'\'The following discussion is closed. <span style="color:red">\'\'\'Please do not modify it.\'\'\'\</span> Subsequent comments should be made on the appropriate discussion page. No further changes should be made to this discussion.\'\'\n' + |
|||
}); |
|||
'----\n' + |
|||
} |
|||
outcome + ' - ~~~~\n\n' + |
|||
comment + ' ~~~~\n' + |
|||
// Funkcja powiadamiająca autora strony |
|||
'</div>'; |
|||
function notifyPageCreator() { |
|||
const creator = mw.config.get('wgPageContentModel') === 'wikitext' ? mw.config.get('wgPageCreator') : null; |
|||
wikitext += '\n' + closingText; |
|||
if (creator) { |
|||
const notification = `{{subst:RFDNote|${mw.config.get('wgPageName')}}} ~~"+"~~`; |
|||
// Edycja strony |
|||
new mw.Api().postWithEditToken({ |
|||
action: 'edit', |
action: 'edit', |
||
title: |
title: pageTitle, |
||
section: sectionNumber, |
|||
summary: 'Notifying page creator about deletion nomination ([[User:BZPN/RfD.js|RfD]])', |
|||
text: wikitext, |
|||
summary: 'Closing deletion discussion for ' + pageName |
|||
}).done(function() { |
}).done(function() { |
||
// Opcjonalne usunięcie strony dla administratorów |
|||
if (deleteRequest) { |
|||
new mw.Api().postWithEditToken({ |
|||
action: 'delete', |
|||
title: 'Wikipedia:Requests for deletion/Requests/2025/' + pageName, |
|||
reason: 'Deletion discussion completed' |
|||
}).done(function() { |
|||
location.reload(); |
|||
}); |
|||
} else { |
|||
location.reload(); |
|||
} |
|||
}); |
}); |
||
} |
}); |
||
} |
}; |
||
})(); |
|||
// Ładowanie skryptu |
|||
mw.loader.using('mediawiki.api', function() { |
|||
$(document).ready(function() { |
|||
QuickCloseRfD.setup(); |
|||
}); |
|||
}); |
|||
})(jQuery); |
|||
// </nowiki> |
Latest revision as of 20:25, 25 March 2025
// <nowiki>
(function($) {
// Główny obiekt skryptu
var QuickCloseRfD = {};
// Konfiguracja przestrzeni nazw
const ALLOWED_NAMESPACES = ['Wikipedia:Requests for deletion'];
QuickCloseRfD.setup = function() {
// Sprawdzenie, czy jesteśmy na odpowiedniej stronie
var wgPageName = mw.config.get('wgPageName');
var wgNamespaceNumber = mw.config.get('wgNamespaceNumber');
if (ALLOWED_NAMESPACES.includes(wgPageName) ||
ALLOWED_NAMESPACES.some(ns => wgPageName.startsWith(ns + '/'))) {
$('span.mw-editsection-bracket:first-child').each(function() {
try {
// Pobieranie numeru sekcji
var sectionNumber = this.parentElement.childNodes[1].href
.match(/action=edit§ion=(\d+)/)[1];
// Dodawanie przycisku Quick Close
$(this).after(' | ');
$(this).after(
$('<a href="javascript:void(0)" class="QuickCloseRfD-close" ' +
'data-section="' + sectionNumber + '">Quick Close</a>')
);
} catch(e) {}
});
// Obsługa kliknięcia przycisku
QuickCloseRfD.bindEvents();
}
};
QuickCloseRfD.bindEvents = function() {
$('.QuickCloseRfD-close').click(function(e) {
var sectionNumber = $(this).data('section');
QuickCloseRfD.showQuickCloseDialog(sectionNumber);
});
};
QuickCloseRfD.showQuickCloseDialog = function(sectionNumber) {
// Prosty popup do zamykania dyskusji
var $dialog = $('<div class="quick-close-dialog">' +
'<h3>Close Deletion Request</h3>' +
'<div>' +
'<label>Outcome:</label>' +
'<select id="quick-close-outcome">' +
'<option value="{{delete}}">Delete</option>' +
'<option value="{{keep}}">Keep</option>' +
'<option value="{{merge}}">Merge</option>' +
'<option value="{{redirect}}">Redirect</option>' +
'</select>' +
'</div>' +
'<div>' +
'<label>Additional Comments (optional):</label>' +
'<textarea id="quick-close-comment" rows="3"></textarea>' +
'</div>' +
(mw.config.get('wgUserGroups').includes('sysop') ?
'<div>' +
'<label><input type="checkbox" id="quick-close-delete-page"> Delete this page</label>' +
'</div>' : '') +
'<div class="quick-close-buttons">' +
'<button id="quick-close-confirm">Close Discussion</button>' +
'<button id="quick-close-cancel">Cancel</button>' +
'</div>' +
'</div>');
// Dodanie arkusza stylów dla dialogu
$('head').append(`
<style>
.quick-close-dialog {
background: white;
border: 1px solid #a2a9b1;
border-radius: 5px;
padding: 15px;
width: 400px;
margin: 0 auto;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 1000;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.quick-close-dialog h3 {
margin-top: 0;
border-bottom: 1px solid #eaecf0;
padding-bottom: 10px;
}
.quick-close-dialog div {
margin-bottom: 10px;
}
.quick-close-dialog label {
display: block;
margin-bottom: 5px;
}
.quick-close-dialog select,
.quick-close-dialog textarea {
width: 100%;
box-sizing: border-box;
}
.quick-close-buttons {
display: flex;
justify-content: space-between;
}
.quick-close-buttons button {
padding: 5px 10px;
}
</style>
`);
$('body').append($dialog);
// Zamykanie dialogu
$('#quick-close-cancel').click(function() {
$dialog.remove();
});
// Potwierdzenie zamknięcia
$('#quick-close-confirm').click(function() {
var outcome = $('#quick-close-outcome').val();
var comment = $('#quick-close-comment').val() || 'The outcome of this discussion is: ';
var deleteRequest = $('#quick-close-delete-page:checked').length > 0;
QuickCloseRfD.closeDiscussion(
sectionNumber,
outcome,
comment,
deleteRequest
);
$dialog.remove();
});
};
QuickCloseRfD.closeDiscussion = function(sectionNumber, outcome, comment, deleteRequest) {
var pageTitle = mw.config.get('wgPageName');
var pageName = pageTitle.split('/').pop();
new mw.Api().get({
action: 'parse',
page: pageTitle,
prop: 'wikitext',
section: sectionNumber
}).done(function(result) {
var wikitext = result.parse.wikitext['*'];
// Dodanie zamknięcia dyskusji
var closingText =
'<div class="boilerplate" style="background-color: #EDEAFF; padding: 0px 10px 0px 10px; border: 1px solid #8779DD;">\n' +
':\'\'The following discussion is closed. <span style="color:red">\'\'\'Please do not modify it.\'\'\'\</span> Subsequent comments should be made on the appropriate discussion page. No further changes should be made to this discussion.\'\'\n' +
'----\n' +
outcome + ' - ~~~~\n\n' +
comment + ' ~~~~\n' +
'</div>';
wikitext += '\n' + closingText;
// Edycja strony
new mw.Api().postWithEditToken({
action: 'edit',
title: pageTitle,
section: sectionNumber,
text: wikitext,
summary: 'Closing deletion discussion for ' + pageName
}).done(function() {
// Opcjonalne usunięcie strony dla administratorów
if (deleteRequest) {
new mw.Api().postWithEditToken({
action: 'delete',
title: 'Wikipedia:Requests for deletion/Requests/2025/' + pageName,
reason: 'Deletion discussion completed'
}).done(function() {
location.reload();
});
} else {
location.reload();
}
});
});
};
// Ładowanie skryptu
mw.loader.using('mediawiki.api', function() {
$(document).ready(function() {
QuickCloseRfD.setup();
});
});
})(jQuery);
// </nowiki>