From 33dccc7997c42132cab4bbe3f2cb3ccc7e566be2 Mon Sep 17 00:00:00 2001 From: rhymes Date: Fri, 13 Nov 2020 14:23:50 +0100 Subject: [PATCH] Move badges_area template in proper place and refactor the partial (#11400) * Move badges_area template in proper place and refactor the partial * Fix badge show routing --- app/models/badge_achievement.rb | 4 +++ app/views/articles/_badges_area.html.erb | 20 ------------- app/views/users/_badges_area.html.erb | 28 +++++++++++++++++++ app/views/users/_sidebar.html.erb | 8 +++++- config/routes.rb | 4 +-- spec/system/admin/admin_awards_badges_spec.rb | 2 +- 6 files changed, 42 insertions(+), 24 deletions(-) delete mode 100644 app/views/articles/_badges_area.html.erb create mode 100644 app/views/users/_badges_area.html.erb diff --git a/app/models/badge_achievement.rb b/app/models/badge_achievement.rb index 65554bec7..ca703abda 100644 --- a/app/models/badge_achievement.rb +++ b/app/models/badge_achievement.rb @@ -6,6 +6,10 @@ class BadgeAchievement < ApplicationRecord belongs_to :badge belongs_to :rewarder, class_name: "User", optional: true + delegate :slug, to: :badge, prefix: true + delegate :title, to: :badge, prefix: true + delegate :badge_image_url, to: :badge, prefix: false + counter_culture :user, column_name: "badge_achievements_count" validates :badge_id, uniqueness: { scope: :user_id } diff --git a/app/views/articles/_badges_area.html.erb b/app/views/articles/_badges_area.html.erb deleted file mode 100644 index 58ac03957..000000000 --- a/app/views/articles/_badges_area.html.erb +++ /dev/null @@ -1,20 +0,0 @@ -<% if @user.badge_achievements_count > 0 %> -
-
-

Badges

-
-
-
- <% @user.badge_achievements.order(id: :desc).includes(:badge).each_with_index do |achievement, i| %> - - <%= achievement.badge.title %> - - <% end %> -
- - <% if @user.badge_achievements_count > @badges_limit %> - - <% end %> -
-
-<% end %> diff --git a/app/views/users/_badges_area.html.erb b/app/views/users/_badges_area.html.erb new file mode 100644 index 000000000..f82905752 --- /dev/null +++ b/app/views/users/_badges_area.html.erb @@ -0,0 +1,28 @@ +
+
+

Badges

+
+ +
+
+ <% achievements.each_with_index do |achievement, i| %> + + + <%= achievement.badge_title %> + + <% end %> +
+ + <% if limit > 1 && count > limit %> + + <% end %> +
+
diff --git a/app/views/users/_sidebar.html.erb b/app/views/users/_sidebar.html.erb index 29bb818fb..b93a9afd3 100644 --- a/app/views/users/_sidebar.html.erb +++ b/app/views/users/_sidebar.html.erb @@ -21,7 +21,13 @@ <%= render partial: "users/github_repositories_area", locals: { repositories: repositories } %> - <%= render "articles/badges_area" %> + <% if @user.badge_achievements_count.positive? %> + <%= render partial: "users/badges_area", locals: { + achievements: @user.badge_achievements.order(id: :desc).includes(:badge), + count: @user.badge_achievements_count, + limit: @badges_limit + } %> + <% end %> <% end %> <% cache "user-profile-sidebar-profile-details-#{@user.id}-#{@user.profile_updated_at}", expires_in: 10.days do %> diff --git a/config/routes.rb b/config/routes.rb index 3398f7c6c..df9c3389a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -396,7 +396,7 @@ Rails.application.routes.draw do get "/welcome" => "pages#welcome" get "/challenge" => "pages#challenge" get "/checkin" => "pages#checkin" - get "/badge" => "pages#badge" + get "/badge" => "pages#badge", :as => :pages_badge get "/💸", to: redirect("t/hiring") get "/survey", to: redirect("https://dev.to/ben/final-thoughts-on-the-state-of-the-web-survey-44nn") get "/events" => "events#index" @@ -500,7 +500,7 @@ Rails.application.routes.draw do get "/t/:tag/:timeframe" => "stories#index", :constraints => { timeframe: /latest/ } - get "/badge/:slug" => "badges#show" + get "/badge/:slug" => "badges#show", :as => :badge get "/top/:timeframe" => "stories#index" diff --git a/spec/system/admin/admin_awards_badges_spec.rb b/spec/system/admin/admin_awards_badges_spec.rb index 992af9b99..2b3c24445 100644 --- a/spec/system/admin/admin_awards_badges_spec.rb +++ b/spec/system/admin/admin_awards_badges_spec.rb @@ -43,7 +43,7 @@ RSpec.describe "Admin awards badges", type: :system do visit "/#{user.username}/" - expect(page).to have_link(href: "/badge/#{Badge.last.slug}") + expect(page).to have_link(href: badge_path(Badge.last.slug)) end it "does not award badges if no badge is selected", js: true do