mediawiki-extensions-Visual.../modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js

152 lines
4.4 KiB
JavaScript
Raw Normal View History

/*!
* 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 =
Update VE core submodule to master (f2277ea) New changes: 56de6f5 Localisation updates from https://translatewiki.net. f8bda64 Widgetise demo menu 6ac48d8 Localisation updates from https://translatewiki.net. 365e131 builderloader: Omit value for boolean "disabled" attribute per HTML5 706e4b3 Prevent double counting of DM nodes in getNodeAndOffset b141a7d Update OOjs UI to v0.1.0-pre (d2451ac748) c5b3921 Localisation updates from https://translatewiki.net. 1606983 Update reference to ConfirmationDialog to use MessageDialog Deletions: * Styles for ve.ui.MWBetaWelcomeDialog - not needed anymore because OO.ui.MessageDialog provides them * Styles for ve.ui.MWGalleryInspector - not needed anymore because ve.ui.MWExtensionInspector provides part of them and the rest are being replaced by programatic sizing Modifications: * ve.ui.MWLinkTargetInputWidget - Added support for validation and href getter * Split message between tool and dialog title for ve.ui.MWEditModeTool and ve.ui.MWWikitextSwitchConfirmDialog General changes: * Updated inheritance. * Added manager param to constructors of dialogs and inspectors. * Updated use of show/hide with toggle. * Added meaningful descriptions of dialog and inspector classes. * Configured dialog and inspector sizes statically. * Configured dialog action buttons statically. * Interfaced with OO.ui.ActionSet to control action buttons. * Moved applyChanges code into getActionProcess methods. * Always using .next in setup/ready process getters and .first in hold/teardown process getters. Change-Id: Ia74732e6e32c0808eee021f0a26225b9e6c3f971
2014-07-14 21:32:49 +00:00
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 );