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