mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 23:07:28 +08:00
Use PreloadStore for the badge pages.
This commit is contained in:
@ -8,6 +8,12 @@
|
|||||||
**/
|
**/
|
||||||
Discourse.BadgesIndexRoute = Discourse.Route.extend({
|
Discourse.BadgesIndexRoute = Discourse.Route.extend({
|
||||||
model: function() {
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -12,7 +12,13 @@ Discourse.BadgesShowRoute = Ember.Route.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
model: function(params) {
|
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) {
|
setupController: function(controller, model) {
|
||||||
|
@ -1,12 +1,28 @@
|
|||||||
class BadgesController < ApplicationController
|
class BadgesController < ApplicationController
|
||||||
|
skip_before_filter :check_xhr, only: [:index, :show]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
badges = Badge.all.to_a
|
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
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
params.require(:id)
|
params.require(:id)
|
||||||
badge = Badge.find(params[: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
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user