diff --git a/app/assets/javascripts/discourse/models/badge.js b/app/assets/javascripts/discourse/models/badge.js index 09cc799ddba..ebbf09a1b03 100644 --- a/app/assets/javascripts/discourse/models/badge.js +++ b/app/assets/javascripts/discourse/models/badge.js @@ -184,8 +184,12 @@ Discourse.Badge.reopenClass({ @method findAll @returns {Promise} a promise that resolves to an array of `Discourse.Badge` **/ - findAll: function() { - return Discourse.ajax('/badges.json').then(function(badgesJson) { + findAll: function(opts) { + var listable = ""; + if(opts && opts.onlyListable){ + listable = "?only_listable=true"; + } + return Discourse.ajax('/badges.json' + listable).then(function(badgesJson) { return Discourse.Badge.createFromJson(badgesJson); }); }, diff --git a/app/assets/javascripts/discourse/routes/badges_index_route.js b/app/assets/javascripts/discourse/routes/badges_index_route.js index f7bf2667471..4c8fc6344d7 100644 --- a/app/assets/javascripts/discourse/routes/badges_index_route.js +++ b/app/assets/javascripts/discourse/routes/badges_index_route.js @@ -13,7 +13,7 @@ Discourse.BadgesIndexRoute = Discourse.Route.extend({ return Discourse.Badge.createFromJson(json); }); } else { - return Discourse.Badge.findAll(); + return Discourse.Badge.findAll({onlyListable: true}); } }, diff --git a/app/controllers/badges_controller.rb b/app/controllers/badges_controller.rb index d6990c1e5c7..603dc89efb4 100644 --- a/app/controllers/badges_controller.rb +++ b/app/controllers/badges_controller.rb @@ -2,7 +2,9 @@ class BadgesController < ApplicationController skip_before_filter :check_xhr, only: [:index, :show] def index - badges = Badge.where(listable: true).all.to_a + badges = Badge.all + badges = badges.where(listable: true) if(params[:only_listable] == "true") || !request.xhr? + badges = badges.to_a serialized = MultiJson.dump(serialize_data(badges, BadgeSerializer, root: "badges")) respond_to do |format| format.html do