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

From Test Wiki
Jump to navigation Jump to search
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:
// Dodanie przycisku "Zgłoś" obok edycji na stronie "Ostatnie zmiany" oraz w podglądzie zmian
mw.loader.using(['mediawiki.api', 'oojs-ui', 'mediawiki.util']).done(function () {
$(function () {
 
    // Sprawdź, czy użytkownik jest zalogowany i w przestrzeni nazw "Specjalna"
    // Funkcja dodająca przycisk zgłoszenia w odpowiednich miejscach
    if (mw.config.get('wgNamespaceNumber') === -1 && (mw.config.get('wgTitle') === 'Ostatnie_zmiany' || mw.config.get('wgAction') === 'compare')) {
    function addReportButton() {
       
        // 1. Ostatnie zmiany
        // Funkcja dodająca przycisk Zgłoś
        $('li.mw-changeslist-line').each(function () {
        function dodajPrzyciskZglos() {
            var $link = $(this).find('.mw-changeslist-diff');
            // Dodajemy przyciski obok linków do edycji
 
            $('.mw-changeslist-links').each(function () {
            // Dodajemy przycisk (zgłoś) tylko raz
                var diffLink = $(this).find('a:contains("porównaj")').attr('href');
            if ($link.siblings('.pt-report').length === 0) {
                 var diffNumber = diffLink ? new URL(diffLink, window.location.origin).searchParams.get('diff') : null;
                var diffUrl = $link.attr('href');
                  
                 var diffNumber = diffUrl.match(/oldid=(\d+)/)[1]; // Wyciągnięcie numeru edycji
                 if (diffNumber) {
 
                     $(this).append(' | <a href="#" class="zglos" data-diff="' + diffNumber + '">Zgłoś</a>');
                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' });


        // Funkcja otwierająca popup i obsługująca zgłoszenie
                 $diffHeader.append($button);
        function otworzPopup(diffNumber) {
            var uzasadnienie = prompt('Podaj uzasadnienie zgłoszenia:');
            if (uzasadnienie) {
                 var trescZgloszenia = '== Prośba o ukrycie ==\n';
                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';


                 // Wysyłanie zgłoszenia na stronę Wikipedia:Prośby do administratorów
                 // Obsługa kliknięcia przycisku
                 $.post(mw.util.wikiScript('api'), {
                 $button.click(function (e) {
                     action: 'edit',
                     e.preventDefault();
                    title: 'Wikipedia:Prośby do administratorów',
                     showReportPopup(diffNumber);
                    appendtext: '\n' + trescZgloszenia,
                    summary: 'Zgłoszenie prośby o ukrycie zmian',
                    token: mw.user.tokens.get('csrfToken')
                }).done(function () {
                    alert('Zgłoszenie zostało wysłane.');
                }).fail(function () {
                     alert('Wystąpił błąd podczas wysyłania zgłoszenia.');
                 });
                 });
             }
             }
         }
         }
    }


        // Dodanie przycisków po załadowaniu strony
    // Funkcja wyświetlająca popup do zgłoszenia
         dodajPrzyciskZglos();
    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();
        });


         // Obsługa kliknięcia w przycisk "Zgłoś"
         dialog.on('action:cancel', function () {
        $(document).on('click', '.zglos', function (e) {
             dialog.close();
             e.preventDefault();
            var diffNumber = $(this).data('diff');
            otworzPopup(diffNumber);
         });
         });
        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();
    });

});