User:BZPN/Script2.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
Created page with "mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () { var archiveButton = mw.util.addPortletLink( 'p-tb', '#', 'Archiwizuj dyskusję', 'pt-archive', 'Archiwizuj wybrane wątki na stronach dyskusji' ); $(archiveButton).click(function () { // Create a dialog for archiving var archiveDialog = new OO.ui.ProcessDialog({ title: 'Archiwizacja dyskusji', size: 'large'..." Tags: Mobile edit Mobile web edit |
No edit summary Tags: Mobile edit Mobile web edit |
||
Line 1: | Line 1: | ||
mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () { |
mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () { |
||
// Dodanie przycisku do paska narzędzi |
|||
var archiveButton = mw.util.addPortletLink( |
var archiveButton = mw.util.addPortletLink( |
||
'p-tb', |
'p-tb', // Umieszczenie w menu bocznym |
||
'#', // Link (placeholder, ponieważ kliknięcie będzie obsługiwane przez JavaScript) |
|||
'#', |
|||
'Archiwizuj dyskusję', |
'Archiwizuj dyskusję', // Nazwa przycisku |
||
'pt-archive', |
'pt-archive', // ID elementu |
||
'Archiwizuj wybrane wątki na stronach dyskusji' |
'Archiwizuj wybrane wątki na stronach dyskusji', // Opis |
||
null, |
|||
'#pt-adminlinks' // Umieszczenie przed istniejącym linkiem |
|||
); |
); |
||
// Definicja klasy okna dialogowego |
|||
$(archiveButton).click(function () { |
|||
function ArchiveDialog(config) { |
|||
// Create a dialog for archiving |
|||
ArchiveDialog.super.call(this, config); |
|||
var archiveDialog = new OO.ui.ProcessDialog({ |
|||
} |
|||
title: 'Archiwizacja dyskusji', |
|||
OO.inheritClass(ArchiveDialog, OO.ui.ProcessDialog); |
|||
size: 'large' |
|||
}); |
|||
ArchiveDialog.static.name = 'archiveDialog'; |
|||
var windowManager = new OO.ui.WindowManager(); |
|||
ArchiveDialog.static.title = 'Archiwizacja dyskusji'; |
|||
$('body').append(windowManager.$element); |
|||
ArchiveDialog.static.actions = [ |
|||
windowManager.addWindows([archiveDialog]); |
|||
{ action: 'save', label: 'Archiwizuj', flags: ['primary', 'progressive'] }, |
|||
windowManager.openWindow(archiveDialog); |
|||
{ action: 'cancel', label: 'Anuluj', flags: 'safe' } |
|||
]; |
|||
ArchiveDialog.prototype.initialize = function () { |
|||
var progressBar = new OO.ui.ProgressBarWidget(); |
|||
ArchiveDialog.super.prototype.initialize.apply(this, arguments); |
|||
var progressField = new OO.ui.FieldLayout(progressBar, { |
|||
label: 'Wyszukiwanie wątków i archiwów...', |
|||
align: 'top' |
|||
}); |
|||
// Tworzenie elementów interfejsu |
|||
var threadsField = new OO.ui.FieldsetLayout({ |
|||
this.content = new OO.ui.PanelLayout({ padded: true, expanded: false }); |
|||
label: 'Wybierz wątki do archiwizacji' |
|||
this.progressBar = new OO.ui.ProgressBarWidget(); |
|||
}); |
|||
this.threadsField = new OO.ui.FieldsetLayout({ label: 'Wybierz wątki do archiwizacji' }); |
|||
this.archiveField = new OO.ui.FieldsetLayout({ label: 'Wybierz archiwum docelowe' }); |
|||
this.content.$element.append(this.progressBar.$element, this.threadsField.$element, this.archiveField.$element); |
|||
var archiveField = new OO.ui.FieldsetLayout({ |
|||
this.$body.append(this.content.$element); |
|||
label: 'Wybierz archiwum docelowe' |
|||
}; |
|||
ArchiveDialog.prototype.getActionProcess = function (action) { |
|||
archiveDialog.$body.append(progressField.$element, threadsField.$element, archiveField.$element); |
|||
var dialog = this; |
|||
if (action === 'save') { |
|||
return new OO.ui.Process(function () { |
|||
// Use regex to find sections that match '== Wątek ==' |
|||
dialog.archiveSelected(); |
|||
dialog.close({ action: action }); |
|||
if (threads) { |
|||
threads.forEach(function (thread) { |
|||
var checkbox = new OO.ui.CheckboxInputWidget({ value: thread }); |
|||
var checkboxField = new OO.ui.FieldLayout(checkbox, { label: thread, align: 'inline' }); |
|||
threadsField.addItems([checkboxField]); |
|||
}); |
|||
} |
|||
} |
|||
function findArchives() { |
|||
// Use MediaWiki API to search for possible archive pages |
|||
var userName = mw.config.get('wgTitle').split(':')[1]; |
|||
var archiveSearchTitles = [ |
|||
'Dyskusja wikipedysty:' + userName + '/Archiwum/', |
|||
'Archiwum/', |
|||
'Dyskusja:', |
|||
'Dyskusja ' + userName |
|||
]; |
|||
// Display options for archive selection |
|||
archiveSearchTitles.forEach(function (title) { |
|||
var radio = new OO.ui.RadioInputWidget({ value: title }); |
|||
var radioField = new OO.ui.FieldLayout(radio, { label: title + 'X', align: 'inline' }); |
|||
archiveField.addItems([radioField]); |
|||
}); |
}); |
||
} |
} |
||
return ArchiveDialog.super.prototype.getActionProcess.call(this, action); |
|||
}; |
|||
ArchiveDialog.prototype.getBodyHeight = function () { |
|||
// Initialize by detecting threads and finding archives |
|||
return this.content.$element.outerHeight(true); |
|||
detectThreads(); |
|||
}; |
|||
ArchiveDialog.prototype.archiveSelected = function () { |
|||
// Implementacja archiwizacji wybranych wątków |
|||
// Move the selected threads to the chosen archive |
|||
var selectedThreads = this.threadsField.items |
|||
.filter(function (item) { return item.fieldWidget.isSelected(); }) |
|||
.map(function (item) { return item.fieldWidget.getValue(); }); |
|||
var selectedArchive = this.archiveField.items |
|||
.find(function (item) { return item.fieldWidget.isSelected(); }) |
|||
.fieldWidget.getValue(); |
|||
// Tutaj można dodać logikę do przenoszenia wybranych wątków do wybranego archiwum |
|||
// Perform the cut and paste action |
|||
console.log('Archiwizowane wątki:', selectedThreads); |
|||
console.log('Docelowe archiwum:', selectedArchive); |
|||
}; |
|||
// Dodanie menedżera okien i obsługa kliknięcia przycisku |
|||
// TODO: Use MediaWiki API to edit both the discussion and archive pages |
|||
var windowManager = new OO.ui.WindowManager(); |
|||
} |
|||
$('body').append(windowManager.$element); |
|||
windowManager.addWindows([new ArchiveDialog({ size: 'large' })]); |
|||
$(archiveButton).click(function (e) { |
|||
// Add an "Archive" button to start the archiving process |
|||
e.preventDefault(); |
|||
var archiveButton = new OO.ui.ButtonWidget({ |
|||
windowManager.openWindow('archiveDialog'); |
|||
label: 'Archiwizuj', |
|||
flags: ['primary', 'progressive'] |
|||
}); |
|||
archiveButton.on('click', archiveSelected); |
|||
archiveDialog.$foot.append(archiveButton.$element); |
|||
}); |
}); |
||
}); |
}); |
Latest revision as of 16:49, 25 October 2024
mw.loader.using(['oojs-ui', 'mediawiki.util']).done(function () {
// Dodanie przycisku do paska narzędzi
var archiveButton = mw.util.addPortletLink(
'p-tb', // Umieszczenie w menu bocznym
'#', // Link (placeholder, ponieważ kliknięcie będzie obsługiwane przez JavaScript)
'Archiwizuj dyskusję', // Nazwa przycisku
'pt-archive', // ID elementu
'Archiwizuj wybrane wątki na stronach dyskusji', // Opis
null,
'#pt-adminlinks' // Umieszczenie przed istniejącym linkiem
);
// Definicja klasy okna dialogowego
function ArchiveDialog(config) {
ArchiveDialog.super.call(this, config);
}
OO.inheritClass(ArchiveDialog, OO.ui.ProcessDialog);
ArchiveDialog.static.name = 'archiveDialog';
ArchiveDialog.static.title = 'Archiwizacja dyskusji';
ArchiveDialog.static.actions = [
{ action: 'save', label: 'Archiwizuj', flags: ['primary', 'progressive'] },
{ action: 'cancel', label: 'Anuluj', flags: 'safe' }
];
ArchiveDialog.prototype.initialize = function () {
ArchiveDialog.super.prototype.initialize.apply(this, arguments);
// Tworzenie elementów interfejsu
this.content = new OO.ui.PanelLayout({ padded: true, expanded: false });
this.progressBar = new OO.ui.ProgressBarWidget();
this.threadsField = new OO.ui.FieldsetLayout({ label: 'Wybierz wątki do archiwizacji' });
this.archiveField = new OO.ui.FieldsetLayout({ label: 'Wybierz archiwum docelowe' });
this.content.$element.append(this.progressBar.$element, this.threadsField.$element, this.archiveField.$element);
this.$body.append(this.content.$element);
};
ArchiveDialog.prototype.getActionProcess = function (action) {
var dialog = this;
if (action === 'save') {
return new OO.ui.Process(function () {
dialog.archiveSelected();
dialog.close({ action: action });
});
}
return ArchiveDialog.super.prototype.getActionProcess.call(this, action);
};
ArchiveDialog.prototype.getBodyHeight = function () {
return this.content.$element.outerHeight(true);
};
ArchiveDialog.prototype.archiveSelected = function () {
// Implementacja archiwizacji wybranych wątków
var selectedThreads = this.threadsField.items
.filter(function (item) { return item.fieldWidget.isSelected(); })
.map(function (item) { return item.fieldWidget.getValue(); });
var selectedArchive = this.archiveField.items
.find(function (item) { return item.fieldWidget.isSelected(); })
.fieldWidget.getValue();
// Tutaj można dodać logikę do przenoszenia wybranych wątków do wybranego archiwum
console.log('Archiwizowane wątki:', selectedThreads);
console.log('Docelowe archiwum:', selectedArchive);
};
// Dodanie menedżera okien i obsługa kliknięcia przycisku
var windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
windowManager.addWindows([new ArchiveDialog({ size: 'large' })]);
$(archiveButton).click(function (e) {
e.preventDefault();
windowManager.openWindow('archiveDialog');
});
});