User:BZPN/RfD.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary Tags: Reverted Mobile edit Mobile web edit |
Replaced content with "Nothing here" Tags: Replaced Mobile edit Mobile web edit |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Nothing here |
|||
(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'); |
|||
} |
|||
})(); |