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 %> + +
| + <%= 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 %>
+ |
+