“MediaWiki:Gadget-SettingsDialog.js”的版本间差异

无编辑摘要
* getObject:获取小工具对象
* addTab:添加小工具
* buildForm:生成表单
* removeTab:移除小工具
* saveOptions:将设置保存到localStorage
SettingsDialog.prototype.addTab = function(params) {
const dialog = this,
panel = new OO.ui.TabPanelLayout( params.name, {label: mw.msg( params.label )} ),;
$element = panel.$element;
this.content.addTabPanels( [panel] );
dialogthis.gadgets.push( params );
// 必要时才开始加载表单
panel.on('active', function() {
panel.on('active', function() { if (dialog.getIndexbuildForm( params.name ); >= 0}) { return; }
};
dialog.gadgets.push( params );
(paramsSettingsDialog.itemsprototype.buildForm ||= []).forEach(function(eleparams) {
if (params.ready) { return; }
ele.widget = new OO.ui[ele.type + 'InputWidget']( ele.config );
const dialog = this,
$element.append( new OO.ui.FieldLayout(ele.widget, {label: mw.msg( ele.label ), help: ele.help,
$element = this.content.getTabPanel( params.name helpInline: true}).$element );
(params.items || []).forEach(function(ele) {
});
(paramsele.fieldswidget ||= new OO.ui[])ele.forEach(functiontype + 'InputWidget']( ele).config {);
ele$element.field =append( new OO.ui.FieldsetLayoutFieldLayout(ele.widget, {label: mw.msg( ele.label ), help: ele.help, helpInline: true});
ele.field.addItems(helpInline: (eletrue}).items$element || []).map(function(e) {;
});
e.widget = new OO.ui[e.type + 'InputWidget']( e.config );
(params.fields || []).forEach(function(ele) {
ele.field return= new OO.ui.FieldLayoutFieldsetLayout(e.widget, {label: mw.msg( ele.label ), help: eele.help, helpInline: true});
.$element;
ele.field.addItems( (ele.items || }[]).map(function(e) );{
$elemente.append(widget ele= new OO.fieldui[e.type + 'InputWidget']( e.$elementconfig );
$element.append(return new OO.ui.FieldLayout(elee.widget, {label: mw.msg( ele.label ), help: elee.help, helpInline: true})
});
$element = panel .$element;
$('<div>', {class: 'panel-btns', html: [
}) );
new OO.ui.ButtonWidget({label: mw.msg('gadget-sd-back'), flags: 'destructive'}).on('click', function() {
dialog$element.clearOptionsappend( paramsele.field.name$element );
}), new OO.ui.ButtonWidget({label: mw.msg('gadget-sd-save'), flags: 'progressive'}).on('click', function() {
dialog.saveOptions( params.name );
})].map(function(ele) { return ele.$element; })}).appendTo( $element );
mw.hook( 'settings.dialog' ).fire( params ); // 生成一个Hook
});
$('<div>', {class: 'panel-btns', html: [
new OO.ui.ButtonWidget({label: mw.msg('gadget-sd-back'), flags: 'destructive'}).on('click', function() {
dialog.clearOptions( params.name );
}), new OO.ui.ButtonWidget({label: mw.msg('gadget-sd-save'), flags: 'progressive'}).on('click', function() {
dialog.saveOptions( params.name );
})].map(function(ele) { return ele.$element; })}).appendTo( $element );
params.ready = true;
mw.hook( 'settings.dialog' ).fire( params ); // 生成一个Hook
};
SettingsDialog.prototype.getIndex = function(arg) {
$(document.body).on('click', '#ca-settingsDialog', function(e) {
e.preventDefault();
const dialog = mw.settingsDialog.open();,
params = dialog.getObject( dialog.content.getCurrentTabPanelName() );
dialog.open().opening.then(function() {
if (params.ready) { return; }
dialog.buildForm( params );
});
});
//</nowiki>
16,874

个编辑