From: Roan Kattouw Date: Tue, 24 Jan 2017 04:12:04 +0000 (+1100) Subject: rcfilters: Remove implemented filters from list of links X-Git-Tag: 1.31.0-rc.0~4239^2 X-Git-Url: http://git.cyclocoop.org//%22%22.url_de_base%28%29.%22/%22?a=commitdiff_plain;h=b3ed469f15cb03508895044bf9aec62c8b9610a0;p=lhc%2Fweb%2Fwiklou.git rcfilters: Remove implemented filters from list of links This is a bit hacky because the filter name needs to be inferred from the class on each span, and because the separators aren't wrapped. Change-Id: Ib39ad435d3b48fa38533926e4ab49942c3bd5d6f --- diff --git a/resources/Resources.php b/resources/Resources.php index bd7f68e055..cd5e3b9fcb 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1747,7 +1747,6 @@ return [ 'resources/src/mediawiki.rcfilters/mw.rcfilters.init.js', ], 'styles' => [ - 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less', diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index ce0fc8a103..9f4ad484f4 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -146,6 +146,44 @@ // Initialize values controller.initialize(); + // HACK: Remove old-style filter links for filters handled by the widget + // Ideally the widget would handle all filters and we'd just remove .rcshowhide entirely + $( '.rcshowhide' ).children().each( function () { + // HACK: Interpret the class name to get the filter name + // This should really be set as a data attribute + var i, + name = null, + // Some of the older browsers we support don't have .classList, + // so we have to interpret the class attribute manually. + classes = this.getAttribute( 'class' ).split( ' ' ); + for ( i = 0; i < classes.length; i++ ) { + if ( classes[ i ].substr( 0, 'rcshow'.length ) === 'rcshow' ) { + name = classes[ i ].substr( 'rcshow'.length ); + break; + } + } + if ( name === null ) { + return; + } + if ( name === 'hidemine' ) { + // HACK: the span for hidemyself is called hidemine + name = 'hidemyself'; + } + // This span corresponds to a filter that's in our model, so remove it + if ( model.getItemByName( name ) ) { + // HACK: Remove the text node after the span. + // If there isn't one, we're at the end, so remove the text node before the span. + // This would be unnecessary if we added separators with CSS. + if ( this.nextSibling && this.nextSibling.nodeType === Node.TEXT_NODE ) { + this.parentNode.removeChild( this.nextSibling ); + } else if ( this.previousSibling && this.previousSibling.nodeType === Node.TEXT_NODE ) { + this.parentNode.removeChild( this.previousSibling ); + } + // Remove the span itself + this.parentNode.removeChild( this ); + } + } ); + $( '.rcoptions form' ).submit( function () { var $form = $( this ); diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less deleted file mode 100644 index 7f71c0cb31..0000000000 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less +++ /dev/null @@ -1,5 +0,0 @@ -.rcshowhidemine { - // HACK: Hide this filter since it already appears in - // the new filter drop-down. - display: none; -}