diff --git a/app/controllers/admin/zonefile_settings_controller.rb b/app/controllers/admin/zonefile_settings_controller.rb index d671acba5..b9491a02c 100644 --- a/app/controllers/admin/zonefile_settings_controller.rb +++ b/app/controllers/admin/zonefile_settings_controller.rb @@ -35,6 +35,16 @@ class Admin::ZonefileSettingsController < AdminController end end + def destroy + if @zonefile_setting.destroy + flash[:notice] = I18n.t('record_deleted') + redirect_to admin_zonefile_settings_path + else + flash.now[:alert] = I18n.t('failed_to_delete_record') + render 'edit' + end + end + private def set_zonefile_setting diff --git a/app/models/zonefile_setting.rb b/app/models/zonefile_setting.rb index 60b9994c1..403385bb5 100644 --- a/app/models/zonefile_setting.rb +++ b/app/models/zonefile_setting.rb @@ -4,6 +4,14 @@ class ZonefileSetting < ActiveRecord::Base validates :ttl, :refresh, :retry, :expire, :minimum_ttl, numericality: { only_integer: true } validates :origin, uniqueness: true + before_destroy :check_for_dependencies + def check_for_dependencies + dc = Domain.where("name ILIKE ?", "%.#{origin}").count + return if dc == 0 + errors.add(:base, I18n.t('there_are_count_domains_in_this_zone', count: dc)) + false + end + def self.generate_zonefiles pluck(:origin).each do |origin| generate_zonefile(origin) diff --git a/app/views/admin/zonefile_settings/edit.haml b/app/views/admin/zonefile_settings/edit.haml index f8f9a83c4..93234ed2e 100644 --- a/app/views/admin/zonefile_settings/edit.haml +++ b/app/views/admin/zonefile_settings/edit.haml @@ -1,5 +1,7 @@ - content_for :actions do = link_to(t(:back), admin_zonefile_settings_path, class: 'btn btn-default') + = link_to(t(:delete), admin_zonefile_setting_path(@zonefile_setting), + method: :delete, data: { confirm: t(:are_you_sure) }, class: 'btn btn-danger') = render 'shared/title', name: t(:edit_zone) = render 'form' diff --git a/config/locales/en.yml b/config/locales/en.yml index bf44f2407..1e72a76b2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -898,3 +898,4 @@ en: a4_records: 'AAAA records' new_zone: 'New zone' edit_zone: 'Edit zone' + there_are_count_domains_in_this_zone: 'There are %{count} domains in this zone'