User:BZPN/Zgłaszarka.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
BZPN (talk | contribs)
No edit summary
BZPN (talk | contribs)
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
mw.loader.using(['mediawiki.api', 'oojs-ui', 'mediawiki.util']).done(function () {
mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () {

// Funkcja dodająca przycisk zgłoszenia w odpowiednich miejscach
function addReportButton() {
function addReportButton() {
// 1. Ostatnie zmiany
// Znajdź każdą edycję
$('li.mw-changeslist-line').each(function () {
$('.mw-changeslist-diff').each(function () {
var $link = $(this).find('.mw-changeslist-diff');
var diffUrl = $(this).attr('href');
var diffNumber = diffUrl.match(/diff=(\d+)/)[1];

// 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


// Dodaj przycisk, jeśli go jeszcze nie ma
if ($(this).siblings('.pt-report').length === 0) {
var $button = $('<a>')
var $button = $('<a>')
.attr('href', '#')
.attr('href', '#')
.text('(zgłoś)')
.text('(zgłoś)')
.addClass('pt-report')
.addClass('pt-report')
.css({ 'margin-left': '10px', 'cursor': 'pointer' });
.css({ 'margin-left': '10px', 'cursor': 'pointer', 'color': 'red' });


$link.after($button);
$(this).after($button);


// Obsługa kliknięcia przycisku
// Obsługa kliknięcia w przycisk
$button.click(function (e) {
$button.click(function (e) {
e.preventDefault();
e.preventDefault();
showReportPopup(diffNumber);
});
}
});


// 2. Podgląd porównywania zmian
// Popup do wpisania uzasadnienia
var reason = prompt('Podaj uzasadnienie zgłoszenia:');
if (mw.config.get('wgDiffOldId') && mw.config.get('wgDiffNewId')) {
var diffNumber = mw.config.get('wgDiffOldId');
if (!reason || reason.trim() === '') {
var $diffHeader = $('#mw-diff-ntitle1');
alert('Uzasadnienie jest wymagane.');
return;
}


// Dodajemy przycisk (zgłoś) tylko raz
// Potwierdzenie zgłoszenia
var doThis = confirm('Czy na pewno chcesz zgłosić edycję?');
if ($diffHeader.find('.pt-report').length === 0) {
var $button = $('<a>')
if (doThis) {
.attr('href', '#')
var api = new mw.Api();
.text('(zgłoś)')
.addClass('pt-report')
.css({ 'margin-left': '10px', 'cursor': 'pointer' });


// Stwórz nowy wątek na Wikipedia:Prośby do administratorów
$diffHeader.append($button);
api.postWithToken('csrf', {

// Obsługa kliknięcia przycisku
action: 'edit',
title: 'User:BZPN/Wikipedia:Prośby do administratorów',
$button.click(function (e) {
e.preventDefault();
section: 'new',
showReportPopup(diffNumber);
sectiontitle: 'Prośba o ukrycie',
text: '[[Specjalna:Diff/' + diffNumber + '|Diff ' + diffNumber + ']] - ' + reason + '\n\nZgłasza:'+'~~'+'~~',
summary: 'Zgłoszono edycję do ukrycia: ' + diffNumber
}).done(function () {
alert('Edycja została zgłoszona.');
}).fail(function (error) {
console.error('Błąd podczas zgłaszania:', error);
alert('Wystąpił błąd podczas zgłaszania edycji.');
});
}
});
});
}
}
}
}

// 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 () {
$(document).ready(function () {
addReportButton();
addReportButton();
});
});

});
});

Latest revision as of 19:25, 6 October 2024

mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () {
    function addReportButton() {
        // Znajdź każdą edycję
        $('.mw-changeslist-diff').each(function () {
            var diffUrl = $(this).attr('href');
            var diffNumber = diffUrl.match(/diff=(\d+)/)[1];

            // Dodaj przycisk, jeśli go jeszcze nie ma
            if ($(this).siblings('.pt-report').length === 0) {
                var $button = $('<a>')
                    .attr('href', '#')
                    .text('(zgłoś)')
                    .addClass('pt-report')
                    .css({ 'margin-left': '10px', 'cursor': 'pointer', 'color': 'red' });

                $(this).after($button);

                // Obsługa kliknięcia w przycisk
                $button.click(function (e) {
                    e.preventDefault();

                    // Popup do wpisania uzasadnienia
                    var reason = prompt('Podaj uzasadnienie zgłoszenia:');
                    if (!reason || reason.trim() === '') {
                        alert('Uzasadnienie jest wymagane.');
                        return;
                    }

                    // Potwierdzenie zgłoszenia
                    var doThis = confirm('Czy na pewno chcesz zgłosić edycję?');
                    if (doThis) {
                        var api = new mw.Api();

                        // Stwórz nowy wątek na Wikipedia:Prośby do administratorów
                        api.postWithToken('csrf', {
                            action: 'edit',
                            title: 'User:BZPN/Wikipedia:Prośby do administratorów',
                            section: 'new',
                            sectiontitle: 'Prośba o ukrycie',
                            text: '[[Specjalna:Diff/' + diffNumber + '|Diff ' + diffNumber + ']] - ' + reason + '\n\nZgłasza:'+'~~'+'~~',
                            summary: 'Zgłoszono edycję do ukrycia: ' + diffNumber
                        }).done(function () {
                            alert('Edycja została zgłoszona.');
                        }).fail(function (error) {
                            console.error('Błąd podczas zgłaszania:', error);
                            alert('Wystąpił błąd podczas zgłaszania edycji.');
                        });
                    }
                });
            }
        });
    }

    $(document).ready(function () {
        addReportButton();
    });
});