Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/83049


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
---
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, 97 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/49/83049/1

diff --git a/VisualEditor.i18n.php b/VisualEditor.i18n.php
index a4d3125..d7980f6 100644
--- a/VisualEditor.i18n.php
+++ b/VisualEditor.i18n.php
@@ -151,6 +151,7 @@
        'visualeditor-media-input-placeholder' => 'Search for media',
        'visualeditor-meta-tool' => 'Page settings',
        'visualeditor-mwalienextensioninspector-title' => 'MediaWiki extension',
+       'visualeditor-mweditmodesource-title' => 'Edit source',
        'visualeditor-mwhieroinspector-title' => 'Hieroglyphics',
        'visualeditor-mwmathinspector-title' => 'LaTeX',
        'visualeditor-notification-created' => '$1 has been created.',
@@ -485,6 +486,7 @@
 {{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-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 50a692c..46670b9 100644
--- a/VisualEditor.php
+++ b/VisualEditor.php
@@ -644,6 +644,7 @@
                        'visualeditor-listbutton-number-tooltip',
                        'visualeditor-media-input-placeholder',
                        'visualeditor-meta-tool',
+                       'visualeditor-mweditmodesource-title',
                        'visualeditor-outline-control-move-down',
                        'visualeditor-outline-control-move-up',
                        'visualeditor-outline-control-move-up',
@@ -705,6 +706,7 @@
                        've/ui/widgets/ve.ui.LanguageInputWidget.js',
                        've/ui/tools/ve.ui.ExperimentalTool.js',
                        've-mw/ui/tools/ve.ui.MWExperimentalTool.js',
+                       've-mw/ui/tools/ve.ui.MWEditModeTool.js',
                ),
                'dependencies' => array(
                        'ext.visualEditor.core',
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 7416ec2..077b340 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
@@ -909,6 +909,43 @@
 };
 
 /**
+ * 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 );
+
+       // 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 review "Good" button in the save dialog.
  *
  * @method
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..ae8e0c4
--- /dev/null
+++ b/modules/ve-mw/ui/tools/ve.ui.MWEditModeTool.js
@@ -0,0 +1,56 @@
+/*!
+ * 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 ve.ui.Tool
+ * @constructor
+ * @param {ve.ui.Toolbar} toolbar
+ * @param {Object} [config] Config options
+ */
+ve.ui.MWEditModeTool = function VeUiMWEditModeTool( toolbar, config ) {
+       ve.ui.Tool.call( this, toolbar, config );
+};
+
+/* Inheritance */
+
+ve.inheritClass( ve.ui.MWEditModeTool, ve.ui.Tool );
+
+/* Static Properties */
+
+ve.ui.MWEditModeTool.static.group = 'editmode';
+
+ve.ui.MWEditModeTool.prototype.onUpdateState = function () {
+       this.setActive( false );
+};
+
+/**
+ * MediaWiki UserInterface hieroglyphics tool.
+ *
+ * @class
+ * @extends ve.ui.InspectorTool
+ * @constructor
+ * @param {ve.ui.SurfaceToolbar} toolbar
+ * @param {Object} [config] Config options
+ */
+ve.ui.MWEditModeSourceTool = function VeUiMWEditModeSourceTool( toolbar, 
config ) {
+       ve.ui.MWEditModeTool.call( this, toolbar, config );
+};
+ve.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/83049
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iafcc02a737d9c6c3a59dce1caff130d47ca25650
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to