diff --git a/Gemfile b/Gemfile index 609a6e816..99f257daa 100644 --- a/Gemfile +++ b/Gemfile @@ -68,7 +68,7 @@ gem 'selectize-rails', '~> 0.11.0' gem 'therubyracer', platforms: :ruby # for settings -gem "rails-settings-cached", '0.4.1' +gem 'rails-settings-cached', '0.4.1' group :development, :test do gem 'capybara', '~> 2.4.1' diff --git a/app/controllers/admin/setting_groups_controller.rb b/app/controllers/admin/setting_groups_controller.rb deleted file mode 100644 index 994cfe531..000000000 --- a/app/controllers/admin/setting_groups_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -class Admin::SettingGroupsController < AdminController - before_action :set_setting_group, only: [:show, :update] - - def index - @q = SettingGroup.search(params[:q]) - @setting_groups = @q.result.page(params[:page]) - end - - def show; end - - def update - if @setting_group.update(setting_group_params) - flash[:notice] = I18n.t('shared.setting_updated') - redirect_to [:admin, @setting_group] - else - flash[:alert] = I18n.t('shared.failed_to_update_setting') - render 'show' - end - end - - private - - def set_setting_group - @setting_group = SettingGroup.find(params[:id]) - end - - def setting_group_params - params.require(:setting_group).permit(settings_attributes: [:value, :id]) - end -end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb new file mode 100644 index 000000000..b8e6048aa --- /dev/null +++ b/app/controllers/admin/settings_controller.rb @@ -0,0 +1,48 @@ +class Admin::SettingsController < AdminController + before_action :set_setting_group, only: [:show, :update] + + def index + @settings = Setting.unscoped + end + + def create + casted_settings.each do |k, v| + Setting[k] = v + end + + flash[:notice] = I18n.t('shared.records_updated') + redirect_to [:admin, :settings] + end + + def show; end + + def update + if @setting_group.update(setting_group_params) + flash[:notice] = I18n.t('shared.setting_updated') + redirect_to [:admin, @setting_group] + else + flash[:alert] = I18n.t('shared.failed_to_update_setting') + render 'show' + end + end + + private + + def set_setting_group + @setting_group = SettingGroup.find(params[:id]) + end + + def setting_group_params + params.require(:setting_group).permit(settings_attributes: [:value, :id]) + end + + def casted_settings + settings = {} + params[:settings].each do |k, v| + settings[k] = v.to_i if Setting[k].class == Fixnum + settings[k] = v.to_f if Setting[k].class == Float + settings[k] = (v == 'true' ? true : false) if [TrueClass, FalseClass].include?(Setting[k].class) + end + settings + end +end diff --git a/app/views/admin/setting_groups/index.haml b/app/views/admin/setting_groups/index.haml deleted file mode 100644 index 1c97f56cb..000000000 --- a/app/views/admin/setting_groups/index.haml +++ /dev/null @@ -1,17 +0,0 @@ -%h2= t('shared.setting_groups') -%hr -.row - .col-md-12 - .table-responsive - %table.table.table-hover.table-bordered.table-condensed - %thead - %tr - %th{class: 'col-xs-9'} - = sort_link(@q, 'code', t('shared.setting_group')) - %th{class: 'col-xs-2'} - = t('shared.action') - %tbody - - @setting_groups.each do |x| - %tr - %td= t("setting_groups.codes.#{x.code}") - %td= link_to(t('shared.edit_settings'), admin_setting_group_path(x), class: 'btn btn-primary btn-xs') diff --git a/app/views/admin/setting_groups/show.haml b/app/views/admin/setting_groups/show.haml deleted file mode 100644 index 714d37407..000000000 --- a/app/views/admin/setting_groups/show.haml +++ /dev/null @@ -1,22 +0,0 @@ -%h2= t("setting_groups.codes.#{@setting_group.code}") -%hr -= form_for([:admin, @setting_group]) do |f| - .row - .col-md-12 - .table-responsive - %table.table.table-hover.table-bordered.table-condensed - %thead - %tr - %th{class: 'col-xs-9'} - = t('shared.setting') - %th{class: 'col-xs-2'} - = t('shared.value') - %tbody - - @setting_group.settings.order(:code).each do |setting| - = f.fields_for :settings, setting do |sf| - %tr - %td= sf.label :value, t("settings.codes.#{sf.object.code}") - %td= sf.text_field(:value, autocomplete: 'off') - .row - .col-md-12.text-right - %button.btn.btn-primary=t('shared.save') diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml new file mode 100644 index 000000000..d3339c382 --- /dev/null +++ b/app/views/admin/settings/index.haml @@ -0,0 +1,26 @@ +%h2= t('shared.settings') +%hr += form_tag [:admin, :settings] do + .row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-9'} + = t('shared.setting') + %th{class: 'col-xs-2'} + = t('shared.value') + %tbody + - @settings.each do |x| + %tr + %td= t("shared.#{x.var}") + - if [TrueClass, FalseClass].include?(x.value.class) + %td + = hidden_field_tag("[settings][#{x.var}]", '') + = check_box_tag("[settings][#{x.var}]", true, x.value) + - else + %td= text_field_tag("[settings][#{x.var}]", x.value) + .row + .col-md-12.text-right + %button.btn.btn-primary=t('shared.save') diff --git a/app/views/layouts/application.haml b/app/views/layouts/application.haml index af4988ea7..0e027110f 100644 --- a/app/views/layouts/application.haml +++ b/app/views/layouts/application.haml @@ -36,7 +36,7 @@ %ul.dropdown-menu{role: "menu"} %li.dropdown-header= t('shared.system') %li - = link_to t('shared.setting_groups'), admin_setting_groups_path + = link_to t('shared.settings'), admin_settings_path %li.divider %li.dropdown-header= t('shared.users') %li diff --git a/config/locales/en.yml b/config/locales/en.yml index 40704d150..fc22f0fb9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -139,11 +139,6 @@ en: blank: 'Contact was not found' taken: 'Contact already exists on this domain!' - setting: - attributes: - code: - taken: 'Code already exists' - domain_status: attributes: setting_id: @@ -249,27 +244,10 @@ en: domain_exists_but_belongs_to_other_registrar: 'Domain exists but belongs to other registrar' attribute_op_is_invalid: 'Attribute op is invalid' - setting_groups: - codes: - domain_validation: 'Domain validation' - domain_general: 'Domain general' - dnskeys: 'DNS keys' - - settings: - codes: - ns_min_count: 'Nameserver minimum count' - ns_max_count: 'Nameserver maximum count' - dnskeys_min_count: 'DNS keys minimum count' - dnskeys_max_count: 'DNS keys maximum count' - ds_data_allowed: 'DS data allowed' - ds_data_with_key_allowed: 'Allow DS data with key' - key_data_allowed: 'Allow key data' - ds_algorithm: 'DS algorithm' shared: code: 'Code' value: 'Value' - setting_groups: 'Setting groups' action: 'Action' edit: 'Edit' save: 'Save' @@ -282,9 +260,6 @@ en: valid_to: 'Valid to' name: 'Name' transfer_can_be_approved_only_by_current_registrar: 'Transfer can be approved only by current domain registrar' - edit_settings: 'Edit settings' - setting_group: 'Setting group' - setting: 'Setting' registrar: 'Registrar' owner: 'Owner' domain_details: 'Domain details' @@ -357,8 +332,6 @@ en: contact_updated: 'Contact updated' search: 'Search' reg_no: 'Reg. no' - setting_updated: 'Setting updated!' - failed_to_update_setting: 'Failed to update setting' status: 'Status' eedirekt: 'EEDirekt' contact: 'Contact' @@ -427,6 +400,7 @@ en: record_created: 'Record created' failed_to_create_record: 'Failed to create record' record_updated: 'Record updated' + records_updated: 'Records updated' failed_to_update_record: 'Failed to update record' record_deleted: 'Record deleted' failed_to_delete_record: 'Failed to delete record' @@ -435,4 +409,14 @@ en: authentication_error: 'Authentication error' ds_data_and_key_data_must_not_exists_together: 'dsData and keyData objects must not exists together' + ns_min_count: 'Nameserver minimum count' + ns_max_count: 'Nameserver maximum count' + dnskeys_min_count: 'DNS keys minimum count' + dnskeys_max_count: 'DNS keys maximum count' + ds_data_allowed: 'DS data allowed' + ds_data_with_key_allowed: 'Allow DS data with key' + key_data_allowed: 'Allow key data' + ds_algorithm: 'DS algorithm' + setting: 'Setting' + registrar: Registrar diff --git a/config/routes.rb b/config/routes.rb index f0aed11b1..05316c6eb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,7 +8,7 @@ Rails.application.routes.draw do ## ADMIN ROUTES namespace(:admin) do resources :domains - resources :setting_groups + resources :settings resources :registrars do collection do get :search diff --git a/db/seeds.rb b/db/seeds.rb index 0aedfe0bb..d0f1fbada 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -66,16 +66,14 @@ User.where( country: Country.where(name: 'Estonia').first ).first_or_create -Setting.destroy_all +Setting.ds_algorithm = 2 +Setting.ds_data_allowed = true +Setting.ds_data_with_key_allowed = true +Setting.key_data_allowed = true -Setting.create(code: Setting::DS_ALGORITHM, value: 2) -Setting.create(code: Setting::ALLOW_DS_DATA, value: 1) -Setting.create(code: Setting::ALLOW_DS_DATA_WITH_KEY, value: 1) -Setting.create(code: Setting::ALLOW_KEY_DATA, value: 1) +Setting.dnskeys_min_count = 0 +Setting.dnskeys_max_count = 9 +Setting.ns_min_count = 2 +Setting.ns_max_count = 11 -Setting.create(code: Setting::DNSKEYS_MIN_COUNT, value: 9) -Setting.create(code: Setting::DNSKEYS_MAX_COUNT, value: 0) -Setting.create(code: Setting::NS_MIN_COUNT, value: 2) -Setting.create(code: Setting::NS_MAX_COUNT, value: 11) - -Setting.create(code: Setting::TRANSFER_WAIT_TIME, value: 0) +Setting.transfer_wait_time = 0