LLWiki正在建设中,欢迎加入我们

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

跳转到导航 跳转到搜索
},
getValues = function(arr) { // 获取一组OOUI widget的值
(gadgetreturn Object.fieldsfromEntries( (arr || []).forEachmap(function(ele) {
const settings = {};
(arr || []).filter(function(ele) { return [ele.key, !ele.widget.isDisabled(); }&& ele.widget.getValue()];
}).forEachfilter(function(ele) { settings[return ele.key [1]; = ele.widget.getValue(}) || undefined; });
return $.extend({}, settings); // 移除undefined
},
buildForm = function(params, $element) {
if (!params.ready) { // 生成表单,只需要执行一次,不用写成SettingsDialog的内置方法
$element.append( (params.items || []).forEachmap(function(ele) { $element.append(return buildWidget(ele).$element ); }) );
$element.append( (params.fields || []).forEachmap(function(ele) {
const field = new OO.ui.FieldsetLayout({label: mw.msg( ele.label ), help: ele.help, helpInline: true});
deleteKeys(['label', 'help'], ele);
field.addItems( (ele.items || []).map( buildWidget ) );
$element.append(return field.$element );
}) );
params.ready = true;
mw.hook( 'settings.dialog' ).fire( params ); // 生成一个Hook
*/
SettingsDialog.prototype.generateOptions = function(arg, flag) {
const gadget = this.getObject(arg),;
return $.extend( getValues( gadget.items ), Object.fromEntries( (gadget.fields || []).map(function(ele) {
settings = getValues( gadget.items );
(gadget.fields || []).forEach(function(ele) {
const obj = getValues( ele.items );
settings[return [ele.key ] =, flag && $.isEmptyObject( obj ) ? undefined : obj];
}) ) );
return settings;
};
/**