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

From Test Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
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
         // Przejście przez wszystkie linki edycji
         $('li.mw-changeslist-line').each(function () {
         $('.mw-changeslist-links .mw-diff').each(function () {
             var $link = $(this).find('.mw-changeslist-diff');
             var $diffLink = $(this);
 
             var diffHref = $diffLink.attr('href');
            // Dodajemy przycisk (zgłoś) tylko raz
            var diffNumber = diffHref.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji
             if ($link.siblings('.pt-report').length === 0) {
                var diffUrl = $link.attr('href');
                var diffNumber = diffUrl.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji


            // Sprawdzenie, czy przycisk już nie istnieje
            if ($diffLink.siblings('.pt-report').length === 0) {
                // Tworzenie przycisku
                 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);
                // Dodanie przycisku po linku edycji
                 $diffLink.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
                    // Wyświetlenie popupu z możliwością wpisania uzasadnienia
        if (mw.config.get('wgDiffOldId') && mw.config.get('wgDiffNewId')) {
                    var reason = prompt('Podaj uzasadnienie zgłoszenia:');
            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
            if ($diffHeader.find('.pt-report').length === 0) {
                    var confirmReport = confirm('Czy na pewno chcesz zgłosić tę edycję do ukrycia?');
                var $button = $('<a>')
                     if (!confirmReport) {
                     .attr('href', '#')
                        return;
                    .text('(zgłoś)')
                     }
                    .addClass('pt-report')
                     .css({ 'margin-left': '10px', 'cursor': 'pointer' });


                $diffHeader.append($button);
                    // API do edycji strony z prośbami
                    var api = new mw.Api();


                // Obsługa kliknięcia przycisku
                    api.postWithToken('csrf', {
                $button.click(function (e) {
                        action: 'edit',
                     e.preventDefault();
                        title: 'Wikipedia:Prośby do administratorów',
                     showReportPopup(diffNumber);
                        section: 'new',
                        sectiontitle: 'Prośba o ukrycie',
                        text: '[[Specjalna:Diff/' + diffNumber + '|Diff ' + diffNumber + ']] - ' + reason + '\nZgłasza: [[User:BZPN|BZPN]] ([[User talk:BZPN|talk]]) 19:56, 4 October 2024 (UTC)',
                        summary: 'Prośba o ukrycie edycji nr ' + diffNumber
                    }).done(function () {
                        alert('Zgłoszenie zostało 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.');
                     });
                 });
                 });
             }
             }
        }
    }
    // 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
     // Uruchomienie funkcji po załadowaniu strony
     $(document).ready(function () {
     $(document).ready(function () {
         addReportButton();
         addReportButton();
     });
     });
});
});

Revision as of 19:56, 4 October 2024

mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () {
    function addReportButton() {
        // Przejście przez wszystkie linki edycji
        $('.mw-changeslist-links .mw-diff').each(function () {
            var $diffLink = $(this);
            var diffHref = $diffLink.attr('href');
            var diffNumber = diffHref.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji

            // Sprawdzenie, czy przycisk już nie istnieje
            if ($diffLink.siblings('.pt-report').length === 0) {
                // Tworzenie przycisku
                var $button = $('<a>')
                    .attr('href', '#')
                    .text('(zgłoś)')
                    .addClass('pt-report')
                    .css({ 'margin-left': '10px', 'cursor': 'pointer', 'color': 'red' });

                // Dodanie przycisku po linku edycji
                $diffLink.after($button);

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

                    // Wyświetlenie popupu z możliwością wpisania uzasadnienia
                    var reason = prompt('Podaj uzasadnienie zgłoszenia:');
                    if (!reason || reason.trim() === '') {
                        alert('Uzasadnienie jest wymagane.');
                        return;
                    }

                    // Potwierdzenie zgłoszenia
                    var confirmReport = confirm('Czy na pewno chcesz zgłosić tę edycję do ukrycia?');
                    if (!confirmReport) {
                        return;
                    }

                    // API do edycji strony z prośbami
                    var api = new mw.Api();

                    api.postWithToken('csrf', {
                        action: 'edit',
                        title: 'Wikipedia:Prośby do administratorów',
                        section: 'new',
                        sectiontitle: 'Prośba o ukrycie',
                        text: '[[Specjalna:Diff/' + diffNumber + '|Diff ' + diffNumber + ']] - ' + reason + '\nZgłasza: [[User:BZPN|BZPN]] ([[User talk:BZPN|talk]]) 19:56, 4 October 2024 (UTC)',
                        summary: 'Prośba o ukrycie edycji nr ' + diffNumber
                    }).done(function () {
                        alert('Zgłoszenie zostało 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 funkcji po załadowaniu strony
    $(document).ready(function () {
        addReportButton();
    });
});