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 |
||
Line 32: | Line 32: | ||
// Tworzenie okna popup |
// Tworzenie okna popup |
||
const popup = $('<div>').attr('id', 'deletion-popup').css({ |
const popup = $('<div>').attr('id', 'deletion-popup').css({ |
||
'width': ' |
'width': '90%', |
||
'max-width': '400px', |
|||
'margin': '10% auto', |
'margin': '10% auto', |
||
'padding': ' |
'padding': '15px', |
||
'background-color': '#fff', |
'background-color': '#fff', |
||
'border-radius': '8px', |
'border-radius': '8px', |
||
Line 53: | Line 54: | ||
// Tytuł okna |
// Tytuł okna |
||
$('<h3>').text('Nominate for deletion'). |
$('<h3>').text('Nominate for deletion').css({ |
||
'font-size': '18px', |
|||
'margin-bottom': '10px' |
|||
}).appendTo(popup); |
|||
// Informacja o zasadach RfD |
// Informacja o zasadach RfD |
||
Line 76: | Line 80: | ||
'type': 'text', |
'type': 'text', |
||
'id': 'deletion-short-reason', |
'id': 'deletion-short-reason', |
||
'placeholder': ' |
'placeholder': 'Brief reason...' |
||
}).css({ |
}).css({ |
||
'width': '100%', |
'width': '100%', |
||
'padding': '6px', |
'padding': '6px', |
||
'font-size': '14px', |
|||
'margin-bottom': '10px' |
'margin-bottom': '10px' |
||
}).appendTo(popup); |
}).appendTo(popup); |
||
Line 90: | Line 95: | ||
const detailedReasonInput = $('<textarea>').attr({ |
const detailedReasonInput = $('<textarea>').attr({ |
||
'id': 'deletion-detailed-reason', |
'id': 'deletion-detailed-reason', |
||
'placeholder': ' |
'placeholder': 'Detailed reason...' |
||
}).css({ |
}).css({ |
||
'width': '100%', |
'width': '100%', |
||
'padding': '6px', |
'padding': '6px', |
||
'font-size': '14px', |
|||
'height': '80px', |
'height': '80px', |
||
'margin-bottom': '10px' |
'margin-bottom': '10px' |
||
Line 118: | Line 124: | ||
'border': 'none', |
'border': 'none', |
||
'border-radius': '5px', |
'border-radius': '5px', |
||
'cursor': 'pointer' |
'cursor': 'pointer', |
||
'font-size': '16px' |
|||
}).on('click', function() { |
}).on('click', function() { |
||
const shortReason = shortReasonInput.val().trim(); |
const shortReason = shortReasonInput.val().trim(); |
||
Line 208: | Line 215: | ||
new mw.Api().postWithToken('csrf', { |
new mw.Api().postWithToken('csrf', { |
||
action: 'edit', |
action: 'edit', |
||
title: `User talk:${creator}`, |
title: `User talk:${creator}`, appendtext: '\n' + notification, |
||
appendtext: '\n' + notification, |
|||
summary: 'Notifying page creator about deletion nomination ([[User:BZPN/RfD.js|RfD]])', |
summary: 'Notifying page creator about deletion nomination ([[User:BZPN/RfD.js|RfD]])', |
||
watchlist: 'watch', |
watchlist: 'watch', |
Revision as of 13:47, 1 November 2024
(function() {
if (mw.config.get('wgNamespaceNumber') < 0 || mw.config.get('wgIsArticle') === false) return;
// Dodaj przycisk "Nominate for deletion" do paska narzędzi
mw.util.addPortletLink(
'p-tb', // Pasek narzędzi
'#',
'Nominate for deletion',
'ca-nominate-deletion',
'Nominate this page for deletion'
);
// Funkcja wywoływana po kliknięciu przycisku nominacji do usunięcia
$('#ca-nominate-deletion').on('click', function(e) {
e.preventDefault();
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);
// 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
$('<label>').attr('for', 'deletion-short-reason').text('Short reason:').css({
'display': 'block',
'margin-top': '10px'
}).appendTo(popup);
const shortReasonInput = $('<input>').attr({
'type': 'text',
'id': 'deletion-short-reason',
'placeholder': 'Brief reason...'
}).css({
'width': '100%',
'padding': '6px',
'font-size': '14px',
'margin-bottom': '10px'
}).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({
'margin-bottom': '15px'
}).appendTo(popup);
// Przycisk wyślij
$('<button>').text('Submit nomination').css({
'width': '100%',
'padding': '10px',
'background-color': '#0073e6',
'color': '#fff',
'border': 'none',
'border-radius': '5px',
'cursor': 'pointer',
'font-size': '16px'
}).on('click', function() {
const shortReason = shortReasonInput.val().trim();
const detailedReason = detailedReasonInput.val().trim();
const policyConfirmed = policyCheckbox.is(':checked');
if (shortReason && detailedReason && policyConfirmed) {
initiateDeletionProcess(shortReason, detailedReason);
} else if (!policyConfirmed) {
alert('Please confirm you have read the deletion policy.');
} else {
alert('Please provide both a short and detailed reason.');
}
}).appendTo(popup);
}
// Funkcja zamykająca popup
function closeDeletionPopup() {
$('#deletion-popup-overlay').remove();
}
// Funkcja inicjująca proces usunięcia
function initiateDeletionProcess(shortReason, detailedReason) {
tagPageForDeletion(shortReason);
createDiscussionPage(detailedReason);
addToDeletionList();
notifyPageCreator();
closeDeletionPopup();
}
// Funkcja do oznaczania strony do usunięcia
function tagPageForDeletion(reason) {
const tag = `{{rfd|${reason}}}`;
const editSummary = 'Nominating for deletion ([[User:BZPN/RfD.js|RfD]])';
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 deletion.');
}).fail(function() {
alert('Failed to tag the page for deletion. Please try again.');
});
}
// Funkcja do tworzenia strony dyskusji o usunięciu
function createDiscussionPage(reason) {
const discussionPageTitle = `Wikipedia:Requests for deletion/Requests/2024/${mw.config.get('wgPageName')}`;
const discussionContent = `{{subst:RfD/Preload/Template|deletereason=${reason}}}\n\n==Deletion discussion==\nMore detailed reason why this page should be deleted:\n* ${reason}`;
new mw.Api().postWithToken('csrf', {
action: 'edit',
title: discussionPageTitle,
text: discussionContent,
summary: 'Starting deletion discussion ([[User:BZPN/RfD.js|RfD]])',
watchlist: 'watch',
}).done(function() {
alert('Deletion discussion page created.');
}).fail(function() {
alert('Failed to create deletion discussion page. Please try again.');
});
}
// Funkcja dodająca dyskusję do listy
function addToDeletionList() {
const deletionListTitle = 'Wikipedia:Requests for deletion/Current discussions';
const discussionLink = `{{Wikipedia:Requests for deletion/Requests/2024/${mw.config.get('wgPageName')}}}`;
new mw.Api().edit(deletionListTitle, function(revision) {
return {
text: discussionLink + '\n' + revision.content,
summary: 'Adding new deletion discussion ([[User:BZPN/RfD.js|RfD]])',
watchlist: 'watch',
};
}).done(function() {
alert('Deletion discussion added to the list.');
}).fail(function() {
alert('Failed to add the discussion to the deletion list. Please try again.');
});
}
// Funkcja powiadamiająca autora strony
function notifyPageCreator() {
const creator = mw.config.get('wgPageContentModel') === 'wikitext' ? mw.config.get('wgPageCreator') : null;
if (creator) {
const notification = `{{subst:RFDNote|${mw.config.get('wgPageName')}}} ~~"+"~~`;
new mw.Api().postWithToken('csrf', {
action: 'edit',
title: `User talk:${creator}`, appendtext: '\n' + notification,
summary: 'Notifying page creator about deletion nomination ([[User:BZPN/RfD.js|RfD]])',
watchlist: 'watch',
}).done(function() {
alert('Page creator notified.');
}).fail(function() {
alert('Failed to notify the page creator. Please try again.');
});
}
}
})();