User:BZPN/Zgłaszarka.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
Created page with "// Dodanie przycisku "Zgłoś" obok edycji na stronie "Ostatnie zmiany" oraz w podglądzie zmian $(function () { // Sprawdź, czy użytkownik jest zalogowany i w przestrzeni nazw "Specjalna" if (mw.config.get('wgNamespaceNumber') === -1 && (mw.config.get('wgTitle') === 'Ostatnie_zmiany' || mw.config.get('wgAction') === 'compare')) { // Funkcja dodająca przycisk Zgłoś function dodajPrzyciskZglos() { // Dodajemy przyciski obo..." |
No edit summary |
||
Line 1: | Line 1: | ||
mw.loader.using(['mediawiki.api', 'oojs-ui', 'mediawiki.util']).done(function () { |
|||
// Dodanie przycisku "Zgłoś" obok edycji na stronie "Ostatnie zmiany" oraz w podglądzie zmian |
|||
$(function () { |
|||
// Sprawdź, czy użytkownik jest zalogowany i w przestrzeni nazw "Specjalna" |
|||
if (mw.config.get('wgNamespaceNumber') === -1 && (mw.config.get('wgTitle') === 'Ostatnie_zmiany' || mw.config.get('wgAction') === 'compare')) { |
|||
// Funkcja dodająca przycisk Zgłoś |
|||
function dodajPrzyciskZglos() { |
|||
// Dodajemy przyciski obok linków do edycji |
|||
$('.mw-changeslist-links').each(function () { |
|||
var diffLink = $(this).find('a:contains("porównaj")').attr('href'); |
|||
var diffNumber = diffLink ? new URL(diffLink, window.location.origin).searchParams.get('diff') : null; |
|||
if (diffNumber) { |
|||
$(this).append(' | <a href="#" class="zglos" data-diff="' + diffNumber + '">Zgłoś</a>'); |
|||
} |
|||
}); |
|||
} |
|||
// Funkcja dodająca przycisk zgłoszenia w odpowiednich miejscach |
|||
function addReportButton() { |
|||
// 1. Ostatnie zmiany |
|||
var uzasadnienie = prompt('Podaj uzasadnienie zgłoszenia:'); |
|||
$('li.mw-changeslist-line').each(function () { |
|||
if (uzasadnienie) { |
|||
var $link = $(this).find('.mw-changeslist-diff'); |
|||
trescZgloszenia += '[[Specjalna:Diff/' + diffNumber + '|diff ' + diffNumber + ']] - ' + uzasadnienie + '\n'; |
|||
trescZgloszenia += 'Zgłasza: ' + mw.config.get('wgUserName') + ' [[User:BZPN|BZPN]] ([[User talk:BZPN|talk]]) 19:50, 4 October 2024 (UTC)\n'; |
|||
// Dodajemy przycisk (zgłoś) tylko raz |
|||
if ($link.siblings('.pt-report').length === 0) { |
|||
var diffUrl = $link.attr('href'); |
|||
var diffNumber = diffUrl.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji |
|||
title: 'Wikipedia:Prośby do administratorów', |
|||
appendtext: '\n' + trescZgloszenia, |
|||
var $button = $('<a>') |
|||
.attr('href', '#') |
|||
.text('(zgłoś)') |
|||
.addClass('pt-report') |
|||
.css({ 'margin-left': '10px', 'cursor': 'pointer' }); |
|||
alert('Wystąpił błąd podczas wysyłania zgłoszenia.'); |
|||
$link.after($button); |
|||
// Obsługa kliknięcia przycisku |
|||
$button.click(function (e) { |
|||
e.preventDefault(); |
|||
showReportPopup(diffNumber); |
|||
}); |
|||
} |
|||
}); |
|||
// 2. Podgląd porównywania zmian |
|||
if (mw.config.get('wgDiffOldId') && mw.config.get('wgDiffNewId')) { |
|||
var diffNumber = mw.config.get('wgDiffOldId'); |
|||
var $diffHeader = $('#mw-diff-ntitle1'); |
|||
// Dodajemy przycisk (zgłoś) tylko raz |
|||
if ($diffHeader.find('.pt-report').length === 0) { |
|||
var $button = $('<a>') |
|||
.attr('href', '#') |
|||
.text('(zgłoś)') |
|||
.addClass('pt-report') |
|||
.css({ 'margin-left': '10px', 'cursor': 'pointer' }); |
|||
$diffHeader.append($button); |
|||
// Obsługa kliknięcia przycisku |
|||
$button.click(function (e) { |
|||
e.preventDefault(); |
|||
showReportPopup(diffNumber); |
|||
}); |
}); |
||
} |
} |
||
} |
} |
||
} |
|||
// Funkcja wyświetlająca popup do zgłoszenia |
|||
// Dodanie przycisków po załadowaniu strony |
|||
function showReportPopup(diffNumber) { |
|||
dodajPrzyciskZglos(); |
|||
var dialog = new OO.ui.Dialog({ |
|||
title: 'Zgłoś edycję', |
|||
content: [ |
|||
new OO.ui.LabelWidget({ label: 'Wpisz uzasadnienie zgłoszenia:' }), |
|||
new OO.ui.TextInputWidget({ multiline: true, placeholder: 'Tutaj wpisz uzasadnienie' }) |
|||
], |
|||
actions: [ |
|||
{ action: 'save', label: 'Zgłoś', flags: 'primary' }, |
|||
{ action: 'cancel', label: 'Anuluj', flags: 'safe' } |
|||
] |
|||
}); |
|||
dialog.on('action:save', function () { |
|||
// Obsługa kliknięcia w przycisk "Zgłoś" |
|||
var reason = dialog.getElementByIndex(1).getValue().trim(); |
|||
$(document).on('click', '.zglos', function (e) { |
|||
if (reason === '') { |
|||
alert('Uzasadnienie nie może być puste.'); |
|||
return; |
|||
} |
|||
sendReport(diffNumber, reason); |
|||
dialog.close(); |
|||
}); |
}); |
||
dialog.on('action:cancel', function () { |
|||
dialog.close(); |
|||
}); |
|||
dialog.open(); |
|||
} |
} |
||
// Funkcja wysyłająca zgłoszenie na stronę Prośby do administratorów |
|||
function sendReport(diffNumber, reason) { |
|||
var api = new mw.Api(); |
|||
var reportText = '== Prośba o ukrycie ==\n' + |
|||
'[[Specjalna:Diff/' + diffNumber + '|' + diffNumber + ']] - ' + reason + '\n' + |
|||
'Zgłasza: [[User:BZPN|BZPN]] ([[User talk:BZPN|talk]]) 19:54, 4 October 2024 (UTC)\n'; |
|||
api.postWithToken('csrf', { |
|||
action: 'edit', |
|||
title: 'Wikipedia:Prośby do administratorów', |
|||
appendtext: reportText, |
|||
summary: 'Dodano prośbę o ukrycie edycji: ' + diffNumber |
|||
}).done(function () { |
|||
alert('Zgłoszenie zostało pomyślnie wysłane.'); |
|||
}).fail(function (error) { |
|||
console.error('Błąd podczas wysyłania zgłoszenia:', error); |
|||
alert('Wystąpił błąd podczas wysyłania zgłoszenia.'); |
|||
}); |
|||
} |
|||
// Uruchomienie skryptu po załadowaniu strony |
|||
$(document).ready(function () { |
|||
addReportButton(); |
|||
}); |
|||
}); |
}); |
Revision as of 19:54, 4 October 2024
mw.loader.using(['mediawiki.api', 'oojs-ui', 'mediawiki.util']).done(function () {
// Funkcja dodająca przycisk zgłoszenia w odpowiednich miejscach
function addReportButton() {
// 1. Ostatnie zmiany
$('li.mw-changeslist-line').each(function () {
var $link = $(this).find('.mw-changeslist-diff');
// Dodajemy przycisk (zgłoś) tylko raz
if ($link.siblings('.pt-report').length === 0) {
var diffUrl = $link.attr('href');
var diffNumber = diffUrl.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji
var $button = $('<a>')
.attr('href', '#')
.text('(zgłoś)')
.addClass('pt-report')
.css({ 'margin-left': '10px', 'cursor': 'pointer' });
$link.after($button);
// Obsługa kliknięcia przycisku
$button.click(function (e) {
e.preventDefault();
showReportPopup(diffNumber);
});
}
});
// 2. Podgląd porównywania zmian
if (mw.config.get('wgDiffOldId') && mw.config.get('wgDiffNewId')) {
var diffNumber = mw.config.get('wgDiffOldId');
var $diffHeader = $('#mw-diff-ntitle1');
// Dodajemy przycisk (zgłoś) tylko raz
if ($diffHeader.find('.pt-report').length === 0) {
var $button = $('<a>')
.attr('href', '#')
.text('(zgłoś)')
.addClass('pt-report')
.css({ 'margin-left': '10px', 'cursor': 'pointer' });
$diffHeader.append($button);
// Obsługa kliknięcia przycisku
$button.click(function (e) {
e.preventDefault();
showReportPopup(diffNumber);
});
}
}
}
// Funkcja wyświetlająca popup do zgłoszenia
function showReportPopup(diffNumber) {
var dialog = new OO.ui.Dialog({
title: 'Zgłoś edycję',
content: [
new OO.ui.LabelWidget({ label: 'Wpisz uzasadnienie zgłoszenia:' }),
new OO.ui.TextInputWidget({ multiline: true, placeholder: 'Tutaj wpisz uzasadnienie' })
],
actions: [
{ action: 'save', label: 'Zgłoś', flags: 'primary' },
{ action: 'cancel', label: 'Anuluj', flags: 'safe' }
]
});
dialog.on('action:save', function () {
var reason = dialog.getElementByIndex(1).getValue().trim();
if (reason === '') {
alert('Uzasadnienie nie może być puste.');
return;
}
sendReport(diffNumber, reason);
dialog.close();
});
dialog.on('action:cancel', function () {
dialog.close();
});
dialog.open();
}
// Funkcja wysyłająca zgłoszenie na stronę Prośby do administratorów
function sendReport(diffNumber, reason) {
var api = new mw.Api();
var reportText = '== Prośba o ukrycie ==\n' +
'[[Specjalna:Diff/' + diffNumber + '|' + diffNumber + ']] - ' + reason + '\n' +
'Zgłasza: [[User:BZPN|BZPN]] ([[User talk:BZPN|talk]]) 19:54, 4 October 2024 (UTC)\n';
api.postWithToken('csrf', {
action: 'edit',
title: 'Wikipedia:Prośby do administratorów',
appendtext: reportText,
summary: 'Dodano prośbę o ukrycie edycji: ' + diffNumber
}).done(function () {
alert('Zgłoszenie zostało pomyślnie wysłane.');
}).fail(function (error) {
console.error('Błąd podczas wysyłania zgłoszenia:', error);
alert('Wystąpił błąd podczas wysyłania zgłoszenia.');
});
}
// Uruchomienie skryptu po załadowaniu strony
$(document).ready(function () {
addReportButton();
});
});