Catrope has submitted this change and it was merged.

Change subject: Button tool to switch to edit source with changes
......................................................................


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
(cherry picked from commit 7b2cacbe57ae1b73369ccec7d1ea76cbc142e6bf)
---
M VisualEditor.i18n.php
M VisualEditor.php
M modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
A modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
4 files changed, 110 insertions(+), 1 deletion(-)

Approvals:
  Catrope: Verified; Looks good to me, approved



diff --git a/VisualEditor.i18n.php b/VisualEditor.i18n.php
index 344a13b..d37c806 100644
--- a/VisualEditor.i18n.php
+++ b/VisualEditor.i18n.php
@@ -159,6 +159,10 @@
        '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.',
@@ -547,6 +551,8 @@
 {{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.
 
diff --git a/VisualEditor.php b/VisualEditor.php
index 5bf1cd2..76fa84a 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -573,6 +573,7 @@
                        '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',
@@ -706,6 +707,8 @@
                        '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',
diff --git a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
index 0a59927..d02282d 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
@@ -793,6 +793,47 @@
 };
 
 /**
+ * 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.
  *
  * @method
@@ -1096,7 +1137,7 @@
                {
                        'type': 'list',
                        'icon': 'menu',
-                       'include': [ 'meta', 'categories', 'languages' ] }
+                       'include': [ 'meta', 'categories', 'languages', 
'editModeSource' ] }
        ] );
 
        $actionTools
diff --git a/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js 
b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
new file mode 100644
index 0000000..c97020b
--- /dev/null
+++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
@@ -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 );

-- 
To view, visit https://gerrit.wikimedia.org/r/92913
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iafcc02a737d9c6c3a59dce1caff130d47ca25650
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: wmf/1.23wmf2
Gerrit-Owner: Catrope <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to