diff --git a/app/controllers/admin/nameservers_controller.rb b/app/controllers/admin/nameservers_controller.rb index 19888cfb3..4ab1fca5e 100644 --- a/app/controllers/admin/nameservers_controller.rb +++ b/app/controllers/admin/nameservers_controller.rb @@ -1,4 +1,8 @@ class Admin::NameserversController < ApplicationController + # TODO: Refactor this to domain_nameservers controller! + before_action :set_domain + before_action :set_nameserver, only: [:edit, :update, :destroy] + def new @domain = Domain.find(params[:domain_id]) @nameserver = @domain.nameservers.build @@ -15,6 +19,19 @@ class Admin::NameserversController < ApplicationController end end + def edit + @domain = Domain.find(params[:domain_id]) + @nameserver = Nameserver.find(params[:id]) + end + + def update + if @nameserver.update(nameserver_params) && @domain.valid? + redirect_to [:admin, @domain] + else + render 'edit' + end + end + def destroy # TODO: Refactor this @nameserver = Nameserver.find(params[:id]) @@ -25,6 +42,14 @@ class Admin::NameserversController < ApplicationController private + def set_domain + @domain = Domain.find(params[:domain_id]) + end + + def set_nameserver + @nameserver = Nameserver.find(params[:id]) + end + def nameserver_params params.require(:nameserver).permit(:hostname, :ipv4, :ipv6) end diff --git a/app/views/admin/domains/index.haml b/app/views/admin/domains/index.haml index b5bcbbb56..7ae3994b0 100644 --- a/app/views/admin/domains/index.haml +++ b/app/views/admin/domains/index.haml @@ -1,4 +1,9 @@ -%h2= t('shared.domains') +.row + .col-sm-6 + %h2.text-center-xs= t('shared.domains') + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.add'), new_admin_domain_path, class: 'btn btn-primary') %hr .row .col-md-12 diff --git a/app/views/admin/domains/new.haml b/app/views/admin/domains/new.haml index 3221a18dc..3f8c469a1 100644 --- a/app/views/admin/domains/new.haml +++ b/app/views/admin/domains/new.haml @@ -1,7 +1,6 @@ %h2= t('shared.new_domain') %hr = form_for([:admin, @domain]) do |f| - = @domain.errors.inspect - if @domain.errors.any? - @domain.errors.each do |attr, err| = err diff --git a/app/views/admin/domains/partials/_nameservers.haml b/app/views/admin/domains/partials/_nameservers.haml index 5144bbf7e..e7287dcb3 100644 --- a/app/views/admin/domains/partials/_nameservers.haml +++ b/app/views/admin/domains/partials/_nameservers.haml @@ -20,8 +20,8 @@ %td= x.ipv4 %td= x.ipv6 %td - = link_to(t('shared.edit'), root_path, class: 'btn btn-primary btn-xs') - = link_to(t('shared.delete'), [:admin, x], method: :delete, data: { confirm: t('shared.are_you_sure') }, class: 'btn btn-danger btn-xs') + = link_to(t('shared.edit'), edit_admin_domain_nameserver_path(@domain, x), class: 'btn btn-primary btn-xs') + = link_to(t('shared.delete'), admin_domain_nameserver_path(@domain, x), method: :delete, data: { confirm: t('shared.are_you_sure') }, class: 'btn btn-danger btn-xs') - if @domain.errors.messages[:nameservers] %tfoot - @domain.errors.messages[:nameservers].each do |x| diff --git a/app/views/admin/nameservers/_form.html.haml b/app/views/admin/nameservers/_form.html.haml new file mode 100644 index 000000000..e08abcc66 --- /dev/null +++ b/app/views/admin/nameservers/_form.html.haml @@ -0,0 +1,28 @@ += form_for([:admin, @domain, @nameserver]) do |f| + = render 'admin/shared/errors', object: @domain + = render 'admin/shared/errors', object: f.object + + - if @domain.errors.any? + %hr + + .row + .col-md-6 + .form-group + = label_tag t('shared.domain') + = text_field_tag :domain, @domain.name, disabled: true, class: 'form-control' + .col-md-6 + .form-group + = f.label :hostname + = f.text_field(:hostname, class: 'form-control', autocomplete: 'off') + .row + .col-md-6 + .form-group + = f.label :ipv4 + = f.text_field(:ipv4, class: 'form-control', autocomplete: 'off') + .col-md-6 + .form-group + = f.label :ipv6 + = f.text_field(:ipv6, class: 'form-control', autocomplete: 'off') + .row + .col-md-12.text-right + = button_tag(t('shared.save'), class: 'btn btn-primary') diff --git a/app/views/admin/nameservers/edit.haml b/app/views/admin/nameservers/edit.haml new file mode 100644 index 000000000..4fa2277d9 --- /dev/null +++ b/app/views/admin/nameservers/edit.haml @@ -0,0 +1,3 @@ +%h2= t('shared.edit_nameserver') +%hr += render 'form' diff --git a/app/views/admin/nameservers/new.haml b/app/views/admin/nameservers/new.haml index 8f96bb6e1..3269004db 100644 --- a/app/views/admin/nameservers/new.haml +++ b/app/views/admin/nameservers/new.haml @@ -1,30 +1,3 @@ %h2= t('shared.new_nameserver') %hr -= form_for([:admin, @domain, @nameserver]) do |f| - = render 'admin/shared/errors', object: @domain - = render 'admin/shared/errors', object: f.object - - - if @domain.errors.any? - %hr - - .row - .col-md-6 - .form-group - = label_tag t('shared.domain') - = text_field_tag :domain, @domain.name, disabled: true, class: 'form-control' - .col-md-6 - .form-group - = f.label :hostname - = f.text_field(:hostname, class: 'form-control', autocomplete: 'off') - .row - .col-md-6 - .form-group - = f.label :ipv4 - = f.text_field(:ipv4, class: 'form-control', autocomplete: 'off') - .col-md-6 - .form-group - = f.label :ipv6 - = f.text_field(:ipv6, class: 'form-control', autocomplete: 'off') - .row - .col-md-12.text-right - = button_tag(t('shared.save'), class: 'btn btn-primary') += render 'form' diff --git a/config/locales/en.yml b/config/locales/en.yml index 4aac2abec..f288999d7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -190,3 +190,5 @@ en: contact_code: 'Contact code' add: 'Add' domain: 'Domain' + new_nameserver: 'New nameserver' + edit_nameserver: 'Edit nameserver' diff --git a/config/routes.rb b/config/routes.rb index 061da604a..34381a802 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,8 +7,7 @@ Rails.application.routes.draw do namespace(:admin) do resources :domains do - resources :nameservers, shallow: true - + resources :nameservers end resources :setting_groups resources :registrars do