User:BZPN/PNHelper.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// <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>