From 82622146f87a3e3e5e6a0c7bf36fa87d954be493 Mon Sep 17 00:00:00 2001 From: Stephane Bisson Date: Mon, 22 Jan 2018 14:46:31 -0800 Subject: [PATCH] RCLFilters specific message for invalid target page * always hide the big red .errorbox when rcfilters is enabled * always identify the changes-list section with .mw-changeslist or .mw-changeslist-empty * conditionally add .mw-changeslist-empty- to the changeslist section when the reason for it being empty is known * handle RCL being empty because the specified title is invalid or inter-wiki Bug: T184952 Change-Id: I5dd974f5f769503e89301dd22bdfd3d49b0dd11f --- includes/specialpage/ChangesListSpecialPage.php | 2 +- includes/specials/SpecialRecentchangeslinked.php | 12 +++++++++--- resources/Resources.php | 1 + .../mediawiki.rcfilters/mw.rcfilters.Controller.js | 2 ++ .../src/mediawiki.rcfilters/mw.rcfilters.init.js | 7 +------ .../mediawiki.rcfilters/styles/mw.rcfilters.less | 10 ++++++---- .../ui/mw.rcfilters.ui.ChangesListWrapperWidget.js | 14 +++++++++++--- 7 files changed, 31 insertions(+), 17 deletions(-) diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 5aa1c6bc31..4204443fbc 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -844,7 +844,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { */ protected function outputTimeout() { $this->getOutput()->addHTML( - '
' . + '
' . $this->msg( 'recentchanges-timeout' )->parse() . '
' ); diff --git a/includes/specials/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php index d4aef6c0d1..181b4db4c9 100644 --- a/includes/specials/SpecialRecentchangeslinked.php +++ b/includes/specials/SpecialRecentchangeslinked.php @@ -65,7 +65,6 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { $outputPage->addHTML( Html::errorBox( $this->msg( 'allpagesbadtitle' )->parse() ) ); - return false; } @@ -295,12 +294,19 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { } protected function outputNoResults() { - if ( $this->getTargetTitle() === false ) { + $targetTitle = $this->getTargetTitle(); + if ( $targetTitle === false ) { $this->getOutput()->addHTML( - '
' . + '
' . $this->msg( 'recentchanges-notargetpage' )->parse() . '
' ); + } elseif ( !$targetTitle || $targetTitle->isExternal() ) { + $this->getOutput()->addHTML( + '
' . + $this->msg( 'allpagesbadtitle' )->parse() . + '
' + ); } else { parent::outputNoResults(); } diff --git a/resources/Resources.php b/resources/Resources.php index 24654419b0..f5f17e04fd 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1929,6 +1929,7 @@ return [ 'recentchanges-timeout', 'recentchanges-network', 'recentchanges-notargetpage', + 'allpagesbadtitle', 'quotation-marks', ], 'dependencies' => [ diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index dcce92d6bd..16f58ee4d0 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -323,6 +323,8 @@ info.noResultsDetails = 'NO_RESULTS_TIMEOUT'; } else if ( $root.find( '.mw-changeslist-notargetpage' ).length ) { info.noResultsDetails = 'NO_RESULTS_NO_TARGET_PAGE'; + } else if ( $root.find( '.mw-changeslist-invalidtargetpage' ).length ) { + info.noResultsDetails = 'NO_RESULTS_INVALID_TARGET_PAGE'; } else { info.noResultsDetails = 'NO_RESULTS_NORMAL'; } diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 1f72484c02..d181532709 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -78,12 +78,7 @@ { $topSection: $topSection, $filtersContainer: $( '.rcfilters-container' ), - $changesListContainer: $( [ - '.mw-changeslist', - '.mw-changeslist-empty', - '.mw-changeslist-timeout', - '.mw-changeslist-notargetpage' - ].join( ', ' ) ), + $changesListContainer: $( '.mw-changeslist, .mw-changeslist-empty' ), $formContainer: $initialFieldset } ); diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less index 413d45bc8c..ca9b2524b6 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less @@ -75,10 +75,12 @@ } } - // Temporarily hide any specific 'no result' message while we load rcfilters. - .mw-changeslist-empty, - .mw-changeslist-timeout, - .mw-changeslist-notargetpage { + // Temporarily hide the empty results section while we load rcfilters. + .mw-changeslist-empty { + display: none; + } + + .errorbox { display: none; } diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js index e2092dc6df..b49a1cb615 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js @@ -158,8 +158,15 @@ .text( mw.msg( this.getMsgKeyForNoResults( noResultsDetails ) ) ) ); - this.$element.removeClass( 'mw-changeslist-timeout' ); - this.$element.removeClass( 'mw-changeslist-notargetpage' ); + // remove all classes matching mw-changeslist-* + this.$element.removeClass( function ( elementIndex, allClasses ) { + return allClasses + .split( ' ' ) + .filter( function ( className ) { + return className.indexOf( 'mw-changeslist-' ) === 0; + } ) + .join( ' ' ); + } ); } this.$element.append( $message ); @@ -212,7 +219,8 @@ NO_RESULTS_NORMAL: 'recentchanges-noresult', NO_RESULTS_TIMEOUT: 'recentchanges-timeout', NO_RESULTS_NETWORK_ERROR: 'recentchanges-network', - NO_RESULTS_NO_TARGET_PAGE: 'recentchanges-notargetpage' + NO_RESULTS_NO_TARGET_PAGE: 'recentchanges-notargetpage', + NO_RESULTS_INVALID_TARGET_PAGE: 'allpagesbadtitle' }; return reasonMsgKeyMap[ reason ]; }; -- 2.20.1