Sbisson has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/382161 )

Change subject: RCFilters: Allows specifying default highlights from the server
......................................................................

RCFilters: Allows specifying default highlights from the server

Bug: T172757

Change-Id: I0545b4e0222e14be99d567e7890ccf33722a5d1e
---
M includes/changes/ChangesListFilter.php
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
M resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
M resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
5 files changed, 52 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/61/382161/1

diff --git a/includes/changes/ChangesListFilter.php 
b/includes/changes/ChangesListFilter.php
index 2fc1006..2546f2b 100644
--- a/includes/changes/ChangesListFilter.php
+++ b/includes/changes/ChangesListFilter.php
@@ -103,6 +103,12 @@
         */
        protected $priority;
 
+       /**
+        *
+        * @var string $defaultHighlightColor
+        */
+       protected $defaultHighlightColor;
+
        const RESERVED_NAME_CHAR = '_';
 
        /**
@@ -368,6 +374,7 @@
                        'priority' => $this->priority,
                        'subset' => $this->subsetFilters,
                        'conflicts' => [],
+                       'defaultHighlightColor' => $this->defaultHighlightColor
                ];
 
                $output['messageKeys'] = [
@@ -494,4 +501,11 @@
                        }
                );
        }
+
+       /**
+        * @param string $defaultHighlightColor
+        */
+       public function setDefaultHighlightColor( $defaultHighlightColor ) {
+               $this->defaultHighlightColor = $defaultHighlightColor;
+       }
 }
diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
index 309978f..57d1b41 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
@@ -93,6 +93,7 @@
         */
        mw.rcfilters.dm.FilterGroup.prototype.initializeFilters = function ( 
filterDefinition, groupDefault ) {
                var defaultParam,
+                       anyHighlighted,
                        supersetMap = {},
                        model = this,
                        items = [];
@@ -106,7 +107,8 @@
                                        description: filter.description || '',
                                        labelPrefixKey: model.labelPrefixKey,
                                        cssClass: filter.cssClass,
-                                       identifiers: filter.identifiers
+                                       identifiers: filter.identifiers,
+                                       defaultHighlightColor: 
filter.defaultHighlightColor
                                } );
 
                        if ( filter.subset ) {
@@ -188,6 +190,18 @@
                        this.defaultParams[ this.getName() ] = defaultParam;
                }
 
+               // add highlights to defaultParams
+               anyHighlighted = false;
+               this.getItems().forEach( function ( filterItem ) {
+                       if ( filterItem.isHighlighted() ) {
+                               anyHighlighted = true;
+                               this.defaultParams[ filterItem.getName() + 
'_color' ] = filterItem.getHighlightColor();
+                       }
+               }.bind( this ) );
+               if ( anyHighlighted ) {
+                       this.defaultParams.highlight = '1';
+               }
+
                // Store default filter state based on default params
                this.defaultFilters = this.getFilterRepresentation( 
this.getDefaultParams() );
 
diff --git 
a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
index 5013c08..b03c6ad 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
@@ -410,6 +410,10 @@
 
                this.currentView = 'default';
 
+               if ( this.getHighlightedItems() ) {
+                       this.toggleHighlight( true );
+               }
+
                // Finish initialization
                this.emit( 'initialize' );
        };
@@ -726,6 +730,22 @@
        };
 
        /**
+        * Get an object representing the complete empty state of highlights
+        *
+        * @returns {Object} Object containing all the highlight parameters set 
to their negative value
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getEmptyHighlightParameters 
= function () {
+               var result = {};
+
+               this.getItems().forEach( function ( filterItem ) {
+                       result[ filterItem.getName() + '_color' ] = null;
+               } );
+               result.highlight = '0';
+
+               return result;
+       };
+
+       /**
         * Extract the highlight values from given object. Since highlights are
         * the same for filter and parameters, it doesn't matter which one is
         * given; values will be returned with a full list of the highlights
diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js 
b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
index aa82e21..c9a3ad8 100644
--- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
+++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
@@ -42,8 +42,8 @@
 
                // Highlight
                this.cssClass = config.cssClass;
-               this.highlightColor = null;
-               this.highlightEnabled = false;
+               this.highlightColor = config.defaultHighlightColor;
+               this.highlightEnabled = !!config.defaultHighlightColor;
        };
 
        /* Initialization */
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js 
b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
index 1894b61..c9436f4 100644
--- a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
+++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
@@ -300,7 +300,7 @@
         */
        mw.rcfilters.UriProcessor.prototype._buildEmptyParameterState = 
function () {
                var emptyParams = this.filtersModel.getParametersFromFilters( 
{} ),
-                       emptyHighlights = 
this.filtersModel.getHighlightParameters();
+                       emptyHighlights = 
this.filtersModel.getEmptyHighlightParameters();
 
                this.emptyParameterState = $.extend(
                        true,

-- 
To view, visit https://gerrit.wikimedia.org/r/382161
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0545b4e0222e14be99d567e7890ccf33722a5d1e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Sbisson <sbis...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to