2014-04-16 18:42:06 +05:30
class BadgesController < ApplicationController
2014-04-26 00:28:41 +05:30
skip_before_filter :check_xhr , only : [ :index , :show ]
2014-04-16 18:42:06 +05:30
def index
2016-03-29 17:21:32 +11:00
raise Discourse :: NotFound unless SiteSetting . enable_badges
2014-07-03 20:34:26 +10:00
badges = Badge . all
2014-07-18 15:46:36 +10:00
if ( params [ :only_listable ] == " true " ) || ! request . xhr?
# NOTE: this is sorted client side if needed
badges = badges . includes ( :badge_grouping )
. where ( enabled : true , listable : true )
end
badges = badges . to_a
2014-07-16 17:53:54 +10:00
user_badges = nil
if current_user
user_badges = Set . new ( current_user . user_badges . select ( 'distinct badge_id' ) . pluck ( :badge_id ) )
end
2015-02-27 17:19:18 +11:00
serialized = MultiJson . dump ( serialize_data ( badges , BadgeIndexSerializer , root : " badges " , user_badges : user_badges , include_long_description : true ) )
2014-04-26 00:28:41 +05:30
respond_to do | format |
format . html do
store_preloaded " badges " , serialized
render " default/empty "
end
format . json { render json : serialized }
end
2014-04-16 18:42:06 +05:30
end
2014-04-16 20:26:11 +05:30
def show
2016-03-29 17:21:32 +11:00
raise Discourse :: NotFound unless SiteSetting . enable_badges
2014-04-16 20:26:11 +05:30
params . require ( :id )
2014-07-14 17:40:01 +10:00
badge = Badge . enabled . find ( params [ :id ] )
2014-06-14 13:25:06 +05:30
if current_user
user_badge = UserBadge . find_by ( user_id : current_user . id , badge_id : badge . id )
if user_badge && user_badge . notification
user_badge . notification . update_attributes read : true
end
end
2015-02-27 17:19:18 +11:00
serialized = MultiJson . dump ( serialize_data ( badge , BadgeSerializer , root : " badge " , include_long_description : true ) )
2014-04-26 00:28:41 +05:30
respond_to do | format |
format . html do
store_preloaded " badge " , serialized
render " default/empty "
end
format . json { render json : serialized }
end
2014-04-16 20:26:11 +05:30
end
2014-04-16 18:42:06 +05:30
end