From 6e75f5b494bd209476de88a7d5a609a32a4e3866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Salvador=20P=C3=A9rez=20Garc=C3=ADa?= Date: Mon, 9 Jul 2018 09:25:47 +0200 Subject: [PATCH] Fixes #140 Adds a new setting that allows defining what is considered a successful proposal. --- app/controllers/admin/settings_controller.rb | 26 ++++++++++++------- app/models/setting.rb | 18 ++++++------- .../admin/settings/_filter_subnav.html.erb | 4 +++ app/views/admin/settings/_proposals.html.erb | 21 +++++++++++++++ app/views/admin/settings/index.html.erb | 4 +++ config/locales/en/admin.yml | 2 ++ config/locales/en/settings.yml | 4 ++- config/locales/es/admin.yml | 2 ++ config/locales/es/settings.yml | 2 ++ db/seeds.rb | 2 ++ lib/tasks/proposal_actions.rake | 5 ++++ 11 files changed, 71 insertions(+), 19 deletions(-) create mode 100644 app/views/admin/settings/_proposals.html.erb diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 5b7147026..4beae99fe 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -1,4 +1,5 @@ class Admin::SettingsController < Admin::BaseController + helper_method :successful_proposal_setting, :successful_proposals def index all_settings = Setting.all.group_by { |s| s.type } @@ -11,20 +12,27 @@ class Admin::SettingsController < Admin::BaseController def update @setting = Setting.find(params[:id]) @setting.update(settings_params) - redirect_to request.referer, notice: t("admin.settings.flash.updated") + redirect_to request.referer, notice: t('admin.settings.flash.updated') end def update_map - Setting["map_latitude"] = params[:latitude].to_f - Setting["map_longitude"] = params[:longitude].to_f - Setting["map_zoom"] = params[:zoom].to_i - redirect_to admin_settings_path, notice: t("admin.settings.index.map.flash.update") + Setting['map_latitude'] = params[:latitude].to_f + Setting['map_longitude'] = params[:longitude].to_f + Setting['map_zoom'] = params[:zoom].to_i + redirect_to admin_settings_path, notice: t('admin.settings.index.map.flash.update') end private - def settings_params - params.require(:setting).permit(:value) - end + def settings_params + params.require(:setting).permit(:value) + end -end \ No newline at end of file + def successful_proposal_setting + Setting.find_by(key: 'proposals.successful_proposal_id') + end + + def successful_proposals + Proposal.successful + end +end diff --git a/app/models/setting.rb b/app/models/setting.rb index 34c45aeed..b40aded40 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -6,15 +6,11 @@ class Setting < ActiveRecord::Base scope :banner_img, -> { where("key ilike ?", "banner-img.%")} def type - if feature_flag? - 'feature' - elsif banner_style? - 'banner-style' - elsif banner_img? - 'banner-img' - else - 'common' - end + return 'feature' if feature_flag? + return 'banner-style' if banner_style? + return 'banner-img' if banner_img? + return 'proposals' if proposals? + 'common' end def feature_flag? @@ -33,6 +29,10 @@ class Setting < ActiveRecord::Base key.start_with?('banner-img.') end + def proposals? + key.start_with?('proposals.') + end + class << self def [](key) where(key: key).pluck(:value).first.presence diff --git a/app/views/admin/settings/_filter_subnav.html.erb b/app/views/admin/settings/_filter_subnav.html.erb index c7d81e0a5..cbcdcdbd5 100644 --- a/app/views/admin/settings/_filter_subnav.html.erb +++ b/app/views/admin/settings/_filter_subnav.html.erb @@ -28,4 +28,8 @@ <%= t("admin.settings.index.map.title") %> <% end %> + +
  • + <%= link_to t('admin.settings.index.proposals.title'), '#tab-proposals' %> +
  • diff --git a/app/views/admin/settings/_proposals.html.erb b/app/views/admin/settings/_proposals.html.erb new file mode 100644 index 000000000..c09efc1b3 --- /dev/null +++ b/app/views/admin/settings/_proposals.html.erb @@ -0,0 +1,21 @@ +

    <%= t('admin.settings.index.proposals.title') %>

    + + + + + + + + +
    + <%= t("settings.#{successful_proposal_setting.key}") %> + + <%= form_for(successful_proposal_setting, url: admin_setting_path(successful_proposal_setting), html: { id: "edit_#{dom_id(successful_proposal_setting)}"}) do |f| %> +
    + <%= f.select :value, successful_proposals.collect { |p| [p.title, p.id] }, { include_blank: true, label: false }, label: false, id: dom_id(successful_proposal_setting) %> +
    +
    + <%= f.submit(t('admin.settings.index.update_setting'), class: "button hollow expanded") %> +
    + <% end %> +
    diff --git a/app/views/admin/settings/index.html.erb b/app/views/admin/settings/index.html.erb index 7c03d77a5..f9f490f24 100644 --- a/app/views/admin/settings/index.html.erb +++ b/app/views/admin/settings/index.html.erb @@ -21,4 +21,8 @@
    <%= render "map_configuration" %>
    + +
    + <%= render "proposals" %> +
    diff --git a/config/locales/en/admin.yml b/config/locales/en/admin.yml index edb074bf0..119c890a6 100644 --- a/config/locales/en/admin.yml +++ b/config/locales/en/admin.yml @@ -982,6 +982,8 @@ en: update: Map configuration updated succesfully. form: submit: Update + proposals: + title: Proposal related settings shared: booths_search: button: Search diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml index 1d2bb819a..560c1b197 100644 --- a/config/locales/en/settings.yml +++ b/config/locales/en/settings.yml @@ -62,4 +62,6 @@ en: meta_keywords: "Keywords (SEO)" verification_offices_url: Verification offices URL min_age_to_participate: Minimum age needed to participate - proposal_improvement_path: Proposal improvement info internal link \ No newline at end of file + proposal_improvement_path: Proposal improvement info internal link + proposals: + successful_proposal_id: Successful proposal diff --git a/config/locales/es/admin.yml b/config/locales/es/admin.yml index cd9515ae8..1474bc03d 100644 --- a/config/locales/es/admin.yml +++ b/config/locales/es/admin.yml @@ -982,6 +982,8 @@ es: update: La configuración del mapa se ha guardado correctamente. form: submit: Actualizar + proposals: + title: Ajustes para propuestas shared: booths_search: button: Buscar diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml index 90f785580..ccbae373d 100644 --- a/config/locales/es/settings.yml +++ b/config/locales/es/settings.yml @@ -63,3 +63,5 @@ es: verification_offices_url: URL oficinas verificación min_age_to_participate: Edad mínima para participar proposal_improvement_path: Link a información para mejorar propuestas + proposals: + successful_proposal_id: Propuesta exitosa diff --git a/db/seeds.rb b/db/seeds.rb index e453495f2..35c6b6141 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -132,3 +132,5 @@ Setting['feature.homepage.widgets.feeds.proposals'] = true Setting['feature.homepage.widgets.feeds.debates'] = true Setting['feature.homepage.widgets.feeds.processes'] = true +# Proposals +Setting['proposals.successful_proposal_id'] = nil diff --git a/lib/tasks/proposal_actions.rake b/lib/tasks/proposal_actions.rake index 8c35ef707..f1411f02a 100644 --- a/lib/tasks/proposal_actions.rake +++ b/lib/tasks/proposal_actions.rake @@ -12,4 +12,9 @@ namespace :proposal_actions do ) end end + + desc 'Initialize successful proposal id setting' + task initialize_successful_proposal_id: :environment do + Setting['proposals.successful_proposal_id'] = nil + end end