diff --git a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 index fc1934a80f2..ed43f558889 100644 --- a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 @@ -48,6 +48,10 @@ export default ObjectController.extend({ _showFooter: function() { this.set("controllers.application.showFooter", !this.get("canLoadMore")); - }.observes("canLoadMore") + }.observes("canLoadMore"), + + showLongDescription: function(){ + return window.location.search.match("long-description"); + }.property('userBadges') }); diff --git a/app/assets/javascripts/discourse/templates/badges/show.hbs b/app/assets/javascripts/discourse/templates/badges/show.hbs index c686df798e0..98910de9603 100644 --- a/app/assets/javascripts/discourse/templates/badges/show.hbs +++ b/app/assets/javascripts/discourse/templates/badges/show.hbs @@ -17,6 +17,12 @@ + {{#if showLongDescription}} + + {{/if}} + {{#if userBadges}}
{{#each ub in userBadges}} diff --git a/app/assets/stylesheets/common/base/user-badges.scss b/app/assets/stylesheets/common/base/user-badges.scss index 657aba3d2bd..3c8405def39 100644 --- a/app/assets/stylesheets/common/base/user-badges.scss +++ b/app/assets/stylesheets/common/base/user-badges.scss @@ -159,3 +159,8 @@ table.badges-listing { text-align: left; } } + +.long-description.banner { + width: 88%; + margin-bottom: 20px; +} diff --git a/app/assets/stylesheets/common/components/banner.css.scss b/app/assets/stylesheets/common/components/banner.css.scss index 7047147b8ea..f423c7356d6 100644 --- a/app/assets/stylesheets/common/components/banner.css.scss +++ b/app/assets/stylesheets/common/components/banner.css.scss @@ -2,7 +2,7 @@ // Banner // -------------------------------------------------- -#banner { +#banner, .banner { padding: 10px; border-radius: 5px; background: scale-color($tertiary, $lightness: 90%); diff --git a/app/controllers/badges_controller.rb b/app/controllers/badges_controller.rb index 77e4a164d09..728a3dbf69f 100644 --- a/app/controllers/badges_controller.rb +++ b/app/controllers/badges_controller.rb @@ -17,7 +17,7 @@ class BadgesController < ApplicationController if current_user user_badges = Set.new(current_user.user_badges.select('distinct badge_id').pluck(:badge_id)) end - serialized = MultiJson.dump(serialize_data(badges, BadgeIndexSerializer, root: "badges", user_badges: user_badges)) + serialized = MultiJson.dump(serialize_data(badges, BadgeIndexSerializer, root: "badges", user_badges: user_badges, include_long_description: true)) respond_to do |format| format.html do store_preloaded "badges", serialized @@ -38,7 +38,7 @@ class BadgesController < ApplicationController end end - serialized = MultiJson.dump(serialize_data(badge, BadgeSerializer, root: "badge")) + serialized = MultiJson.dump(serialize_data(badge, BadgeSerializer, root: "badge", include_long_description: true)) respond_to do |format| format.html do store_preloaded "badge", serialized diff --git a/app/controllers/user_badges_controller.rb b/app/controllers/user_badges_controller.rb index b1cf39845a2..8ab55b2e26b 100644 --- a/app/controllers/user_badges_controller.rb +++ b/app/controllers/user_badges_controller.rb @@ -10,7 +10,7 @@ class UserBadgesController < ApplicationController user_badges = user_badges.offset(offset.to_i) end - render_serialized(user_badges, UserBadgeSerializer, root: "user_badges") + render_serialized(user_badges, UserBadgeSerializer, root: "user_badges", include_long_description: true) end def username diff --git a/app/serializers/badge_serializer.rb b/app/serializers/badge_serializer.rb index 0ac048ae2d2..415404d5cd1 100644 --- a/app/serializers/badge_serializer.rb +++ b/app/serializers/badge_serializer.rb @@ -1,10 +1,28 @@ class BadgeSerializer < ApplicationSerializer attributes :id, :name, :description, :grant_count, :allow_title, :multiple_grant, :icon, :image, :listable, :enabled, :badge_grouping_id, - :system + :system, :long_description + has_one :badge_type def system object.system? end + + def include_long_description? + options[:include_long_description] + end + + def long_description + if object.long_description.present? + object.long_description + else + key = "badges.long_descriptions.#{object.name.downcase.gsub(" ", "_")}" + if I18n.exists?(key) + I18n.t(key) + else + "" + end + end + end end diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index f941e7f45ea..3431c329daa 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -2319,3 +2319,11 @@ en:

rainbows category:parks status:open order:latest will search for topics containing the word "rainbows" in the category "parks" that are not closed or archived, ordered by date of last post.

+ + badges: + long_descriptions: + first_flag: | + Flagging is critical to the health of your community. If you notice any posts that require moderator attention please + do not hesitate to flag. You may also use the flagging dialog to send private messages to users once you reach + trust level 1. + diff --git a/db/migrate/20150227043622_add_long_description_to_badges.rb b/db/migrate/20150227043622_add_long_description_to_badges.rb new file mode 100644 index 00000000000..c89a1007c45 --- /dev/null +++ b/db/migrate/20150227043622_add_long_description_to_badges.rb @@ -0,0 +1,5 @@ +class AddLongDescriptionToBadges < ActiveRecord::Migration + def change + add_column :badges, :long_description, :text + end +end