mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-15 10:35:48 +00:00
440a73206d
Bug: T158723 Change-Id: I8c397e9b10c51d78c0b0f18c494ca9f36400d23e
152 lines
4.4 KiB
JavaScript
152 lines
4.4 KiB
JavaScript
/*!
|
|
* VisualEditor MediaWiki UserInterface edit mode tool classes.
|
|
*
|
|
* @copyright 2011-2017 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* MediaWiki UserInterface edit mode tool.
|
|
*
|
|
* @class
|
|
* @abstract
|
|
* @extends ve.ui.MWPopupTool
|
|
* @constructor
|
|
* @param {OO.ui.ToolGroup} toolGroup
|
|
* @param {Object} [config] Config options
|
|
*/
|
|
ve.ui.MWEditModeTool = function VeUiMWEditModeTool( toolGroup, config ) {
|
|
var tool = this,
|
|
$content = $( '<p>' ).text( mw.msg( 'visualeditor-mweditmodewt-popup-body' ) ),
|
|
showAgainLayout, showAgainCheckbox;
|
|
|
|
// Parent constructor
|
|
ve.ui.MWEditModeTool.super.call( this, mw.msg( 'visualeditor-mweditmodewt-popup-title' ), toolGroup, config );
|
|
|
|
if ( !mw.user.isAnon() ) {
|
|
showAgainCheckbox = new OO.ui.CheckboxInputWidget()
|
|
.on( 'change', function ( value ) {
|
|
var configValue = value ? '1' : '';
|
|
new mw.Api().saveOption( 'visualeditor-hidevisualswitchpopup', configValue );
|
|
mw.user.options.set( 'visualeditor-hidevisualswitchpopup', configValue );
|
|
} );
|
|
|
|
showAgainLayout = new OO.ui.FieldLayout( showAgainCheckbox, {
|
|
align: 'inline',
|
|
label: mw.msg( 'visualeditor-mweditmodeve-showagain' )
|
|
} );
|
|
$content = $content.add( showAgainLayout.$element );
|
|
}
|
|
|
|
this.popup.$body
|
|
.addClass( 've-init-mw-editSwitch' )
|
|
.append( $content );
|
|
this.popup.$element.click( function () {
|
|
tool.getPopup().toggle( false );
|
|
} );
|
|
this.$element.append( this.popup.$element );
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
OO.inheritClass( ve.ui.MWEditModeTool, ve.ui.MWPopupTool );
|
|
|
|
/* Static Properties */
|
|
|
|
ve.ui.MWEditModeTool.static.group = 'editMode';
|
|
|
|
ve.ui.MWEditModeTool.static.autoAddToCatchall = false;
|
|
|
|
ve.ui.MWEditModeTool.static.autoAddToGroup = false;
|
|
|
|
/* Methods */
|
|
|
|
/** */
|
|
ve.ui.MWEditModeTool.prototype.onSelect = function () {
|
|
// Bypass OO.ui.PopupTool.prototype.onSelect
|
|
OO.ui.Tool.prototype.onSelect.apply( this, arguments );
|
|
};
|
|
|
|
ve.ui.MWEditModeTool.prototype.onUpdateState = function () {
|
|
// Parent method
|
|
ve.ui.MWEditModeTool.super.prototype.onUpdateState.apply( this, arguments );
|
|
|
|
this.setActive( false );
|
|
this.setDisabled( false );
|
|
};
|
|
|
|
/**
|
|
* MediaWiki UserInterface edit mode source tool.
|
|
*
|
|
* @class
|
|
* @extends ve.ui.MWEditModeTool
|
|
* @constructor
|
|
* @param {OO.ui.ToolGroup} toolGroup
|
|
* @param {Object} [config] Config options
|
|
*/
|
|
ve.ui.MWEditModeSourceTool = function VeUiMWEditModeSourceTool() {
|
|
// Parent constructor
|
|
ve.ui.MWEditModeSourceTool.super.apply( this, arguments );
|
|
};
|
|
OO.inheritClass( ve.ui.MWEditModeSourceTool, ve.ui.MWEditModeTool );
|
|
ve.ui.MWEditModeSourceTool.static.name = 'editModeSource';
|
|
ve.ui.MWEditModeSourceTool.static.icon = 'wikiText';
|
|
ve.ui.MWEditModeSourceTool.static.title =
|
|
OO.ui.deferMsg( 'visualeditor-mweditmodesource-tool' );
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
ve.ui.MWEditModeSourceTool.prototype.onSelect = function () {
|
|
this.toolbar.getTarget().editSource();
|
|
this.setActive( false );
|
|
};
|
|
ve.ui.toolFactory.register( ve.ui.MWEditModeSourceTool );
|
|
|
|
/**
|
|
* MediaWiki UserInterface edit mode visual tool.
|
|
*
|
|
* @class
|
|
* @extends ve.ui.MWEditModeTool
|
|
* @constructor
|
|
* @param {OO.ui.ToolGroup} toolGroup
|
|
* @param {Object} [config] Config options
|
|
*/
|
|
ve.ui.MWEditModeVisualTool = function VeUiMWEditModeVisualTool() {
|
|
// Parent constructor
|
|
ve.ui.MWEditModeVisualTool.super.apply( this, arguments );
|
|
};
|
|
OO.inheritClass( ve.ui.MWEditModeVisualTool, ve.ui.MWEditModeTool );
|
|
ve.ui.MWEditModeVisualTool.static.name = 'editModeVisual';
|
|
ve.ui.MWEditModeVisualTool.static.icon = 'edit';
|
|
ve.ui.MWEditModeVisualTool.static.title =
|
|
OO.ui.deferMsg( 'visualeditor-mweditmodeve-tool' );
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
ve.ui.MWEditModeVisualTool.prototype.onSelect = function () {
|
|
this.toolbar.getTarget().switchToVisualEditor();
|
|
this.setActive( false );
|
|
};
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
ve.ui.MWEditModeVisualTool.prototype.onUpdateState = function () {
|
|
var isVisualModeNowAvailable = ve.init.target.isModeAvailable( 'visual' );
|
|
|
|
// Parent method
|
|
ve.ui.MWEditModeVisualTool.super.prototype.onUpdateState.apply( this, arguments );
|
|
|
|
// Cached for performance
|
|
if ( this.isVisualModeAvailable !== isVisualModeNowAvailable ) {
|
|
this.isVisualModeAvailable = isVisualModeNowAvailable;
|
|
|
|
this.setDisabled( !isVisualModeNowAvailable );
|
|
this.setTitle( OO.ui.msg(
|
|
isVisualModeNowAvailable ?
|
|
'visualeditor-mweditmodeve-tool' :
|
|
'visualeditor-mweditmodeve-tool-unavailable'
|
|
) );
|
|
}
|
|
};
|
|
ve.ui.toolFactory.register( ve.ui.MWEditModeVisualTool );
|