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 Tags: Reverted Mobile edit Mobile web edit |
||
Line 4: | Line 4: | ||
// Dodaj przycisk "Nominate for deletion" do paska narzędzi |
// Dodaj przycisk "Nominate for deletion" do paska narzędzi |
||
var nominateLink = mw.util.addPortletLink( |
var nominateLink = mw.util.addPortletLink( |
||
'p-tb', |
'p-tb', |
||
'#', |
'#', |
||
'Nominate for deletion', |
'Nominate for deletion', |
||
'ca-nominate-deletion', |
'ca-nominate-deletion', |
||
'Nominate this page for deletion' |
'Nominate this page for deletion' |
||
); |
); |
||
Line 21: | Line 21: | ||
// Tworzenie i otwarcie okna popup dla nominacji do usunięcia |
// Tworzenie i otwarcie okna popup dla nominacji do usunięcia |
||
function openDeletionPopup() { |
function openDeletionPopup() { |
||
// Tworzenie nakładki |
|||
const overlay = $('<div>').attr('id', 'deletion-popup-overlay').css({ |
const overlay = $('<div>').attr('id', 'deletion-popup-overlay').css({ |
||
'position': 'fixed', |
'position': 'fixed', |
||
Line 32: | Line 31: | ||
}).appendTo('body'); |
}).appendTo('body'); |
||
// Tworzenie okna popup |
|||
const popup = $('<div>').attr('id', 'deletion-popup').css({ |
const popup = $('<div>').attr('id', 'deletion-popup').css({ |
||
'width': '90%', |
'width': '90%', |
||
Line 45: | Line 43: | ||
}).appendTo(overlay); |
}).appendTo(overlay); |
||
// Przycisk zamknięcia popup |
|||
$('<span>').text('×').css({ |
$('<span>').text('×').css({ |
||
'position': 'absolute', |
'position': 'absolute', |
||
Line 55: | Line 52: | ||
}).on('click', closeDeletionPopup).appendTo(popup); |
}).on('click', closeDeletionPopup).appendTo(popup); |
||
// Tytuł okna |
|||
$('<h3>').text('Nominate for deletion').css({ |
$('<h3>').text('Nominate for deletion').css({ |
||
'font-size': '18px', |
'font-size': '18px', |
||
Line 61: | Line 57: | ||
}).appendTo(popup); |
}).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({ |
$('<p>').text('Before nominating, please read the deletion policy and guidelines on the Wikipedia:Requests for deletion page.').css({ |
||
'font-size': '14px', |
'font-size': '14px', |
||
Line 74: | Line 69: | ||
}).appendTo(popup); |
}).appendTo(popup); |
||
// Pole na krótki powód - poprawka do krawędzi dolnej |
|||
$('<label>').attr('for', 'deletion-short-reason').text('Short reason:').css({ |
$('<label>').attr('for', 'deletion-short-reason').text('Short reason:').css({ |
||
'display': 'block', |
'display': 'block', |
||
Line 89: | Line 83: | ||
'margin': '5px 0', |
'margin': '5px 0', |
||
'font-size': '14px', |
'font-size': '14px', |
||
'box-sizing': 'border-box' |
'box-sizing': 'border-box' |
||
'line-height': '1.5', // poprawka dla dolnej krawędzi |
|||
}).appendTo(popup); |
}).appendTo(popup); |
||
// Pole na szczegółowy powód |
|||
$('<label>').attr('for', 'deletion-detailed-reason').text('Detailed reason for discussion:').css({ |
$('<label>').attr('for', 'deletion-detailed-reason').text('Detailed reason for discussion:').css({ |
||
'display': 'block', |
'display': 'block', |
||
Line 109: | Line 101: | ||
}).appendTo(popup); |
}).appendTo(popup); |
||
// Checkbox |
// Checkbox i lista rozwijana Quick Delete |
||
const |
const quickDeleteCheckbox = $('<input>').attr({ |
||
'type': 'checkbox', |
'type': 'checkbox', |
||
'id': ' |
'id': 'quick-delete' |
||
}).css({ |
}).css({ |
||
'margin-right': '5px' |
'margin-right': '5px' |
||
}); |
}); |
||
$('<label>').attr('for', 'quick-delete').text('Quick Delete').css({ |
|||
'font-size': '14px' |
|||
$('<div>').append(policyCheckbox, policyLabel).css({ |
|||
}).prepend(quickDeleteCheckbox).appendTo(popup); |
|||
'margin-bottom': '15px' |
|||
$('<label>').attr('for', 'quick-delete-reason').text('Select reason:').css({ |
|||
'display': 'block', |
|||
'margin-top': '10px', |
|||
'font-size': '14px' |
|||
}).appendTo(popup); |
}).appendTo(popup); |
||
const quickDeleteReasonSelect = $('<select>').attr('id', 'quick-delete-reason').css({ |
|||
'width': '100%', |
|||
'padding': '6px', |
|||
'font-size': '14px', |
|||
'box-sizing': 'border-box' |
|||
}).appendTo(popup); |
|||
const reasons = { |
|||
'A1': 'Little/no meaning', |
|||
'A2': 'No content', |
|||
'A3': 'Transwikied', |
|||
'A4': 'Not notable', |
|||
'A5': 'Not in English', |
|||
'G1': 'Nonsense', |
|||
'G2': 'Test page', |
|||
'G3': 'Vandalism', |
|||
'G10': 'Attack page', |
|||
'G11': 'Advertising', |
|||
'G12': 'Copyright infringement' |
|||
}; |
|||
$.each(reasons, function(key, value) { |
|||
$('<option>').attr('value', key).text(key + ' - ' + value).appendTo(quickDeleteReasonSelect); |
|||
}); |
|||
// Przycisk wyślij |
|||
$('<button>').text('Submit nomination').css({ |
$('<button>').text('Submit nomination').css({ |
||
'width': '100%', |
'width': '100%', |
||
Line 136: | Line 155: | ||
const shortReason = shortReasonInput.val().trim(); |
const shortReason = shortReasonInput.val().trim(); |
||
const detailedReason = detailedReasonInput.val().trim(); |
const detailedReason = detailedReasonInput.val().trim(); |
||
const |
const quickDelete = quickDeleteCheckbox.is(':checked'); |
||
const quickDeleteReason = quickDeleteReasonSelect.val(); |
|||
initiateDeletionProcess(shortReason, detailedReason); |
|||
if (quickDelete) { |
|||
tagPageForQuickDeletion(quickDeleteReason); |
|||
} else { |
} else { |
||
initiateDeletionProcess(shortReason, detailedReason); |
|||
} |
} |
||
}).appendTo(popup); |
}).appendTo(popup); |
||
} |
} |
||
// Funkcja zamykająca popup |
|||
function closeDeletionPopup() { |
function closeDeletionPopup() { |
||
$('#deletion-popup-overlay').remove(); |
$('#deletion-popup-overlay').remove(); |
||
} |
} |
||
function tagPageForQuickDeletion(reason) { |
|||
// Funkcja inicjująca proces usunięcia |
|||
const tag = `{{QD|${reason}}}`; |
|||
new mw.Api().postWithToken('csrf', { |
|||
action: 'edit', |
|||
title: mw.config.get('wgPageName'), |
|||
prependtext: tag + '\n', |
|||
summary: `Quick Delete tag added: ${reason}`, |
|||
watchlist: 'watch', |
|||
}).done(function() { |
|||
alert('Quick Delete tag added.'); |
|||
}).fail(function() { |
|||
alert('Failed to add Quick Delete tag.'); |
|||
}); |
|||
} |
|||
function initiateDeletionProcess(shortReason, detailedReason) { |
function initiateDeletionProcess(shortReason, detailedReason) { |
||
tagPageForDeletion(shortReason); |
tagPageForDeletion(shortReason); |
||
Line 161: | Line 193: | ||
} |
} |
||
// Funkcja do oznaczania strony do usunięcia |
|||
function tagPageForDeletion(reason) { |
function tagPageForDeletion(reason) { |
||
const tag = `{{rfd|${reason}}}`; |
const tag = `{{rfd|${reason}}}`; |
||
const editSummary = 'Nominating for deletion ( |
const editSummary = 'Nominating for deletion (RfD)'; |
||
new mw.Api().postWithToken('csrf', { |
new mw.Api().postWithToken('csrf', { |
||
action: 'edit', |
action: 'edit', |
||
Line 175: | Line 205: | ||
alert('Page tagged for deletion.'); |
alert('Page tagged for deletion.'); |
||
}).fail(function() { |
}).fail(function() { |
||
alert('Failed to tag the page for deletion |
alert('Failed to tag the page for deletion.'); |
||
}); |
}); |
||
} |
} |
||
function createDiscussionPage(detailedReason) { |
|||
// Funkcja do tworzenia strony dyskusji o usunięciu |
|||
// Pseudokod funkcji tworzącej stronę dyskusji |
|||
function createDiscussionPage(reason) { |
|||
console.log('Creating discussion page with reason:', detailedReason); |
|||
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() { |
function addToDeletionList() { |
||
// Pseudokod funkcji dodającej stronę do listy usunięć |
|||
const deletionListTitle = 'Wikipedia:Requests for deletion/Current discussions'; |
|||
console.log('Adding to deletion list'); |
|||
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() { |
function notifyPageCreator() { |
||
// Pseudokod funkcji powiadamiającej twórcę strony |
|||
const creator = mw.config.get('wgPageContentModel') === 'wikitext' ? mw.config.get('wgPageCreator') : null; |
|||
console.log('Notifying page 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 these page creator. Please try again.'); |
|||
}); |
|||
} |
|||
} |
} |
||
})(); |
})(); |
Revision as of 18:42, 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
var nominateLink = mw.util.addPortletLink(
'p-tb',
'#',
'Nominate for deletion',
'ca-nominate-deletion',
'Nominate this page for deletion'
);
// Jeśli dodanie przycisku się powiodło, przypisz funkcję do obsługi kliknięcia
if (nominateLink) {
nominateLink.onclick = function(event) {
event.preventDefault();
openDeletionPopup();
};
}
// Tworzenie i otwarcie okna popup dla nominacji do usunięcia
function openDeletionPopup() {
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');
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);
$('<span>').text('×').css({
'position': 'absolute',
'top': '10px',
'right': '15px',
'cursor': 'pointer',
'font-size': '18px',
'font-weight': 'bold'
}).on('click', closeDeletionPopup).appendTo(popup);
$('<h3>').text('Nominate for deletion').css({
'font-size': '18px',
'margin-bottom': '10px'
}).appendTo(popup);
$('<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);
$('<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'
}).appendTo(popup);
$('<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 i lista rozwijana Quick Delete
const quickDeleteCheckbox = $('<input>').attr({
'type': 'checkbox',
'id': 'quick-delete'
}).css({
'margin-right': '5px'
});
$('<label>').attr('for', 'quick-delete').text('Quick Delete').css({
'font-size': '14px'
}).prepend(quickDeleteCheckbox).appendTo(popup);
$('<label>').attr('for', 'quick-delete-reason').text('Select reason:').css({
'display': 'block',
'margin-top': '10px',
'font-size': '14px'
}).appendTo(popup);
const quickDeleteReasonSelect = $('<select>').attr('id', 'quick-delete-reason').css({
'width': '100%',
'padding': '6px',
'font-size': '14px',
'box-sizing': 'border-box'
}).appendTo(popup);
const reasons = {
'A1': 'Little/no meaning',
'A2': 'No content',
'A3': 'Transwikied',
'A4': 'Not notable',
'A5': 'Not in English',
'G1': 'Nonsense',
'G2': 'Test page',
'G3': 'Vandalism',
'G10': 'Attack page',
'G11': 'Advertising',
'G12': 'Copyright infringement'
};
$.each(reasons, function(key, value) {
$('<option>').attr('value', key).text(key + ' - ' + value).appendTo(quickDeleteReasonSelect);
});
$('<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 quickDelete = quickDeleteCheckbox.is(':checked');
const quickDeleteReason = quickDeleteReasonSelect.val();
if (quickDelete) {
tagPageForQuickDeletion(quickDeleteReason);
} else {
initiateDeletionProcess(shortReason, detailedReason);
}
}).appendTo(popup);
}
function closeDeletionPopup() {
$('#deletion-popup-overlay').remove();
}
function tagPageForQuickDeletion(reason) {
const tag = `{{QD|${reason}}}`;
new mw.Api().postWithToken('csrf', {
action: 'edit',
title: mw.config.get('wgPageName'),
prependtext: tag + '\n',
summary: `Quick Delete tag added: ${reason}`,
watchlist: 'watch',
}).done(function() {
alert('Quick Delete tag added.');
}).fail(function() {
alert('Failed to add Quick Delete tag.');
});
}
function initiateDeletionProcess(shortReason, detailedReason) {
tagPageForDeletion(shortReason);
createDiscussionPage(detailedReason);
addToDeletionList();
notifyPageCreator();
closeDeletionPopup();
}
function tagPageForDeletion(reason) {
const tag = `{{rfd|${reason}}}`;
const editSummary = 'Nominating for deletion (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.');
});
}
function createDiscussionPage(detailedReason) {
// Pseudokod funkcji tworzącej stronę dyskusji
console.log('Creating discussion page with reason:', detailedReason);
}
function addToDeletionList() {
// Pseudokod funkcji dodającej stronę do listy usunięć
console.log('Adding to deletion list');
}
function notifyPageCreator() {
// Pseudokod funkcji powiadamiającej twórcę strony
console.log('Notifying page creator');
}
})();