diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 01663ec77..9bd98aedd 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -13,9 +13,9 @@ class UsersController < ApplicationController def set_activity_counts @activity_counts = HashWithIndifferentAccess.new( proposals: Proposal.where(author_id: @user.id).count, - debates: Debate.where(author_id: @user.id).count, - budget_investments: Budget::Investment.where(author_id: @user.id).count, - comments: Comment.not_as_admin_or_moderator.where(user_id: @user.id).count) + debates: (Setting['feature.debates'] ? Debate.where(author_id: @user.id).count : 0), + budget_investments: (Setting['feature.budgets'] ? Budget::Investment.where(author_id: @user.id).count : 0), + comments: only_active_commentables.count) end def load_filtered_activity @@ -33,7 +33,7 @@ class UsersController < ApplicationController if @activity_counts[:proposals] > 0 load_proposals @current_filter = "proposals" - elsif @activity_counts[:debates] > 0 + elsif @activity_counts[:debates] > 0 load_debates @current_filter = "debates" elsif @activity_counts[:budget_investments] > 0 @@ -54,7 +54,7 @@ class UsersController < ApplicationController end def load_comments - @comments = Comment.not_as_admin_or_moderator.where(user_id: @user.id).includes(:commentable).order(created_at: :desc).page(params[:page]) + @comments = only_active_commentables.includes(:commentable).order(created_at: :desc).page(params[:page]) end def load_budget_investments @@ -77,4 +77,19 @@ class UsersController < ApplicationController @authorized_current_user ||= current_user && (current_user == @user || current_user.moderator? || current_user.administrator?) end + def all_user_comments + Comment.not_as_admin_or_moderator.where(user_id: @user.id) + end + + def only_active_commentables + disabled_commentables = [] + disabled_commentables << "Debate" unless Setting['feature.debates'] + disabled_commentables << "Budget::Investment" unless Setting['feature.budgets'] + if disabled_commentables.present? + all_user_comments.where("commentable_type NOT IN (?)", disabled_commentables) + else + all_user_comments + end + end + end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 10da73712..9c13e8ef8 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -30,6 +30,8 @@ module UsersHelper t("users.show.deleted_proposal") when "Debate" t("users.show.deleted_debate") + when "Budget::Investment" + t("users.show.deleted_budget_investment") else t("users.show.deleted") end diff --git a/app/views/users/_activity_page.html.erb b/app/views/users/_activity_page.html.erb index cb785a438..df46df76d 100644 --- a/app/views/users/_activity_page.html.erb +++ b/app/views/users/_activity_page.html.erb @@ -1,4 +1,4 @@ <%= render "proposals" if @proposals.present? %> <%= render "debates" if @debates.present? && feature?(:debates) %> -<%= render "budget_investments" if @budget_investments.present? %> +<%= render "budget_investments" if @budget_investments.present? && feature?(:budgets) %> <%= render "comments" if @comments.present? %> diff --git a/config/locales/en.yml b/config/locales/en.yml index b19a7b0ac..ade7646ff 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -551,6 +551,7 @@ en: deleted: Deleted deleted_debate: This debate has been deleted deleted_proposal: This proposal has been deleted + deleted_budget_investment: This investment has been deleted filters: comments: one: 1 Comment diff --git a/config/locales/es.yml b/config/locales/es.yml index 8840a5de3..6466c8a5d 100755 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -551,6 +551,7 @@ es: deleted: Eliminado deleted_debate: Este debate ha sido eliminado deleted_proposal: Este propuesta ha sido eliminada + deleted_budget_investment: Este propuesta de inversión ha sido eliminada filters: comments: one: 1 Comentario diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb index 5e36d5bf3..c49feda55 100644 --- a/spec/features/users_spec.rb +++ b/spec/features/users_spec.rb @@ -235,6 +235,24 @@ feature 'Users' do expect(page).to have_content(comment.body) expect(page).to_not have_content(admin_comment.body) end + + scenario 'shows only comments from active features' do + user = create(:user) + 1.times {create(:comment, user: user, commentable: create(:debate))} + 2.times {create(:comment, user: user, commentable: create(:budget_investment))} + 4.times {create(:comment, user: user, commentable: create(:proposal))} + + visit user_path(user) + expect(page).to have_content('7 Comments') + + Setting['feature.debates'] = nil + visit user_path(user) + expect(page).to have_content('6 Comments') + + Setting['feature.budgets'] = nil + visit user_path(user) + expect(page).to have_content('4 Comments') + end end end diff --git a/spec/helpers/users_helper_spec.rb b/spec/helpers/users_helper_spec.rb index f1a72cd36..dcc92ba59 100644 --- a/spec/helpers/users_helper_spec.rb +++ b/spec/helpers/users_helper_spec.rb @@ -28,6 +28,15 @@ describe UsersHelper do expect(comment_commentable_title(comment)).to eq "#{comment.commentable.title}" end + + it "should return the appropriate message for deleted budget investment" do + investment = create(:budget_investment) + comment = create(:comment, commentable: investment) + + investment.hide + + expect(comment_commentable_title(comment)).to eq "#{comment.commentable.title}" + end end describe '#comment_commentable_title' do