diff --git a/app/controllers/admin/proposals_controller.rb b/app/controllers/admin/proposals_controller.rb
index 2a6dfd718..02cf44aaf 100644
--- a/app/controllers/admin/proposals_controller.rb
+++ b/app/controllers/admin/proposals_controller.rb
@@ -1,6 +1,10 @@
class Admin::ProposalsController < Admin::BaseController
+ include FeatureFlags
+
has_filters %w{without_confirmed_hide all with_confirmed_hide}, only: :index
+ feature_flag :proposals
+
before_action :load_proposal, only: [:confirm_hide, :restore]
def index
@@ -25,4 +29,4 @@ class Admin::ProposalsController < Admin::BaseController
@proposal = Proposal.with_hidden.find(params[:id])
end
-end
\ No newline at end of file
+end
diff --git a/app/controllers/moderation/proposals_controller.rb b/app/controllers/moderation/proposals_controller.rb
index 4883bd378..f15aca85d 100644
--- a/app/controllers/moderation/proposals_controller.rb
+++ b/app/controllers/moderation/proposals_controller.rb
@@ -1,9 +1,12 @@
class Moderation::ProposalsController < Moderation::BaseController
include ModerateActions
+ include FeatureFlags
has_filters %w{pending_flag_review all with_ignored_flag}, only: :index
has_orders %w{flags created_at}, only: :index
+ feature_flag :proposals
+
before_action :load_resources, only: [:index, :moderate]
load_and_authorize_resource
diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb
index e86caf922..bfd8baeb0 100644
--- a/app/controllers/proposals_controller.rb
+++ b/app/controllers/proposals_controller.rb
@@ -1,4 +1,5 @@
class ProposalsController < ApplicationController
+ include FeatureFlags
include CommentableActions
include FlagActions
@@ -7,6 +8,8 @@ class ProposalsController < ApplicationController
before_action :load_geozones, only: [:edit, :map, :summary]
before_action :authenticate_user!, except: [:index, :show, :map, :summary]
+ feature_flag :proposals
+
invisible_captcha only: [:create, :update], honeypot: :subtitle
has_orders ->(c) { Proposal.proposals_orders(c.current_user) }, only: :index
diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb
index bae999fe4..41500e376 100644
--- a/app/views/admin/_menu.html.erb
+++ b/app/views/admin/_menu.html.erb
@@ -19,9 +19,11 @@
<%= t("admin.menu.title_moderated_content") %>
>
- - >
- <%= link_to t("admin.menu.hidden_proposals"), admin_proposals_path %>
-
+ <% if feature?(:proposals) %>
+ - >
+ <%= link_to t("admin.menu.hidden_proposals"), admin_proposals_path %>
+
+ <% end %>
<% if feature?(:debates) %>
- >
diff --git a/app/views/moderation/_menu.html.erb b/app/views/moderation/_menu.html.erb
index 652089969..d9aa8ddcd 100644
--- a/app/views/moderation/_menu.html.erb
+++ b/app/views/moderation/_menu.html.erb
@@ -4,12 +4,14 @@
<%= link_to t("moderation.dashboard.index.title"), moderation_root_path %>
- - >
- <%= link_to moderation_proposals_path do %>
-
- <%= t("moderation.menu.proposals") %>
- <% end %>
-
+ <% if feature?(:proposals) %>
+ - >
+ <%= link_to moderation_proposals_path do %>
+
+ <%= t("moderation.menu.proposals") %>
+ <% end %>
+
+ <% end %>
<% if feature?(:debates) %>
- >
diff --git a/app/views/pages/more_info/_menu.html.erb b/app/views/pages/more_info/_menu.html.erb
index 85097e6a8..e48d47b5b 100644
--- a/app/views/pages/more_info/_menu.html.erb
+++ b/app/views/pages/more_info/_menu.html.erb
@@ -6,9 +6,11 @@
<%= link_to t("pages.more_info.menu.debates"), "#debates", class: "button hollow expanded" %>
<% end %>
- -
- <%= link_to t("pages.more_info.menu.proposals"), "#proposals", class: "button hollow expanded" %>
-
+ <% if feature?(:proposals) %>
+ -
+ <%= link_to t("pages.more_info.menu.proposals"), "#proposals", class: "button hollow expanded" %>
+
+ <% end %>
<% if feature?(:budgets) %>
-
<%= link_to t("pages.more_info.menu.budgets"), "#budgets", class: "button hollow expanded" %>
diff --git a/app/views/pages/more_info/index.html.erb b/app/views/pages/more_info/index.html.erb
index a005672a3..79cbd77b5 100644
--- a/app/views/pages/more_info/index.html.erb
+++ b/app/views/pages/more_info/index.html.erb
@@ -22,7 +22,9 @@
<%= render "pages/more_info/debates" %>
<% end %>
- <%= render "pages/more_info/proposals" %>
+ <% if feature?(:proposals) %>
+ <%= render "pages/more_info/proposals" %>
+ <% end %>
<% if feature?(:budgets) %>
<%= render "pages/more_info/budgets" %>
diff --git a/app/views/shared/_subnavigation.html.erb b/app/views/shared/_subnavigation.html.erb
index f228bd219..65bcbc0fd 100644
--- a/app/views/shared/_subnavigation.html.erb
+++ b/app/views/shared/_subnavigation.html.erb
@@ -9,13 +9,15 @@
title: t("shared.go_to_page") + t("layouts.header.debates") %>
<% end %>
- -
- <%= layout_menu_link_to t("layouts.header.proposals"),
+ <% if feature?(:proposals) %>
+
-
+ <%= layout_menu_link_to t("layouts.header.proposals"),
proposals_path,
controller_name == 'proposals' && !controller.class.parent == Legislation,
accesskey: "2",
title: t("shared.go_to_page") + t("layouts.header.proposals") %>
-
+
+ <% end %>
<% if feature?(:polls) %>
-
<%= layout_menu_link_to t("layouts.header.poll_questions"),
diff --git a/app/views/users/_activity_page.html.erb b/app/views/users/_activity_page.html.erb
index bbea17ae6..eaa8a73b7 100644
--- a/app/views/users/_activity_page.html.erb
+++ b/app/views/users/_activity_page.html.erb
@@ -1,5 +1,5 @@
<%= render "following" if @follows.present? %>
-<%= render "proposals" if @proposals.present? %>
+<%= render "proposals" if @proposals.present? && feature?(:proposals) %>
<%= render "debates" if @debates.present? && feature?(:debates) %>
<%= render "budget_investments" if @budget_investments.present? && feature?(:budgets) %>
<%= render "comments" if @comments.present? %>
diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml
index 2295660ac..59452bbe6 100644
--- a/config/locales/en/settings.yml
+++ b/config/locales/en/settings.yml
@@ -32,6 +32,7 @@ en:
twitter_login: Twitter login
facebook_login: Facebook login
google_login: Google login
+ proposals: Proposals
debates: Debates
polls: Polls
signature_sheets: Signature sheets
diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml
index ae31d0a4a..bf8e112ac 100644
--- a/config/locales/es/settings.yml
+++ b/config/locales/es/settings.yml
@@ -32,6 +32,7 @@ es:
twitter_login: Registro con Twitter
facebook_login: Registro con Facebook
google_login: Registro con Google
+ proposals: Propuestas
debates: Debates
polls: Votaciones
signature_sheets: Hojas de firmas
diff --git a/config/locales/fr/settings.yml b/config/locales/fr/settings.yml
index 4eb20ecc5..174d468f5 100644
--- a/config/locales/fr/settings.yml
+++ b/config/locales/fr/settings.yml
@@ -32,6 +32,7 @@ fr:
twitter_login: Se connecter avec Twitter
facebook_login: Se connecter avec Facebook
google_login: Se connecter avec Google
+ proposals: Propositions
debates: Débats
polls: Votes
signature_sheets: Feuilles de signature
diff --git a/config/locales/nl/settings.yml b/config/locales/nl/settings.yml
index 32938a8d3..83f6b5a10 100644
--- a/config/locales/nl/settings.yml
+++ b/config/locales/nl/settings.yml
@@ -31,6 +31,7 @@ nl:
twitter_login: Twitter login
facebook_login: Facebook login
google_login: Google login
+ proposals: Proposals
debates: Debates
polls: Polls
signature_sheets: Signature sheets
diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb
index 8476f7693..af3e602e6 100644
--- a/db/dev_seeds.rb
+++ b/db/dev_seeds.rb
@@ -38,6 +38,7 @@ section "Creating Settings" do
Setting.create(key: 'org_name', value: 'CONSUL')
Setting.create(key: 'place_name', value: 'City')
Setting.create(key: 'feature.debates', value: "true")
+ Setting.create(key: 'feature.proposals', value: "true")
Setting.create(key: 'feature.polls', value: "true")
Setting.create(key: 'feature.spending_proposals', value: nil)
Setting.create(key: 'feature.spending_proposal_features.voting_allowed', value: nil)
diff --git a/db/seeds.rb b/db/seeds.rb
index 6ef55067c..6758bf75c 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -71,6 +71,7 @@ Setting["meta_keywords"] = nil
# Feature flags
Setting['feature.debates'] = true
+Setting['feature.proposals'] = true
Setting['feature.spending_proposals'] = nil
Setting['feature.polls'] = true
Setting['feature.twitter_login'] = true
diff --git a/spec/features/admin/proposals_spec.rb b/spec/features/admin/proposals_spec.rb
index be859c3e6..df70572a4 100644
--- a/spec/features/admin/proposals_spec.rb
+++ b/spec/features/admin/proposals_spec.rb
@@ -7,6 +7,16 @@ feature 'Admin proposals' do
login_as(admin.user)
end
+ scenario 'Disabled with a feature flag' do
+ Setting['feature.proposals'] = nil
+ admin = create(:administrator)
+ login_as(admin.user)
+
+ expect{ visit admin_proposals_path }.to raise_exception(FeatureFlags::FeatureDisabled)
+
+ Setting['feature.proposals'] = true
+ end
+
scenario 'List shows all relevant info' do
proposal = create(:proposal, :hidden)
visit admin_proposals_path
diff --git a/spec/features/moderation/proposals_spec.rb b/spec/features/moderation/proposals_spec.rb
index ab8da4764..86ab40836 100644
--- a/spec/features/moderation/proposals_spec.rb
+++ b/spec/features/moderation/proposals_spec.rb
@@ -2,6 +2,16 @@ require 'rails_helper'
feature 'Moderate proposals' do
+ scenario 'Disabled with a feature flag' do
+ Setting['feature.proposals'] = nil
+ moderator = create(:moderator)
+ login_as(moderator.user)
+
+ expect{ visit moderation_proposals_path }.to raise_exception(FeatureFlags::FeatureDisabled)
+
+ Setting['feature.proposals'] = true
+ end
+
scenario 'Hide', :js do
citizen = create(:user)
moderator = create(:moderator)
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 192e7949f..886459c38 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -3,6 +3,12 @@ require 'rails_helper'
feature 'Proposals' do
+ scenario 'Disabled with a feature flag' do
+ Setting['feature.proposals'] = nil
+ expect{ visit proposals_path }.to raise_exception(FeatureFlags::FeatureDisabled)
+ Setting['feature.proposals'] = true
+ end
+
context 'Index' do
scenario 'Lists featured and regular proposals' do
featured_proposals = create_featured_proposals