Mooeypoo has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/379273 )
Change subject: [experimental] RCFilters: Toggle the entire interface and lazy-load ...................................................................... [experimental] RCFilters: Toggle the entire interface and lazy-load Allow users to hide the interface, and lazy-load it next time they refresh the page in case they want to open it. ** This is a proposal only! DO NOT MERGE ** Change-Id: If1951844ce036ed812452e89051597ff7faebbc2 --- M includes/Preferences.php M includes/specialpage/ChangesListSpecialPage.php M languages/i18n/en.json M languages/i18n/qqq.json M resources/Resources.php A resources/src/mediawiki.rcfilters/mw.rcfilters.lazy.js A resources/src/mediawiki.rcfilters/styles/mw.rcfilters.lazy.less M resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js 8 files changed, 101 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/73/379273/1 diff --git a/includes/Preferences.php b/includes/Preferences.php index a7e6684..c0c058c 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -938,6 +938,9 @@ $defaultPreferences['rcfilters-rclimit'] = [ 'type' => 'api', ]; + $defaultPreferences['rcfilters-expand-ui'] = [ + 'type' => 'api', + ]; if ( $config->get( 'RCWatchCategoryMembership' ) ) { $defaultPreferences['hidecategorization'] = [ diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 98b7aa1..c65c41e 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -1422,8 +1422,14 @@ $out->addModules( 'mediawiki.special.changeslist.legend.js' ); if ( $this->isStructuredFilterUiEnabled() ) { - $out->addModules( 'mediawiki.rcfilters.filters.ui' ); - $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles' ); + if ( $this->getUser()->getBoolOption( 'rcfilters-expand-ui' ) ) { + $out->addModules( 'mediawiki.rcfilters.filters.ui' ); + $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles' ); + } else { + $out->addModules( 'mediawiki.rcfilters.filters.lazy' ); + $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles.lazy' ); + $out->addBodyClasses( 'rcfilters-lazyload' ); + } } } diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 47e6205..010161e 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -1353,6 +1353,8 @@ "recentchanges-legend-unpatrolled": "{{int:recentchanges-label-unpatrolled}}", "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "Show", + "rcfilters-open-interface": "Show advanced filters interface", + "rcfilters-hide-interface": "Hide interface", "rcfilters-tag-remove": "Remove '$1'", "rcfilters-legend-heading": "<strong>List of abbreviations:</strong>", "rcfilters-other-review-tools": "<strong>Other review tools</strong>", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 0a6e91b..230d169 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -1545,6 +1545,8 @@ "recentchanges-legend-unpatrolled": "Used as legend on [[Special:RecentChanges]] and [[Special:Watchlist]].\n\nRefers to {{msg-mw|Recentchanges-label-unpatrolled}}.", "recentchanges-legend-plusminus": "{{optional}}\nA plus/minus sign with a number for the legend.", "recentchanges-submit": "Label for submit button in [[Special:RecentChanges]]\n{{Identical|Show}}", + "rcfilters-open-interface": "Text for a link to show advanced filters interface on [[Special:RecentChanges]] and [[Special:Watchlist]]", + "rcfilters-hide-interface": "Text for a button to hide advanced filters interface on [[Special:RecentChanges]] and [[Special:Watchlist]]", "rcfilters-tag-remove": "A tooltip for the button that removes a filter from the active filters area in [[Special:RecentChanges]] and [[Special:Watchlist]] when RCFilters are enabled. \n\nParameters: $1 - Tag label", "rcfilters-legend-heading": "Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]] when RCFilters are enabled.", "rcfilters-other-review-tools": "Used as a heading for the community collection of other links on [[Special:RecentChanges]] when RCFilters are enabled.", diff --git a/resources/Resources.php b/resources/Resources.php index 818112f..4e0892e 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1756,6 +1756,11 @@ 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less', ], ], + 'mediawiki.rcfilters.filters.base.styles.lazy' => [ + 'styles' => [ + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.lazy.less', + ], + ], 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' => [ 'styles' => [ 'resources/src/mediawiki.rcfilters/' . @@ -1782,6 +1787,14 @@ 'mediawiki.api.options', 'mediawiki.Uri', 'mediawiki.user', + ], + ], + 'mediawiki.rcfilters.filters.lazy' => [ + 'scripts' => [ + 'resources/src/mediawiki.rcfilters/mw.rcfilters.lazy.js', + ], + 'messages' => [ + 'rcfilters-open-interface' ], ], 'mediawiki.rcfilters.filters.ui' => [ @@ -1851,6 +1864,7 @@ ], ], 'messages' => [ + 'rcfilters-hide-interface', 'rcfilters-tag-remove', 'rcfilters-activefilters', 'rcfilters-advancedfilters', @@ -1917,6 +1931,7 @@ 'quotation-marks', ], 'dependencies' => [ + 'mediawiki.rcfilters.filters.base.styles.lazy', 'oojs-ui', 'jquery.makeCollapsible', 'mediawiki.language', diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.lazy.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.lazy.js new file mode 100644 index 0000000..5cadfb0 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.lazy.js @@ -0,0 +1,25 @@ +/*! + * JavaScript for Special:RecentChanges + */ +( function ( mw, $ ) { + var $link = $( '<a>' ) + .text( mw.msg( 'rcfilters-open-interface' ) ) + .on( 'click', function () { + + mw.loader.using( [ 'mediawiki.rcfilters.filters.ui', 'mediawiki.rcfilters.filters.base.styles' ] ) + .then( function () { + $( 'body' ).removeClass( 'rcfilters-lazyload' ); + + // Update user option + new mw.Api().saveOption( 'rcfilters-expand-ui', 1 ); + // Update the preference for this session + mw.user.options.set( 'rcfilters-expand-ui', 1 ); + + $link.detach(); + } ); + + return false; + } ); + + $( '.rcfilters-head' ).append( $link ); +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.lazy.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.lazy.less new file mode 100644 index 0000000..9ddb431 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.lazy.less @@ -0,0 +1,8 @@ +.client-js { + .rcfilters-lazyload { + .rcfilters-container, + .cloptions { + display: none; + } + } +} \ No newline at end of file diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js index db7acaa..ec8a2fb 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js @@ -29,6 +29,7 @@ this.model = model; this.queriesModel = savedQueriesModel; this.$overlay = config.$overlay || this.$element; + this.uiOpen = true; this.filterTagWidget = new mw.rcfilters.ui.FilterTagMultiselectWidget( this.controller, @@ -57,6 +58,13 @@ $overlay: this.$overlay } ); + + this.toggleUIButton = new OO.ui.ButtonWidget( { + label: mw.msg( 'rcfilters-hide-interface' ) + } ); + + // Events + this.toggleUIButton.connect( this, { click: 'onToggleUIButton' } ); // Initialize this.$top = $( '<div>' ) @@ -96,5 +104,35 @@ */ mw.rcfilters.ui.FilterWrapperWidget.prototype.setTopSection = function ( $topSectionElement ) { this.$top.append( $topSectionElement ); + + // Add 'hide inteface' button + $topSectionElement.find( '.mw-rcfilters-ui-row' ).prepend( + $( '<td>' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .append( this.toggleUIButton.$element ) + ); + }; + + mw.rcfilters.ui.FilterWrapperWidget.prototype.onToggleUIButton = function () { + var $link, + $rchead = $( '.rcfilters-head' ), + $link = $rchead.find( '.mw-rcfilters-ui-filterWrapperWidget-hideUIButton' ); + + if ( !$link.length ) { + $link = $( '<a>' ) + .addClass( 'mw-rcfilters-ui-filterWrapperWidget-hideUIButton' ) + .text( mw.msg( 'rcfilters-open-interface' ) ) + .on( 'click', this.onToggleUIButton.bind( this ) ); + $rchead.append( $link ); + } + this.uiOpen = !this.uiOpen; + + $link.toggleClass( 'oo-ui-element-hidden', this.uiOpen ); + $( 'body' ).toggleClass( 'rcfilters-lazyload', !this.uiOpen ); + + // Update user option + new mw.Api().saveOption( 'rcfilters-expand-ui', Number( this.uiOpen ) ); + // Update the preference for this session + mw.user.options.set( 'rcfilters-expand-ui', Number( this.uiOpen ) ); }; }( mediaWiki ) ); -- To view, visit https://gerrit.wikimedia.org/r/379273 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If1951844ce036ed812452e89051597ff7faebbc2 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Mooeypoo <mor...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits