mediawiki-extensions-Visual.../modules/ve-mw/ui/pages/ve.ui.MWParameterPlaceholderPage.js
Moriel Schottlender 3a7b99f6a6 Keep the parameter list expanded after it was expanded once
In the template dialog, keep the parameter search widget expanded
with all parameters showing if it was already expanded once.

Also keep the parameter list available after inserting each parameter
instead of asking the user to click the add details repeatedly.

Bug: T95696
Change-Id: I14a47dbea5c69532238e7e67290e613121fdc40e
2015-04-24 17:45:04 +01:00

108 lines
2.9 KiB
JavaScript

/*!
* VisualEditor user interface MWParameterPlaceholderPage class.
*
* @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* MediaWiki transclusion dialog parameter placeholder page.
*
* @class
* @extends OO.ui.PageLayout
*
* @constructor
* @param {ve.dm.MWTemplateModel} parameter Template
* @param {string} name Unique symbolic name of page
* @param {Object} [config] Configuration options
*/
ve.ui.MWParameterPlaceholderPage = function VeUiMWParameterPlaceholderPage( parameter, name, config ) {
// Configuration initialization
config = ve.extendObject( {
scrollable: false
}, config );
// Parent constructor
OO.ui.PageLayout.call( this, name, config );
// Properties
this.name = name;
this.parameter = parameter;
this.template = this.parameter.getTemplate();
this.addParameterSearch = new ve.ui.MWParameterSearchWidget( this.template, {
$: this.$,
showAll: !!config.expandedParamList
} )
.connect( this, {
select: 'onParameterSelect',
showAll: 'onParameterShowAll'
} );
this.removeButton = new OO.ui.ButtonWidget( {
framed: false,
icon: 'remove',
title: ve.msg( 'visualeditor-dialog-transclusion-remove-param' ),
flags: [ 'destructive' ],
classes: [ 've-ui-mwTransclusionDialog-removeButton' ]
} )
.connect( this, { click: 'onRemoveButtonClick' } );
this.addParameterFieldset = new OO.ui.FieldsetLayout( {
label: ve.msg( 'visualeditor-dialog-transclusion-add-param' ),
icon: 'parameter',
classes: [ 've-ui-mwTransclusionDialog-addParameterFieldset' ],
$content: this.addParameterSearch.$element
} );
// Initialization
this.$element
.addClass( 've-ui-mwParameterPlaceholderPage' )
.append( this.addParameterFieldset.$element, this.removeButton.$element );
};
/* Inheritance */
OO.inheritClass( ve.ui.MWParameterPlaceholderPage, OO.ui.PageLayout );
/* Methods */
/**
* Respond to the parameter search widget showAll event
* @fires showAll
*/
ve.ui.MWParameterPlaceholderPage.prototype.onParameterShowAll = function () {
this.emit( 'showAll', this.name );
};
/**
* @inheritdoc
*/
ve.ui.MWParameterPlaceholderPage.prototype.setOutlineItem = function ( outlineItem ) {
// Parent method
OO.ui.PageLayout.prototype.setOutlineItem.call( this, outlineItem );
if ( this.outlineItem ) {
this.outlineItem
.setIcon( 'parameter' )
.setMovable( false )
.setRemovable( true )
.setLevel( 1 )
.setFlags( [ 'placeholder' ] )
.setLabel( ve.msg( 'visualeditor-dialog-transclusion-add-param' ) );
}
};
ve.ui.MWParameterPlaceholderPage.prototype.onParameterSelect = function ( name ) {
var param;
if ( name ) {
param = new ve.dm.MWParameterModel( this.template, name );
this.addParameterSearch.query.setValue( '' );
this.template.addParameter( param );
}
};
ve.ui.MWParameterPlaceholderPage.prototype.onRemoveButtonClick = function () {
this.parameter.remove();
};