RCFilters: Move label prefixes from dm.ItemModel to ui.TagItemWidget
authorRoan Kattouw <roan.kattouw@gmail.com>
Fri, 27 Oct 2017 05:07:11 +0000 (10:37 +0530)
committerRoan Kattouw <roan.kattouw@gmail.com>
Fri, 27 Oct 2017 08:07:52 +0000 (13:37 +0530)
Change-Id: I0d463b60ffaa7ab099cb46eeac94b709af325933

resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js

index 2b5d020..7b54833 100644 (file)
        };
 
        /**
-        * Get a prefixed label
+        * Get the message key to use to wrap the label. This message takes the label as a parameter.
         *
-        * @param {boolean} inverted This item should be considered inverted
-        * @return {string} Prefixed label (HTML)
+        * @param {boolean} inverted Whether this item should be considered inverted
+        * @return {string|null} Message key, or null if no message
         */
-       mw.rcfilters.dm.ItemModel.prototype.getPrefixedLabel = function ( inverted ) {
-               var escapedLabel = mw.html.escape( this.getLabel() );
+       mw.rcfilters.dm.ItemModel.prototype.getLabelMessageKey = function ( inverted ) {
                if ( this.labelPrefixKey ) {
                        if ( typeof this.labelPrefixKey === 'string' ) {
-                               return mw.message( this.labelPrefixKey, escapedLabel ).parse();
-                       } else {
-                               return mw.message(
-                                       this.labelPrefixKey[
-                                               // Only use inverted-prefix if the item is selected
-                                               // Highlight-only an inverted item makes no sense
-                                               inverted && this.isSelected() ?
-                                                       'inverted' : 'default'
-                                       ],
-                                       escapedLabel
-                               ).parse();
+                               return this.labelPrefixKey;
                        }
-               } else {
-                       return escapedLabel;
+                       return this.labelPrefixKey[
+                               // Only use inverted-prefix if the item is selected
+                               // Highlight-only an inverted item makes no sense
+                               inverted && this.isSelected() ?
+                                       'inverted' : 'default'
+                       ];
                }
+               return null;
        };
 
        /**
index 7e324b6..13d6b68 100644 (file)
         * Respond to model update event
         */
        mw.rcfilters.ui.TagItemWidget.prototype.updateUiBasedOnState = function () {
-               this.setCurrentMuteState();
-
                // Update label if needed
-               this.setLabel( $( '<div>' ).html( this.itemModel.getPrefixedLabel( this.invertModel.isSelected() ) ).contents() );
+               var labelMsg = this.itemModel.getLabelMessageKey( this.invertModel.isSelected() );
+               if ( labelMsg ) {
+                       this.setLabel( $( '<div>' ).html(
+                               mw.message( labelMsg, mw.html.escape( this.itemModel.getLabel() ) ).parse()
+                       ).contents() );
+               } else {
+                       this.setLabel( this.itemModel.getLabel() );
+               }
 
+               this.setCurrentMuteState();
                this.setHighlightColor();
        };