@@ -19,6 +19,7 @@ import {
19
19
INSTALL_SOURCE_FEATURED ,
20
20
INSTALL_SOURCE_TOP_RATED ,
21
21
INSTALL_SOURCE_TRENDING ,
22
+ SEARCH_SORT_RANDOM ,
22
23
SEARCH_SORT_TRENDING ,
23
24
SEARCH_SORT_TOP_RATED ,
24
25
} from 'core/constants' ;
@@ -45,7 +46,7 @@ export class LandingPageBase extends React.Component {
45
46
context : PropTypes . string . isRequired ,
46
47
dispatch : PropTypes . func . isRequired ,
47
48
errorHandler : PropTypes . object . isRequired ,
48
- featuredAddons : PropTypes . array . isRequired ,
49
+ recommendedAddons : PropTypes . array . isRequired ,
49
50
highlyRatedAddons : PropTypes . array . isRequired ,
50
51
loading : PropTypes . bool . isRequired ,
51
52
trendingAddons : PropTypes . array . isRequired ,
@@ -125,28 +126,38 @@ export class LandingPageBase extends React.Component {
125
126
}
126
127
127
128
contentForType = ( visibleAddonType ) => {
128
- const { i18n } = this . props ;
129
+ const { _config , i18n } = this . props ;
129
130
const addonType = apiAddonType ( visibleAddonType ) ;
130
- const themeFilter = getAddonTypeFilter ( ADDON_TYPE_THEME , {
131
- _config : this . props . _config ,
132
- } ) ;
131
+ const themeFilter = getAddonTypeFilter ( ADDON_TYPE_THEME , { _config } ) ;
132
+ const enableFeatureRecommendedBadges = _config . get (
133
+ 'enableFeatureRecommendedBadges' ,
134
+ ) ;
133
135
134
136
const contentForTypes = {
135
137
[ ADDON_TYPE_EXTENSION ] : {
136
- featuredHeader : i18n . gettext ( 'Featured extensions' ) ,
137
- featuredFooterLink : {
138
+ recommendedHeader : enableFeatureRecommendedBadges
139
+ ? i18n . gettext ( 'Recommended extensions' )
140
+ : i18n . gettext ( 'Featured extensions' ) ,
141
+ recommendedFooterLink : {
138
142
pathname : '/search/' ,
139
143
query : {
140
144
addonType : ADDON_TYPE_EXTENSION ,
141
- featured : true ,
145
+ featured : enableFeatureRecommendedBadges ? undefined : true ,
146
+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
147
+ sort : enableFeatureRecommendedBadges
148
+ ? SEARCH_SORT_RANDOM
149
+ : undefined ,
142
150
} ,
143
151
} ,
144
- featuredFooterText : i18n . gettext ( 'See more featured extensions' ) ,
152
+ recommendedFooterText : enableFeatureRecommendedBadges
153
+ ? i18n . gettext ( 'See more recommended extensions' )
154
+ : i18n . gettext ( 'See more featured extensions' ) ,
145
155
trendingHeader : i18n . gettext ( 'Trending extensions' ) ,
146
156
trendingFooterLink : {
147
157
pathname : '/search/' ,
148
158
query : {
149
159
addonType : ADDON_TYPE_EXTENSION ,
160
+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
150
161
sort : SEARCH_SORT_TRENDING ,
151
162
} ,
152
163
} ,
@@ -156,21 +167,30 @@ export class LandingPageBase extends React.Component {
156
167
pathname : '/search/' ,
157
168
query : {
158
169
addonType : ADDON_TYPE_EXTENSION ,
170
+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
159
171
sort : SEARCH_SORT_TOP_RATED ,
160
172
} ,
161
173
} ,
162
174
highlyRatedFooterText : i18n . gettext ( 'See more top rated extensions' ) ,
163
175
} ,
164
176
[ ADDON_TYPE_THEME ] : {
165
- featuredHeader : i18n . gettext ( 'Featured themes' ) ,
166
- featuredFooterLink : {
177
+ recommendedHeader : enableFeatureRecommendedBadges
178
+ ? i18n . gettext ( 'Recommended themes' )
179
+ : i18n . gettext ( 'Featured themes' ) ,
180
+ recommendedFooterLink : {
167
181
pathname : '/search/' ,
168
182
query : {
169
183
addonType : themeFilter ,
170
- featured : true ,
184
+ featured : enableFeatureRecommendedBadges ? undefined : true ,
185
+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
186
+ sort : enableFeatureRecommendedBadges
187
+ ? SEARCH_SORT_RANDOM
188
+ : undefined ,
171
189
} ,
172
190
} ,
173
- featuredFooterText : i18n . gettext ( 'See more featured themes' ) ,
191
+ recommendedFooterText : enableFeatureRecommendedBadges
192
+ ? i18n . gettext ( 'See more recommended themes' )
193
+ : i18n . gettext ( 'See more featured themes' ) ,
174
194
trendingHeader : i18n . gettext ( 'Trending themes' ) ,
175
195
trendingFooterLink : {
176
196
pathname : '/search/' ,
@@ -219,7 +239,7 @@ export class LandingPageBase extends React.Component {
219
239
render ( ) {
220
240
const {
221
241
errorHandler,
222
- featuredAddons ,
242
+ recommendedAddons ,
223
243
highlyRatedAddons,
224
244
i18n,
225
245
loading,
@@ -278,14 +298,14 @@ export class LandingPageBase extends React.Component {
278
298
</ Button >
279
299
280
300
{ this . renderIfNotEmpty (
281
- featuredAddons ,
301
+ recommendedAddons ,
282
302
< LandingAddonsCard
283
303
addonInstallSource = { INSTALL_SOURCE_FEATURED }
284
- addons = { featuredAddons }
285
- className = "FeaturedAddons "
286
- footerText = { html . featuredFooterText }
287
- footerLink = { html . featuredFooterLink }
288
- header = { html . featuredHeader }
304
+ addons = { recommendedAddons }
305
+ className = "RecommendedAddons "
306
+ footerText = { html . recommendedFooterText }
307
+ footerLink = { html . recommendedFooterLink }
308
+ header = { html . recommendedHeader }
289
309
isTheme = { isAddonTheme }
290
310
loading = { loading }
291
311
/> ,
@@ -327,7 +347,7 @@ export function mapStateToProps(state) {
327
347
return {
328
348
addonTypeOfResults : landing . addonType ,
329
349
context : viewContext . context ,
330
- featuredAddons : landing . featured . results ,
350
+ recommendedAddons : landing . recommended . results ,
331
351
highlyRatedAddons : landing . highlyRated . results ,
332
352
loading : landing . loading ,
333
353
trendingAddons : landing . trending . results ,
0 commit comments