mirror of
https://github.com/internetee/registry.git
synced 2025-07-04 02:03:36 +02:00
Refactor settings UI
This commit is contained in:
parent
dafcb6f78c
commit
bd46afdf41
10 changed files with 97 additions and 110 deletions
2
Gemfile
2
Gemfile
|
@ -68,7 +68,7 @@ gem 'selectize-rails', '~> 0.11.0'
|
||||||
gem 'therubyracer', platforms: :ruby
|
gem 'therubyracer', platforms: :ruby
|
||||||
|
|
||||||
# for settings
|
# for settings
|
||||||
gem "rails-settings-cached", '0.4.1'
|
gem 'rails-settings-cached', '0.4.1'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
gem 'capybara', '~> 2.4.1'
|
gem 'capybara', '~> 2.4.1'
|
||||||
|
|
|
@ -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
|
|
48
app/controllers/admin/settings_controller.rb
Normal file
48
app/controllers/admin/settings_controller.rb
Normal file
|
@ -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
|
|
@ -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')
|
|
|
@ -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')
|
|
26
app/views/admin/settings/index.haml
Normal file
26
app/views/admin/settings/index.haml
Normal file
|
@ -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')
|
|
@ -36,7 +36,7 @@
|
||||||
%ul.dropdown-menu{role: "menu"}
|
%ul.dropdown-menu{role: "menu"}
|
||||||
%li.dropdown-header= t('shared.system')
|
%li.dropdown-header= t('shared.system')
|
||||||
%li
|
%li
|
||||||
= link_to t('shared.setting_groups'), admin_setting_groups_path
|
= link_to t('shared.settings'), admin_settings_path
|
||||||
%li.divider
|
%li.divider
|
||||||
%li.dropdown-header= t('shared.users')
|
%li.dropdown-header= t('shared.users')
|
||||||
%li
|
%li
|
||||||
|
|
|
@ -139,11 +139,6 @@ en:
|
||||||
blank: 'Contact was not found'
|
blank: 'Contact was not found'
|
||||||
taken: 'Contact already exists on this domain!'
|
taken: 'Contact already exists on this domain!'
|
||||||
|
|
||||||
setting:
|
|
||||||
attributes:
|
|
||||||
code:
|
|
||||||
taken: 'Code already exists'
|
|
||||||
|
|
||||||
domain_status:
|
domain_status:
|
||||||
attributes:
|
attributes:
|
||||||
setting_id:
|
setting_id:
|
||||||
|
@ -249,27 +244,10 @@ en:
|
||||||
domain_exists_but_belongs_to_other_registrar: 'Domain exists but belongs to other registrar'
|
domain_exists_but_belongs_to_other_registrar: 'Domain exists but belongs to other registrar'
|
||||||
attribute_op_is_invalid: 'Attribute op is invalid'
|
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:
|
shared:
|
||||||
code: 'Code'
|
code: 'Code'
|
||||||
value: 'Value'
|
value: 'Value'
|
||||||
setting_groups: 'Setting groups'
|
|
||||||
action: 'Action'
|
action: 'Action'
|
||||||
edit: 'Edit'
|
edit: 'Edit'
|
||||||
save: 'Save'
|
save: 'Save'
|
||||||
|
@ -282,9 +260,6 @@ en:
|
||||||
valid_to: 'Valid to'
|
valid_to: 'Valid to'
|
||||||
name: 'Name'
|
name: 'Name'
|
||||||
transfer_can_be_approved_only_by_current_registrar: 'Transfer can be approved only by current domain registrar'
|
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'
|
registrar: 'Registrar'
|
||||||
owner: 'Owner'
|
owner: 'Owner'
|
||||||
domain_details: 'Domain details'
|
domain_details: 'Domain details'
|
||||||
|
@ -357,8 +332,6 @@ en:
|
||||||
contact_updated: 'Contact updated'
|
contact_updated: 'Contact updated'
|
||||||
search: 'Search'
|
search: 'Search'
|
||||||
reg_no: 'Reg. no'
|
reg_no: 'Reg. no'
|
||||||
setting_updated: 'Setting updated!'
|
|
||||||
failed_to_update_setting: 'Failed to update setting'
|
|
||||||
status: 'Status'
|
status: 'Status'
|
||||||
eedirekt: 'EEDirekt'
|
eedirekt: 'EEDirekt'
|
||||||
contact: 'Contact'
|
contact: 'Contact'
|
||||||
|
@ -427,6 +400,7 @@ en:
|
||||||
record_created: 'Record created'
|
record_created: 'Record created'
|
||||||
failed_to_create_record: 'Failed to create record'
|
failed_to_create_record: 'Failed to create record'
|
||||||
record_updated: 'Record updated'
|
record_updated: 'Record updated'
|
||||||
|
records_updated: 'Records updated'
|
||||||
failed_to_update_record: 'Failed to update record'
|
failed_to_update_record: 'Failed to update record'
|
||||||
record_deleted: 'Record deleted'
|
record_deleted: 'Record deleted'
|
||||||
failed_to_delete_record: 'Failed to delete record'
|
failed_to_delete_record: 'Failed to delete record'
|
||||||
|
@ -435,4 +409,14 @@ en:
|
||||||
authentication_error: 'Authentication error'
|
authentication_error: 'Authentication error'
|
||||||
ds_data_and_key_data_must_not_exists_together: 'dsData and keyData objects must not exists together'
|
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
|
registrar: Registrar
|
||||||
|
|
|
@ -8,7 +8,7 @@ Rails.application.routes.draw do
|
||||||
## ADMIN ROUTES
|
## ADMIN ROUTES
|
||||||
namespace(:admin) do
|
namespace(:admin) do
|
||||||
resources :domains
|
resources :domains
|
||||||
resources :setting_groups
|
resources :settings
|
||||||
resources :registrars do
|
resources :registrars do
|
||||||
collection do
|
collection do
|
||||||
get :search
|
get :search
|
||||||
|
|
20
db/seeds.rb
20
db/seeds.rb
|
@ -66,16 +66,14 @@ User.where(
|
||||||
country: Country.where(name: 'Estonia').first
|
country: Country.where(name: 'Estonia').first
|
||||||
).first_or_create
|
).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.dnskeys_min_count = 0
|
||||||
Setting.create(code: Setting::ALLOW_DS_DATA, value: 1)
|
Setting.dnskeys_max_count = 9
|
||||||
Setting.create(code: Setting::ALLOW_DS_DATA_WITH_KEY, value: 1)
|
Setting.ns_min_count = 2
|
||||||
Setting.create(code: Setting::ALLOW_KEY_DATA, value: 1)
|
Setting.ns_max_count = 11
|
||||||
|
|
||||||
Setting.create(code: Setting::DNSKEYS_MIN_COUNT, value: 9)
|
Setting.transfer_wait_time = 0
|
||||||
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)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue