User:BZPN/PNHelper.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
Created page with "// <nowiki> mw.loader.using(['oojs-ui-core', 'oojs-ui-windows'], function () { mw.hook('wikipage.content').add(function ($content) { // Tworzenie przycisku var $button = $('<li id="t-custom-task"><a href="#"></a></li>'); $button.find('a').text('Dodaj zadanie'); // Dodanie przycisku do paska narzędzi $('#p-tb ul').append($button); // Funkcja tworząca okno dialogowe function createDialog() { var di..."
 
No edit summary
Tag: Reverted
Line 1: Line 1:
// <nowiki>
// <nowiki>
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows'], function () {
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows', 'oojs-ui-widgets'], function () {
mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function ($content) {
// Tworzenie przycisku
// Tworzenie przycisku
Line 12: Line 12:
function createDialog() {
function createDialog() {
var dialog = new OO.ui.MessageDialog({
var dialog = new OO.ui.MessageDialog({
size: 'medium'
size: 'large'
});
});


Line 22: Line 22:
var descriptionInput = new OO.ui.MultilineTextInputWidget({
var descriptionInput = new OO.ui.MultilineTextInputWidget({
placeholder: 'Wpisz opis zadania',
placeholder: 'Wpisz opis zadania',
rows: 5
rows: 10,
autosize: true
});
});


// Przyciski edycji tekstu
var boldButton = new OO.ui.ButtonWidget({
icon: 'bold',
title: 'Pogrubienie'
});
var italicButton = new OO.ui.ButtonWidget({
icon: 'italic',
title: 'Kursywa'
});
var underlineButton = new OO.ui.ButtonWidget({
icon: 'underline',
title: 'Podkreślenie'
});

var editButtons = new OO.ui.ButtonGroupWidget({
items: [boldButton, italicButton, underlineButton]
});

// Przycisk dodawania linków
var addLinkButton = new OO.ui.ButtonWidget({
var addLinkButton = new OO.ui.ButtonWidget({
label: 'Dodaj link',
label: 'Dodaj link',
disabled: true // Na razie nieaktywny
icon: 'link'
});

// Funkcje edycji tekstu
function wrapSelection(before, after) {
var textarea = descriptionInput.$input[0];
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var selectedText = textarea.value.substring(start, end);
var replacement = before + selectedText + after;
textarea.value = textarea.value.substring(0, start) + replacement + textarea.value.substring(end);
descriptionInput.setValue(textarea.value);
}

boldButton.on('click', function() { wrapSelection("'''", "'''"); });
italicButton.on('click', function() { wrapSelection("''", "''"); });
underlineButton.on('click', function() { wrapSelection("<u>", "</u>"); });

// Funkcja dodawania linków
addLinkButton.on('click', function() {
var selectedText = descriptionInput.$input[0].value.substring(
descriptionInput.$input[0].selectionStart,
descriptionInput.$input[0].selectionEnd
);
if (selectedText) {
// Proste automatyczne wyszukiwanie - używamy zaznaczonego tekstu jako tytułu strony
var link = '[[' + selectedText + ']]';
wrapSelection(link, '');
} else {
alert('Zaznacz tekst, aby dodać link.');
}
});
});


Line 39: Line 89:
align: 'top'
align: 'top'
}),
}),
new OO.ui.FieldLayout(descriptionInput, {
new OO.ui.FieldLayout(editButtons, {
label: 'Opis',
label: 'Edycja tekstu',
align: 'top'
align: 'top'
}),
}),
new OO.ui.FieldLayout(addLinkButton, {
new OO.ui.FieldLayout(addLinkButton, {
align: 'top'
}),
new OO.ui.FieldLayout(descriptionInput, {
label: 'Opis',
align: 'top'
align: 'top'
})
})

Revision as of 16:03, 20 November 2024

// <nowiki>
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows', 'oojs-ui-widgets'], function () {
    mw.hook('wikipage.content').add(function ($content) {
        // Tworzenie przycisku
        var $button = $('<li id="t-custom-task"><a href="#"></a></li>');
        $button.find('a').text('Dodaj zadanie');

        // Dodanie przycisku do paska narzędzi
        $('#p-tb ul').append($button);

        // Funkcja tworząca okno dialogowe
        function createDialog() {
            var dialog = new OO.ui.MessageDialog({
                size: 'large'
            });

            // Tworzenie pól formularza
            var titleInput = new OO.ui.TextInputWidget({
                placeholder: 'Wpisz tytuł zadania'
            });

            var descriptionInput = new OO.ui.MultilineTextInputWidget({
                placeholder: 'Wpisz opis zadania',
                rows: 10,
                autosize: true
            });

            // Przyciski edycji tekstu
            var boldButton = new OO.ui.ButtonWidget({
                icon: 'bold',
                title: 'Pogrubienie'
            });
            var italicButton = new OO.ui.ButtonWidget({
                icon: 'italic',
                title: 'Kursywa'
            });
            var underlineButton = new OO.ui.ButtonWidget({
                icon: 'underline',
                title: 'Podkreślenie'
            });

            var editButtons = new OO.ui.ButtonGroupWidget({
                items: [boldButton, italicButton, underlineButton]
            });

            // Przycisk dodawania linków
            var addLinkButton = new OO.ui.ButtonWidget({
                label: 'Dodaj link',
                icon: 'link'
            });

            // Funkcje edycji tekstu
            function wrapSelection(before, after) {
                var textarea = descriptionInput.$input[0];
                var start = textarea.selectionStart;
                var end = textarea.selectionEnd;
                var selectedText = textarea.value.substring(start, end);
                var replacement = before + selectedText + after;
                textarea.value = textarea.value.substring(0, start) + replacement + textarea.value.substring(end);
                descriptionInput.setValue(textarea.value);
            }

            boldButton.on('click', function() { wrapSelection("'''", "'''"); });
            italicButton.on('click', function() { wrapSelection("''", "''"); });
            underlineButton.on('click', function() { wrapSelection("<u>", "</u>"); });

            // Funkcja dodawania linków
            addLinkButton.on('click', function() {
                var selectedText = descriptionInput.$input[0].value.substring(
                    descriptionInput.$input[0].selectionStart,
                    descriptionInput.$input[0].selectionEnd
                );
                if (selectedText) {
                    // Proste automatyczne wyszukiwanie - używamy zaznaczonego tekstu jako tytułu strony
                    var link = '[[' + selectedText + ']]';
                    wrapSelection(link, '');
                } else {
                    alert('Zaznacz tekst, aby dodać link.');
                }
            });

            // Konfiguracja okna dialogowego
            var config = {
                title: 'Dodaj nowe zadanie',
                message: new OO.ui.FieldsetLayout({
                    items: [
                        new OO.ui.FieldLayout(titleInput, {
                            label: 'Tytuł',
                            align: 'top'
                        }),
                        new OO.ui.FieldLayout(editButtons, {
                            label: 'Edycja tekstu',
                            align: 'top'
                        }),
                        new OO.ui.FieldLayout(addLinkButton, {
                            align: 'top'
                        }),
                        new OO.ui.FieldLayout(descriptionInput, {
                            label: 'Opis',
                            align: 'top'
                        })
                    ]
                }),
                actions: [
                    {
                        action: 'cancel',
                        label: 'Anuluj',
                        flags: 'safe'
                    },
                    {
                        action: 'submit',
                        label: 'Zapisz',
                        flags: ['primary', 'progressive']
                    }
                ]
            };

            // Otwieranie okna dialogowego
            var windowManager = new OO.ui.WindowManager();
            $('body').append(windowManager.$element);
            windowManager.addWindows([dialog]);
            windowManager.openWindow(dialog, config);

            // Obsługa zamykania okna
            dialog.on('closing', function (windowManager, promise) {
                promise.done(function (data) {
                    if (data && data.action === 'submit') {
                        console.log('Zapisano zadanie:', titleInput.getValue(), descriptionInput.getValue());
                    }
                });
            });
        }

        // Dodanie obsługi kliknięcia przycisku
        $button.on('click', function (e) {
            e.preventDefault();
            createDialog();
        });
    });
});
// </nowiki>