mediawiki-extensions-Visual.../modules/ve-mw/ui/dialogs/ve.ui.MWAdvancedTransclusionDialog.js
Trevor Parscal eca0a08ad9 (Stand back again) Even moar label manias! (label refactoring) + VE core update
Update VE core submodule to master (84ced37) and update calling code
for changes in OOUI.

Depends on Ic967b88d55daf48d365487e17f76488b3f02c60f and Ib599b9bd5028e2df084fcc3da657aeb7f1569d2a

New changes:
94f03c3 Undefined variables first in selectNodes
62b5648 Localisation updates from https://translatewiki.net.
10c5a18 Don't descend into handlesOwnChildren nodes in selectNodes
4ed2432 Update jquery.client to MW's master (45192156d7)
d7e24b8 Localisation updates from https://translatewiki.net.
babb9da Localisation updates from https://translatewiki.net.
4639d18 Localisation updates from https://translatewiki.net.
a561537 Localisation updates from https://translatewiki.net.
8f7053a Localisation updates from https://translatewiki.net.
7112cc2 Update OOjs UI to v0.1.0-pre (a290673bbd)

Change-Id: Ie7d58472619509782f23a7dedc1ec27c3dcc7543
2014-02-12 14:05:23 -08:00

133 lines
3.5 KiB
JavaScript

/*
* VisualEditor user interface MWAdvancedTransclusionDialog class.
*
* @copyright 2011-2014 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* Dialog for inserting and editing MediaWiki transclusions.
*
* @class
* @extends ve.ui.MWTransclusionDialog
*
* @constructor
* @param {ve.ui.WindowSet} windowSet Window set this dialog is part of
* @param {Object} [config] Configuration options
*/
ve.ui.MWAdvancedTransclusionDialog = function VeUiMWAdvancedTransclusionDialog( windowSet, config ) {
// Parent constructor
ve.ui.MWTransclusionDialog.call( this, windowSet, config );
// Properties
this.node = null;
this.transclusion = null;
this.loaded = false;
};
/* Inheritance */
OO.inheritClass( ve.ui.MWAdvancedTransclusionDialog, ve.ui.MWTransclusionDialog );
/* Static Properties */
ve.ui.MWAdvancedTransclusionDialog.static.name = 'transclusion';
ve.ui.MWAdvancedTransclusionDialog.static.title =
OO.ui.deferMsg( 'visualeditor-dialog-transclusion-title' );
ve.ui.MWAdvancedTransclusionDialog.static.icon = 'template';
/* Methods */
/**
* Handle outline controls move events.
*
* @param {number} places Number of places to move the selected item
*/
ve.ui.MWAdvancedTransclusionDialog.prototype.onOutlineControlsMove = function ( places ) {
var part, index, name, promise,
parts = this.transclusion.getParts(),
item = this.bookletLayout.getOutline().getSelectedItem();
if ( item ) {
name = item.getData();
part = this.transclusion.getPartFromId( name );
index = ve.indexOf( part, parts );
// Auto-removes part from old location
promise = this.transclusion.addPart( part, index + places );
if ( this.loaded ) {
promise.done( ve.bind( this.setPageByName, this, part.getId() ) );
}
}
};
/**
* Handle outline controls add events.
*
* @param {string} type Type of item to add
*/
ve.ui.MWAdvancedTransclusionDialog.prototype.onOutlineControlsAdd = function ( type ) {
var part, parts, item, index, promise;
if ( type === 'content' ) {
part = new ve.dm.MWTransclusionContentModel( this.transclusion, '', 'user' );
} else if ( type === 'template' ) {
part = new ve.dm.MWTemplatePlaceholderModel( this.transclusion, 'user' );
}
if ( part ) {
parts = this.transclusion.getParts();
item = this.bookletLayout.getOutline().getSelectedItem();
index = item ?
ve.indexOf( this.transclusion.getPartFromId( item.getData() ), parts ) + 1 :
parts.length;
promise = this.transclusion.addPart( part, index );
if ( this.loaded ) {
promise.done( ve.bind( this.setPageByName, this, part.getId() ) );
}
}
};
/**
* @inheritdoc
*/
ve.ui.MWAdvancedTransclusionDialog.prototype.getBookletLayout = function () {
return new OO.ui.BookletLayout( {
'$': this.$,
'continuous': true,
'autoFocus': true,
'outlined': true,
'editable': true,
'adders': [
{
'name': 'template',
'icon': 'template',
'title': ve.msg( 'visualeditor-dialog-transclusion-add-template' )
},
{
'name': 'content',
'icon': 'source',
'title': ve.msg( 'visualeditor-dialog-transclusion-add-content' )
}
]
} );
};
/**
* @inheritdoc
*/
ve.ui.MWAdvancedTransclusionDialog.prototype.initialize = function () {
// Parent method
ve.ui.MWTransclusionDialog.prototype.initialize.call( this );
// Events
this.bookletLayout.getOutlineControls().connect( this, {
'move': 'onOutlineControlsMove',
'add': 'onOutlineControlsAdd'
} );
};
/* Registration */
ve.ui.dialogFactory.register( ve.ui.MWAdvancedTransclusionDialog );