Merge "Allow a TitleInputWidget user to decide, if an empty value should be validated"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 16 Nov 2015 18:40:00 +0000 (18:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 16 Nov 2015 18:40:00 +0000 (18:40 +0000)
includes/widget/TitleInputWidget.php
resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js

index 25030b1..8226148 100644 (file)
@@ -15,6 +15,8 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
        protected $namespace = null;
        protected $relative = null;
        protected $suggestions = null;
+       protected $highlightFirst = null;
+       protected $validate = null;
 
        /**
         * @param array $config Configuration options
@@ -22,6 +24,9 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
         * @param bool|null $config['relative'] If a namespace is set,
         *  return a title relative to it (default: true)
         * @param bool|null $config['suggestions'] Display search suggestions (default: true)
+        * @param bool|null $config['highlightFirst'] Automatically highlight
+        *  the first result (default: true)
+        * @param bool|null $config['validate'] Whether the input must be a valid title (default: true)
         */
        public function __construct( array $config = array() ) {
                // Parent constructor
@@ -42,6 +47,9 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
                if ( isset( $config['highlightFirst'] ) ) {
                        $this->highlightFirst = $config['highlightFirst'];
                }
+               if ( isset( $config['validate'] ) ) {
+                       $this->validate = $config['validate'];
+               }
 
                // Initialization
                $this->addClasses( array( 'mw-widget-titleInputWidget' ) );
@@ -64,6 +72,9 @@ class TitleInputWidget extends \OOUI\TextInputWidget {
                if ( $this->highlightFirst !== null ) {
                        $config['highlightFirst'] = $this->highlightFirst;
                }
+               if ( $this->validate !== null ) {
+                       $config['validate'] = $this->validate;
+               }
                return parent::getConfig( $config );
        }
 }
index 67f3e01..84732aa 100644 (file)
@@ -23,6 +23,7 @@
         * @cfg {boolean} [showRedlink] Show red link to exact match if it doesn't exist
         * @cfg {boolean} [showImages] Show page images
         * @cfg {boolean} [showDescriptions] Show page descriptions
+        * @cfg {boolean} [validate=true] Whether the input must be a valid title
         * @cfg {Object} [cache] Result cache which implements a 'set' method, taking keyed values as an argument
         */
        mw.widgets.TitleWidget = function MwWidgetsTitleWidget( config ) {
@@ -44,6 +45,7 @@
                this.showRedlink = !!config.showRedlink;
                this.showImages = !!config.showImages;
                this.showDescriptions = !!config.showDescriptions;
+               this.validate = config.validate !== undefined ? config.validate : true;
                this.cache = config.cache;
 
                // Initialization
         * @return {boolean} The query is valid
         */
        mw.widgets.TitleWidget.prototype.isQueryValid = function () {
-               return !!this.getTitle();
+               return this.validate ? !!this.getTitle() : true;
        };
 
 }( jQuery, mediaWiki ) );