mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-24 02:38:40 +00:00
Button tool to switch to edit source with changes
By serialising the current DOM, and injecting it into a form we can end up in the source editor with our VE changes converted. Bug: 50687 Change-Id: Iafcc02a737d9c6c3a59dce1caff130d47ca25650
This commit is contained in:
parent
a3295f0939
commit
7b2cacbe57
|
@ -159,6 +159,10 @@ $messages['en'] = array(
|
|||
'visualeditor-media-input-placeholder' => 'Search for media',
|
||||
'visualeditor-meta-tool' => 'Page settings',
|
||||
'visualeditor-mwalienextensioninspector-title' => 'MediaWiki extension',
|
||||
'visualeditor-mweditmodesource-title' => 'Switch to source editing',
|
||||
'visualeditor-mweditmodesource-warning' => 'You are about to switch to source editing.
|
||||
Any changes you\'ve made to this document will be kept, but you will not be able switch back to VisualEditor without saving or reloading the page.
|
||||
Do you want to continue?',
|
||||
'visualeditor-mwhieroinspector-title' => 'Hieroglyphics',
|
||||
'visualeditor-mwmathinspector-title' => 'LaTeX',
|
||||
'visualeditor-notification-created' => '"$1" has been created.',
|
||||
|
@ -529,6 +533,8 @@ Parameters:
|
|||
{{Identical|Page settings}}',
|
||||
'visualeditor-mwalienextensioninspector-title' => 'Used as title for unknown MediaWiki extensions.
|
||||
{{Identical|MediaWiki extension}}',
|
||||
'visualeditor-mweditmodesource-title' => 'Label for changing edit mode to source editing.',
|
||||
'visualeditor-mweditmodesource-warning' => 'Warning message show before changing edit mode to source editing.',
|
||||
'visualeditor-mwhieroinspector-title' => 'Used as title for hieroglyphics inspector.',
|
||||
'visualeditor-mwmathinspector-title' => 'Used as title for MathInspector.
|
||||
|
||||
|
|
|
@ -572,6 +572,7 @@ $wgResourceModules += array(
|
|||
've/ui/tools/ve.ui.InspectorTool.js',
|
||||
've/ui/tools/ve.ui.ListTool.js',
|
||||
|
||||
've-mw/ui/tools/ve.ui.MWEditModeTool.js',
|
||||
've-mw/ui/tools/ve.ui.MWFormatTool.js',
|
||||
've-mw/ui/tools/ve.ui.MWDialogTool.js',
|
||||
've-mw/ui/tools/ve.ui.MWPopupTool.js',
|
||||
|
@ -705,6 +706,8 @@ $wgResourceModules += array(
|
|||
'visualeditor-listbutton-number-tooltip',
|
||||
'visualeditor-media-input-placeholder',
|
||||
'visualeditor-meta-tool',
|
||||
'visualeditor-mweditmodesource-title',
|
||||
'visualeditor-mweditmodesource-warning',
|
||||
'visualeditor-parameter-input-placeholder',
|
||||
'visualeditor-parameter-search-no-unused',
|
||||
'visualeditor-parameter-search-unknown',
|
||||
|
|
|
@ -792,6 +792,47 @@ ve.init.mw.ViewPageTarget.prototype.saveDocument = function () {
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Switch to edit source mode with the current wikitext
|
||||
*
|
||||
* @method
|
||||
*/
|
||||
ve.init.mw.ViewPageTarget.prototype.editSource = function () {
|
||||
var doc = this.surface.getModel().getDocument();
|
||||
|
||||
this.$document.css( 'opacity', 0.5 );
|
||||
|
||||
if ( !confirm( ve.msg( 'visualeditor-mweditmodesource-warning' ) ) ) {
|
||||
this.$document.css( 'opacity', 1 );
|
||||
return;
|
||||
}
|
||||
// Get Wikitext from the DOM
|
||||
this.serialize(
|
||||
ve.dm.converter.getDomFromData( doc.getFullData(), doc.getStore(), doc.getInternalList() ),
|
||||
ve.bind( function ( wikitext ) {
|
||||
var options = this.getSaveOptions(),
|
||||
action = new mw.Uri( mw.util.wikiScript() ).extend( { title: this.pageName, action: 'edit' } ).toString();
|
||||
|
||||
this.submitting = true;
|
||||
|
||||
$( '<form method="post" enctype="multipart/form-data"></form>' )
|
||||
.attr( 'action', action )
|
||||
.append( $( '<textarea name="wpTextbox1"></textarea>' ).val( wikitext ) )
|
||||
.append( $( '<input type="checkbox" name="wpMinoredit" value="1">' ).prop( 'checked', options.minor ) )
|
||||
.append( $( '<input type="checkbox" name="wpWatchthis" value="1">' ).prop( 'checked', options.watch ) )
|
||||
.append( $( '<input type="hidden" name="wpSummary">' ).val( options.summary ) )
|
||||
.append( $( '<input type="hidden" name="wpStarttime">' ).val( this.startTimeStamp ) )
|
||||
.append( $( '<input type="hidden" name="wpEditToken">' ).val( this.editToken ) )
|
||||
.append( $( '<input type="hidden" name="wpDiff" value="1">' ) )
|
||||
.append( $( '<input type="hidden" name="model" value="wikitext">' ) )
|
||||
.append( $( '<input type="hidden" name="format" value="text/x-wiki">' ) )
|
||||
.append( $( '<input type="hidden" name="wpEdittime">' ) )
|
||||
.submit()
|
||||
;
|
||||
}, this )
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle clicks on the resolve conflict button in the conflict dialog.
|
||||
*
|
||||
|
@ -1096,7 +1137,7 @@ ve.init.mw.ViewPageTarget.prototype.attachToolbarButtons = function () {
|
|||
{
|
||||
'type': 'list',
|
||||
'icon': 'menu',
|
||||
'include': [ 'meta', 'categories', 'languages' ] }
|
||||
'include': [ 'meta', 'categories', 'languages', 'editModeSource' ] }
|
||||
] );
|
||||
|
||||
$actionTools
|
||||
|
|
59
modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
Normal file
59
modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*!
|
||||
* VisualEditor MediaWiki UserInterface edit mode tool classes.
|
||||
*
|
||||
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
|
||||
* @license The MIT License (MIT); see LICENSE.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* MediaWiki UserInterface media edit tool.
|
||||
*
|
||||
* @class
|
||||
* @abstract
|
||||
* @extends OO.ui.Tool
|
||||
* @constructor
|
||||
* @param {OO.ui.ToolGroup} toolGroup
|
||||
* @param {Object} [config] Config options
|
||||
*/
|
||||
ve.ui.MWEditModeTool = function VeUiMWEditModeTool( toolGroup, config ) {
|
||||
OO.ui.Tool.call( this, toolGroup, config );
|
||||
};
|
||||
|
||||
/* Inheritance */
|
||||
|
||||
OO.inheritClass( ve.ui.MWEditModeTool, OO.ui.Tool );
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.ui.MWEditModeTool.static.group = 'editMode';
|
||||
ve.ui.MWEditModeTool.static.autoAdd = false;
|
||||
|
||||
/* Methods */
|
||||
|
||||
ve.ui.MWEditModeTool.prototype.onUpdateState = function () {
|
||||
this.setActive( 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( toolGroup, config ) {
|
||||
ve.ui.MWEditModeTool.call( this, toolGroup, config );
|
||||
};
|
||||
OO.inheritClass( ve.ui.MWEditModeSourceTool, ve.ui.MWEditModeTool );
|
||||
ve.ui.MWEditModeSourceTool.static.name = 'editModeSource';
|
||||
ve.ui.MWEditModeSourceTool.static.icon = 'source';
|
||||
ve.ui.MWEditModeSourceTool.static.titleMessage = 'visualeditor-mweditmodesource-title';
|
||||
|
||||
ve.ui.MWEditModeSourceTool.prototype.onSelect = function () {
|
||||
this.setActive( false );
|
||||
this.toolbar.getTarget().editSource();
|
||||
};
|
||||
|
||||
ve.ui.toolFactory.register( ve.ui.MWEditModeSourceTool );
|
Loading…
Reference in a new issue