16,874
个编辑
LLWiki正在建设中,欢迎加入我们!
小 |
小 |
||
* 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] );
// 必要时才开始加载表单
panel.on('active', function() {
};
▲ dialog.gadgets.push( params );
if (params.ready) { return; }
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
(params.items || []).forEach(function(ele) {
});▼
});
(params.fields || []).forEach(function(ele) {
ele.field
ele.field.addItems( (ele.items ||
▲
▲ });
$('<div>', {class: 'panel-btns', html: [▼
▲ }) );
new OO.ui.ButtonWidget({label: mw.msg('gadget-sd-back'), flags: 'destructive'}).on('click', function() {▼
}), 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▼
});
▲
dialog.clearOptions( params.name );
▲
params.ready = true;
};
SettingsDialog.prototype.getIndex = function(arg) {
$(document.body).on('click', '#ca-settingsDialog', function(e) {
e.preventDefault();
const dialog = mw.settingsDialog
params = dialog.getObject( dialog.content.getCurrentTabPanelName() );
dialog.open().opening.then(function() {
if (params.ready) { return; }
dialog.buildForm( params );
});
});
//</nowiki>
|