diff --git a/app/assets/javascripts/discourse/routes/badges_index_route.js b/app/assets/javascripts/discourse/routes/badges_index_route.js index 6563af0d777..520677d24ee 100644 --- a/app/assets/javascripts/discourse/routes/badges_index_route.js +++ b/app/assets/javascripts/discourse/routes/badges_index_route.js @@ -8,6 +8,12 @@ **/ Discourse.BadgesIndexRoute = Discourse.Route.extend({ model: function() { - return Discourse.Badge.findAll(); + if (PreloadStore.get('badges')) { + return PreloadStore.getAndRemove('badges').then(function(json) { + return Discourse.Badge.createFromJson(json); + }); + } else { + return Discourse.Badge.findAll(); + } } }); diff --git a/app/assets/javascripts/discourse/routes/badges_show_route.js b/app/assets/javascripts/discourse/routes/badges_show_route.js index 0db79c9df85..a4c4cc83180 100644 --- a/app/assets/javascripts/discourse/routes/badges_show_route.js +++ b/app/assets/javascripts/discourse/routes/badges_show_route.js @@ -12,7 +12,13 @@ Discourse.BadgesShowRoute = Ember.Route.extend({ }, model: function(params) { - return Discourse.Badge.findById(params.id); + if (PreloadStore.get('badge')) { + return PreloadStore.getAndRemove('badge').then(function(json) { + return Discourse.Badge.createFromJson(json); + }); + } else { + return Discourse.Badge.findById(params.id); + } }, setupController: function(controller, model) { diff --git a/app/controllers/badges_controller.rb b/app/controllers/badges_controller.rb index a8908afd4f8..03f825c5f42 100644 --- a/app/controllers/badges_controller.rb +++ b/app/controllers/badges_controller.rb @@ -1,12 +1,28 @@ class BadgesController < ApplicationController + skip_before_filter :check_xhr, only: [:index, :show] + def index badges = Badge.all.to_a - render_serialized(badges, BadgeSerializer, root: "badges") + serialized = MultiJson.dump(serialize_data(badges, BadgeSerializer, root: "badges")) + respond_to do |format| + format.html do + store_preloaded "badges", serialized + render "default/empty" + end + format.json { render json: serialized } + end end def show params.require(:id) badge = Badge.find(params[:id]) - render_serialized(badge, BadgeSerializer, root: "badge") + serialized = MultiJson.dump(serialize_data(badge, BadgeSerializer, root: "badge")) + respond_to do |format| + format.html do + store_preloaded "badge", serialized + render "default/empty" + end + format.json { render json: serialized } + end end end