Florianschmidtwelzow has uploaded a new change for review.

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

Change subject: Use mw.widgets.DateInputWidget or ToggleSwitchWidget for 
parameters with appropriate type
......................................................................

Use mw.widgets.DateInputWidget or ToggleSwitchWidget for parameters with 
appropriate type

In TemplateData you can specify different types of parameter inputs,
e.g. date or boolean. In VE this would still show up as a simple text
input widget.

This change implements a way, that parameter inputs can use another ui
element, specific for the type of the param. For the start this supports
the "date" type, which uses mw.widgets.DateInputWidget, and boolean, which
uses the new ve.ui.MWToggleSwitchWidget.

The new ve.ui.MWToggleSwitchWidget is extended from OO.ui.ToggleSwitchWidget and
behaves mostly the same like it. But getValue() will return the value of the
widget as a string (1 = true, 0 = false).

Change-Id: I17adde9a90d395324aa50c83eb446967f1c835d8
---
M extension.json
M modules/ve-mw/dm/models/ve.dm.MWParameterModel.js
M modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
A modules/ve-mw/ui/widgets/ve.ui.MWToggleSwitchWidget.js
4 files changed, 65 insertions(+), 2 deletions(-)


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

diff --git a/extension.json b/extension.json
index 90d3dfc..a6a489c 100644
--- a/extension.json
+++ b/extension.json
@@ -1437,6 +1437,7 @@
                                
"modules/ve-mw/ui/widgets/ve.ui.MWMoreParametersResultWidget.js",
                                
"modules/ve-mw/ui/widgets/ve.ui.MWNoParametersResultWidget.js",
                                
"modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js",
+                               
"modules/ve-mw/ui/widgets/ve.ui.MWToggleSwitchWidget.js",
                                
"modules/ve-mw/ui/pages/ve.ui.MWTemplatePage.js",
                                
"modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js",
                                
"modules/ve-mw/ui/pages/ve.ui.MWParameterPlaceholderPage.js",
diff --git a/modules/ve-mw/dm/models/ve.dm.MWParameterModel.js 
b/modules/ve-mw/dm/models/ve.dm.MWParameterModel.js
index 2dc22d6..e1cac57 100644
--- a/modules/ve-mw/dm/models/ve.dm.MWParameterModel.js
+++ b/modules/ve-mw/dm/models/ve.dm.MWParameterModel.js
@@ -145,6 +145,15 @@
 };
 
 /**
+ * Get the type of this parameter.
+ *
+ * @return {string} Parameter type
+ */
+ve.dm.MWParameterModel.prototype.getType = function () {
+       return this.template.getSpec().getParameterType( this.name );
+}
+
+/**
  * Set parameter value.
  *
  * @param {string} value Parameter value
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js 
b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
index 0f9db7f..10d0d02 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
@@ -17,7 +17,8 @@
  * @param {Object} [config] Configuration options
  */
 ve.ui.MWParameterPage = function VeUiMWParameterPage( parameter, name, config 
) {
-       var placeholder = null,
+       var valueInput,
+               placeholder = null,
                paramName = parameter.getName();
 
        // Configuration initialization
@@ -45,7 +46,15 @@
        } else if ( this.exampleValue ) {
                placeholder = ve.msg( 
'visualeditor-dialog-transclusion-param-example', this.exampleValue );
        }
-       this.valueInput = new OO.ui.TextInputWidget( {
+
+       if ( this.parameter.getType() in 
this.constructor.static.parameterValueInputs ) {
+               valueInput = this.constructor.static.parameterValueInputs[ 
this.parameter.getType() ];
+       } else {
+               // if not, use the default text input
+               valueInput = OO.ui.TextInputWidget;
+       }
+
+       this.valueInput = new valueInput( {
                multiline: true,
                autosize: true,
                required: this.parameter.isRequired(),
@@ -181,6 +190,12 @@
 
 OO.inheritClass( ve.ui.MWParameterPage, OO.ui.PageLayout );
 
+/* Static Properties */
+ve.ui.MWParameterPage.static.parameterValueInputs = {
+       'date': mw.widgets.DateInputWidget,
+       'boolean': ve.ui.MWToggleSwitchWidget
+}
+
 /* Methods */
 
 /**
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWToggleSwitchWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWToggleSwitchWidget.js
new file mode 100644
index 0000000..322e4d7
--- /dev/null
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWToggleSwitchWidget.js
@@ -0,0 +1,38 @@
+/*!
+ * VisualEditor UserInterface MWToggleSwitchWidget class.
+ *
+ * @copyright 2011-2015 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * Creates an ve.ui.MWToggleSwitchWidget object.
+ *
+ * @class
+ * @extends OO.ui.ToggleSwitchWidget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+ve.ui.MWToggleSwitchWidget = function VeUiMWToggleSwitchWidget( config ) {
+       // Parent constructor
+       OO.ui.ToggleSwitchWidget.call( this, config );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.ui.MWToggleSwitchWidget, OO.ui.ToggleSwitchWidget );
+
+/* Methods */
+
+/**
+ * Same as OO.ui.ToggleSwitchWidget.getValue() but converts the value into
+ * a string (true -> '1'; false -> '0').
+ *
+ * @return {String}
+ */
+ve.ui.MWToggleSwitchWidget.prototype.getValue = function () {
+       var parent = OO.ui.ToggleSwitchWidget.prototype.getValue.call( this );
+
+       return parent ? '1' : '0';
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I17adde9a90d395324aa50c83eb446967f1c835d8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <[email protected]>

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

Reply via email to