User:BZPN/PNHelper.js: Difference between revisions

From Test Wiki
Content deleted Content added
BZPN (talk | contribs)
No edit summary
Tag: Reverted
BZPN (talk | contribs)
No edit summary
Tag: Reverted
Line 11: Line 11:
// Funkcja tworząca okno dialogowe
// Funkcja tworząca okno dialogowe
function createDialog() {
function createDialog() {
var dialog = new OO.ui.MessageDialog({
var dialog = new OO.ui.ProcessDialog({
size: 'large'
size: 'large',
title: 'Dodaj nowe zadanie'
});
});


Line 39: Line 40:
title: 'Podkreślenie'
title: 'Podkreślenie'
});
});
var strikethroughButton = new OO.ui.ButtonWidget({

var editButtons = new OO.ui.ButtonGroupWidget({
icon: 'strikethrough',
items: [boldButton, italicButton, underlineButton]
title: 'Przekreślenie'
});
var subscriptButton = new OO.ui.ButtonWidget({
icon: 'subscript',
title: 'Indeks dolny'
});
var superscriptButton = new OO.ui.ButtonWidget({
icon: 'superscript',
title: 'Indeks górny'
});
var linkButton = new OO.ui.ButtonWidget({
icon: 'link',
title: 'Wstaw link'
});
});


// Przycisk dodawania linków
var editButtons = new OO.ui.ButtonGroupWidget({
items: [boldButton, italicButton, underlineButton, strikethroughButton, subscriptButton, superscriptButton, linkButton]
var addLinkButton = new OO.ui.ButtonWidget({
label: 'Dodaj link',
icon: 'link'
});
});


Line 64: Line 75:
italicButton.on('click', function() { wrapSelection("''", "''"); });
italicButton.on('click', function() { wrapSelection("''", "''"); });
underlineButton.on('click', function() { wrapSelection("<u>", "</u>"); });
underlineButton.on('click', function() { wrapSelection("<u>", "</u>"); });
strikethroughButton.on('click', function() { wrapSelection("<s>", "</s>"); });

subscriptButton.on('click', function() { wrapSelection("<sub>", "</sub>"); });
// Funkcja dodawania linków
addLinkButton.on('click', function() {
superscriptButton.on('click', function() { wrapSelection("<sup>", "</sup>"); });
linkButton.on('click', function() {
var selectedText = descriptionInput.$input[0].value.substring(
var selectedText = descriptionInput.$input[0].value.substring(
descriptionInput.$input[0].selectionStart,
descriptionInput.$input[0].selectionStart,
Line 72: Line 84:
);
);
if (selectedText) {
if (selectedText) {
wrapSelection("[[", "]]");
// Proste automatyczne wyszukiwanie - używamy zaznaczonego tekstu jako tytułu strony
var link = '[[' + selectedText + ']]';
wrapSelection(link, '');
} else {
} else {
alert('Zaznacz tekst, aby dodać link.');
alert('Zaznacz tekst, aby dodać link.');
Line 81: Line 91:


// Konfiguracja okna dialogowego
// Konfiguracja okna dialogowego
var config = {
dialog.$body.append(
title: 'Dodaj nowe zadanie',
new OO.ui.FieldsetLayout({
message: new OO.ui.FieldsetLayout({
items: [
items: [
new OO.ui.FieldLayout(titleInput, {
new OO.ui.FieldLayout(titleInput, {
label: 'Tytuł',
label: 'Tytuł zadania',
align: 'top'
align: 'top'
}),
}),
new OO.ui.FieldLayout(editButtons, {
new OO.ui.FieldLayout(editButtons, {
label: 'Edycja tekstu',
label: 'Edycja tekstu',
align: 'top'
}),
new OO.ui.FieldLayout(addLinkButton, {
align: 'top'
align: 'top'
}),
}),
new OO.ui.FieldLayout(descriptionInput, {
new OO.ui.FieldLayout(descriptionInput, {
label: 'Opis',
label: 'Opis zadania',
align: 'top'
align: 'top'
})
})
]
]
}),
}).$element
actions: [
);

{
action: 'cancel',
// Przyciski akcji
label: 'Anuluj',
dialog.actions = [
flags: 'safe'
{ action: 'cancel', label: 'Anuluj', flags: ['safe', 'close'] },
},
{ action: 'submit', label: 'Zapisz', flags: ['primary', 'progressive'] }
{
];

action: 'submit',
label: 'Zapisz',
// Obsługa akcji
dialog.getActionProcess = function (action) {
flags: ['primary', 'progressive']
}
if (action === 'submit') {
]
return new OO.ui.Process(function () {
console.log('Zapisano zadanie:', titleInput.getValue(), descriptionInput.getValue());
dialog.close();
});
}
return dialog.parent.getActionProcess.call(this, action);
};
};


Line 120: Line 131:
$('body').append(windowManager.$element);
$('body').append(windowManager.$element);
windowManager.addWindows([dialog]);
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog, config);
windowManager.openWindow(dialog);

// 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());
}
});
});
}
}