Nameserver form validations

This commit is contained in:
Martin Lensment 2014-09-11 16:40:51 +03:00
parent d9c750e7e2
commit 211964c296
8 changed files with 71 additions and 16 deletions

View file

@ -1,9 +1,13 @@
Autocomplete.bindTypeahead ready = ->
remote: '/admin/registrars/search' Autocomplete.bindTypeahead
selector: '.js-registrar-typeahead' remote: '/admin/registrars/search'
hiddenSelector: '.js-registrar-id' selector: '.js-registrar-typeahead'
hiddenSelector: '.js-registrar-id'
Autocomplete.bindTypeahead Autocomplete.bindTypeahead
remote: '/admin/contacts/search' remote: '/admin/contacts/search'
selector: '.js-contact-typeahead' selector: '.js-contact-typeahead'
hiddenSelector: '.js-contact-id' hiddenSelector: '.js-contact-id'
$(document).ready(ready)
$(document).on('page:load', ready)

View file

@ -9,11 +9,14 @@ class Admin::NameserversController < ApplicationController
def create def create
@domain = Domain.find(params[:domain_id]) @domain = Domain.find(params[:domain_id])
@nameserver = @domain.nameservers.build(nameserver_params)
if @domain.save if @domain.can_add_nameserver?
redirect_to [:admin, @domain] @domain.nameservers.build(nameserver_params)
flash[:notice] = I18n.t('shared.nameserver_added')
redirect_to [:admin, @domain] and return if @domain.save
else else
@nameserver = @domain.nameservers.build(nameserver_params)
flash.now[:alert] = I18n.t('shared.failed_to_add_nameserver')
render 'new' render 'new'
end end
end end
@ -32,7 +35,16 @@ class Admin::NameserversController < ApplicationController
end end
def destroy def destroy
@nameserver.destroy if @domain.can_remove_nameserver?
if @nameserver.destroy
flash[:notice] = I18n.t('shared.nameserver_deleted')
else
flash[:alert] = I18n.t('shared.failed_to_delete_nameserver')
end
else
flash[:alert] = @domain.errors[:nameservers].first
end
redirect_to [:admin, @domain] redirect_to [:admin, @domain]
end end

View file

@ -46,6 +46,21 @@ class Domain < ActiveRecord::Base
end end
### VALIDATIONS ### ### VALIDATIONS ###
def can_remove_nameserver?
sg = SettingGroup.domain_validation
min = sg.setting(:ns_min_count).value.to_i
return true if nameservers.length > min
errors.add(:nameservers, :greater_than_or_equal_to, { count: min })
false
end
def can_add_nameserver?
sg = SettingGroup.domain_validation
max = sg.setting(:ns_max_count).value.to_i
return true if nameservers.length < max
errors.add(:nameservers, :less_than_or_equal_to, { count: max })
false
end
def validate_nameservers_count def validate_nameservers_count
sg = SettingGroup.domain_validation sg = SettingGroup.domain_validation
@ -75,6 +90,8 @@ class Domain < ActiveRecord::Base
def all_dependencies_valid? def all_dependencies_valid?
validate_nameservers_count validate_nameservers_count
validate_admin_contacts_count validate_admin_contacts_count
errors.empty?
end end
## SHARED ## SHARED

View file

@ -1,3 +1,9 @@
%h2= t('shared.edit_nameserver') .row
.col-sm-6
%h2.text-center-xs
= "#{t('shared.edit_nameserver')}"
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('shared.back_to_domain'), [:admin, @domain], class: 'btn btn-default')
%hr %hr
= render 'form' = render 'form'

View file

@ -1,3 +1,9 @@
%h2= t('shared.new_nameserver') .row
.col-sm-6
%h2.text-center-xs
= "#{t('shared.new_nameserver')}"
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('shared.back_to_domain'), [:admin, @domain], class: 'btn btn-default')
%hr %hr
= render 'form' = render 'form'

View file

@ -7,6 +7,7 @@
%meta{content: "Gitlab LTD", name: "author"}/ %meta{content: "Gitlab LTD", name: "author"}/
= csrf_meta_tags = csrf_meta_tags
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
%link{href: "../../favicon.ico", rel: "icon"}/ %link{href: "../../favicon.ico", rel: "icon"}/
%title Eesti Interneti SA %title Eesti Interneti SA
%body %body
@ -48,7 +49,9 @@
%li= link_to t('shared.log_out'), '/logout' %li= link_to t('shared.log_out'), '/logout'
/ /.nav-collapse / /.nav-collapse
.container .container
- display = (flash.empty?) ? 'none' : 'block'
#flash{style: "display: #{display};"}
- type = (flash[:notice]) ? 'bg-success' : 'bg-danger'
.alert{class: type}= flash[:notice] || flash[:alert]
= yield = yield
= javascript_include_tag 'application', 'data-turbolinks-track' => true

View file

@ -85,6 +85,8 @@ en:
out_of_range: 'Nameservers count must be between %{min}-%{max}' out_of_range: 'Nameservers count must be between %{min}-%{max}'
not_found: 'Nameserver was not found' not_found: 'Nameserver was not found'
taken: 'Nameserver already exists on this domain' taken: 'Nameserver already exists on this domain'
less_than_or_equal_to: 'Nameservers count must be less than or equal to %{count}'
greater_than_or_equal_to: 'Nameservers count must be greater than or equal to %{count}'
period: period:
out_of_range: 'Period must add up to 1, 2 or 3 years' out_of_range: 'Period must add up to 1, 2 or 3 years'
not_a_number: 'Period is not a number' not_a_number: 'Period is not a number'
@ -198,3 +200,8 @@ en:
domain: 'Domain' domain: 'Domain'
new_nameserver: 'New nameserver' new_nameserver: 'New nameserver'
edit_nameserver: 'Edit nameserver' edit_nameserver: 'Edit nameserver'
nameserver_deleted: 'Nameserver deleted!'
failed_to_delete_nameserver: 'Failed to delete nameserver!'
failed_to_add_nameserver: 'Failed to add nameserver!'
nameserver_added: 'Nameserver added!'
back_to_domain: 'Back to domain'

View file