Merge "Change `.forEach()` to `for ()` loop with break"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 11 Feb 2019 18:10:02 +0000 (18:10 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 11 Feb 2019 18:10:02 +0000 (18:10 +0000)
includes/linkeddata/PageDataRequestHandler.php
includes/watcheditem/WatchedItemQueryService.php
resources/src/mediawiki.widgets/mw.widgets.TitleSearchWidget.js

index d70688f..61efba0 100644 (file)
@@ -40,7 +40,6 @@ class PageDataRequestHandler {
         * @param WebRequest $request
         *
         * @return bool
-        * @throws HttpError
         */
        public function canHandleRequest( $subPage, WebRequest $request ) {
                if ( $subPage === '' || $subPage === null ) {
index 95b4cb4..a85e7e8 100644 (file)
@@ -88,7 +88,6 @@ class WatchedItemQueryService {
 
        /**
         * @return IDatabase
-        * @throws MWException
         */
        private function getConnection() {
                return $this->loadBalancer->getConnectionRef( DB_REPLICA, [ 'watchlist' ] );
index b9bd1e0..f1f98a2 100644 (file)
                var widget = this;
 
                this.getRequestData().done( function ( data ) {
+                       if ( widget.query.isReadOnly() ) {
+                               // The request object is always abortable, so just
+                               // prevent the results from displaying
+                               return;
+                       }
                        // Parent method
                        mw.widgets.TitleSearchWidget.parent.prototype.onQueryChange.call( widget );
                        widget.results.addItems( widget.getOptionsFromData( data ) );
                return response.query || {};
        };
 
+       /**
+        * Check if the widget is read-only.
+        *
+        * @return {boolean}
+        */
+       mw.widgets.TitleSearchWidget.prototype.isReadOnly = function () {
+               return this.query.isReadOnly();
+       };
+
+       /**
+        * Set the read-only state of the widget.
+        *
+        * @param {boolean} readOnly Make input read-only
+        * @chainable
+        * @return {mw.widgets.TitleSearchWidget} The widget, for chaining
+        */
+       mw.widgets.TitleSearchWidget.prototype.setReadOnly = function ( readOnly ) {
+               this.query.setReadOnly( readOnly );
+               if ( readOnly ) {
+                       // Hide results
+                       this.results.clearItems();
+               }
+               return this;
+       };
+
 }() );