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}}
+
{{#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