From d3e3c9e8b094011b457c3863e6d21092a1cfb021 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 19 Sep 2014 18:17:41 +0300 Subject: [PATCH] Domain form has now domain_contact part --- Gemfile | 2 +- Gemfile.lock | 9 ------ app/controllers/admin/domains_controller.rb | 10 ++++++- app/models/domain.rb | 3 +- app/views/admin/domains/_form.haml | 1 + .../domains/form_partials/_tech_contacts.haml | 28 +++++++++++++++++++ 6 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 app/views/admin/domains/form_partials/_tech_contacts.haml diff --git a/Gemfile b/Gemfile index d09f42fd6..8b8db709c 100644 --- a/Gemfile +++ b/Gemfile @@ -97,7 +97,7 @@ group :development, :test do # For debugging gem 'pry', '~> 0.10.1' - gem 'pry-byebug', '~> 1.3.3' + # gem 'pry-byebug', '~> 1.3.3' # Testing framework gem 'rspec-rails', '~> 3.0.2' diff --git a/Gemfile.lock b/Gemfile.lock index cdb0ee83c..97a3aba09 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -32,9 +32,6 @@ GEM bootstrap-sass (3.2.0.1) sass (~> 3.2) builder (3.2.2) - byebug (2.7.0) - columnize (~> 0.3) - debugger-linecache (~> 1.2) capybara (2.4.1) mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -52,9 +49,7 @@ GEM coffee-script-source execjs coffee-script-source (1.7.0) - columnize (0.8.9) database_cleaner (1.3.0) - debugger-linecache (1.2.0) diff-lcs (1.2.5) epp (1.4.0) hpricot @@ -136,9 +131,6 @@ GEM coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - pry-byebug (1.3.3) - byebug (~> 2.7) - pry (~> 0.10) rack (1.5.2) rack-test (0.6.2) rack (>= 1.0) @@ -272,7 +264,6 @@ DEPENDENCIES phantomjs (~> 1.9.7.1) poltergeist (~> 1.5.1) pry (~> 0.10.1) - pry-byebug (~> 1.3.3) rails (= 4.1.4) ransack (~> 1.3.0) rspec-rails (~> 3.0.2) diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index 06f4419bf..252594a24 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -8,6 +8,7 @@ class Admin::DomainsController < ApplicationController params[:domain_owner_contact] = owner_contact @domain.nameservers.build + @domain.domain_contacts.build end def create @@ -61,7 +62,14 @@ class Admin::DomainsController < ApplicationController end def domain_params - params.require(:domain).permit(:name, :period, :period_unit, :registrar_id, :owner_contact_id, nameservers_attributes: [:id, :hostname, :ipv4, :ipv6, :_destroy]) + params.require(:domain).permit( + :name, + :period, + :period_unit, + :registrar_id, + :owner_contact_id, + nameservers_attributes: [:id, :hostname, :ipv4, :ipv6, :_destroy], + domain_contacts_attributes: [:id, :contact_type, :contact_id, :_destroy]) end def verify_deletion diff --git a/app/models/domain.rb b/app/models/domain.rb index faabe2058..4aefdb5c2 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -4,7 +4,8 @@ class Domain < ActiveRecord::Base belongs_to :registrar belongs_to :owner_contact, class_name: 'Contact' - has_many :domain_contacts, dependent: :delete_all, autosave: true + has_many :domain_contacts, dependent: :delete_all + accepts_nested_attributes_for :domain_contacts, allow_destroy: true has_many :tech_contacts, -> do where(domain_contacts: { contact_type: DomainContact::TECH }) diff --git a/app/views/admin/domains/_form.haml b/app/views/admin/domains/_form.haml index 99a256d40..a20c38ca3 100644 --- a/app/views/admin/domains/_form.haml +++ b/app/views/admin/domains/_form.haml @@ -27,6 +27,7 @@ #nameservers-tab.tab-pane = render 'admin/domains/form_partials/nameservers', f: f #tech-contacts-tab.tab-pane + = render 'admin/domains/form_partials/tech_contacts', f: f #admin-contacts-tab.tab-pane ... #statuses-tab.tab-pane ... .row diff --git a/app/views/admin/domains/form_partials/_tech_contacts.haml b/app/views/admin/domains/form_partials/_tech_contacts.haml new file mode 100644 index 000000000..3136c6324 --- /dev/null +++ b/app/views/admin/domains/form_partials/_tech_contacts.haml @@ -0,0 +1,28 @@ +#domain_contacts + = f.fields_for :domain_contacts do |contact_fields| + .panel.panel-default + .panel-heading.text-right + = link_to(t('shared.add_another'), '#', class: 'btn btn-primary btn-xs add-domain-contact') + = link_to(t('shared.delete'), '#', class: 'btn btn-danger btn-xs destroy') + .panel-body + .errors + = render 'admin/shared/errors', object: contact_fields.object + .row + .col-md-6 + .form-group + = contact_fields.label :contact_type + = contact_fields.select :contact_type, options_for_select(DomainContact::TYPES, contact_fields.object.contact_type), {}, {class: 'form-control'} + .col-md-6 + .form-group.has-feedback + = label_tag :contact + = text_field_tag(:contact, params[:contact], class: 'form-control js-contact-typeahead', placeholder: t('shared.contact_code'), autocomplete: 'off') + %span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden + %span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove + = contact_fields.hidden_field(:contact_id, class: 'js-contact-id') +:javascript + $("#domain_contacts").nestedAttributes({ + bindAddTo: $(".add-domain-contact"), + afterAdd: function(item) { + item.find('.errors').html(''); + } + });