From 89295f56428d39c4cb578641f1b5de6fdf9c6937 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Mon, 22 Sep 2014 11:06:07 +0300 Subject: [PATCH] Domain form contacts partial refactor --- app/assets/javascripts/autocomplete.js.coffee | 6 +++--- app/controllers/admin/domains_controller.rb | 2 +- app/models/domain_contact.rb | 6 ++++++ app/views/admin/domains/_form.haml | 9 +++------ .../{_tech_contacts.haml => _contacts.haml} | 4 ++-- app/views/admin/domains/form_partials/_general.haml | 4 ++-- 6 files changed, 17 insertions(+), 14 deletions(-) rename app/views/admin/domains/form_partials/{_tech_contacts.haml => _contacts.haml} (85%) diff --git a/app/assets/javascripts/autocomplete.js.coffee b/app/assets/javascripts/autocomplete.js.coffee index cc9565bcc..de1e1bed0 100644 --- a/app/assets/javascripts/autocomplete.js.coffee +++ b/app/assets/javascripts/autocomplete.js.coffee @@ -9,7 +9,7 @@ class @Autocomplete displayKey: "display_key" source: Autocomplete.constructSourceAdapter(obj.remote) ).on('typeahead:selected', (e, item) -> - parent = $(e.currentTarget).parents('div.has-feedback') + parent = $(e.currentTarget).parents('div.js-typeahead-container') jObj = parent.find(obj.hiddenSelector).val item.id Autocomplete.toggleOkFeedback(jObj) ) @@ -27,8 +27,8 @@ class @Autocomplete source.ttAdapter() @toggleOkFeedback: (jObj) -> - ok = jObj.parents('div.has-feedback').find('.js-typeahead-ok') - remove = jObj.parents('div.has-feedback').find('.js-typeahead-remove') + ok = jObj.parents('div.js-typeahead-container').find('.js-typeahead-ok') + remove = jObj.parents('div.js-typeahead-container').find('.js-typeahead-remove') if jObj.val() ok.removeClass('hidden') diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index 252594a24..58b0b4ebd 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -69,7 +69,7 @@ class Admin::DomainsController < ApplicationController :registrar_id, :owner_contact_id, nameservers_attributes: [:id, :hostname, :ipv4, :ipv6, :_destroy], - domain_contacts_attributes: [:id, :contact_type, :contact_id, :_destroy]) + domain_contacts_attributes: [:id, :contact_type, :contact_id, :typeahead_value, :_destroy]) end def verify_deletion diff --git a/app/models/domain_contact.rb b/app/models/domain_contact.rb index d60d855b0..ecf7564a3 100644 --- a/app/models/domain_contact.rb +++ b/app/models/domain_contact.rb @@ -3,6 +3,8 @@ class DomainContact < ActiveRecord::Base belongs_to :contact belongs_to :domain + attr_accessor :typeahead_value + def epp_code_map { '2302' => [ @@ -28,4 +30,8 @@ class DomainContact < ActiveRecord::Base def tech? contact_type == TECH end + + def typeahead_value + @typeahead_value || contact.try(:name) || nil + end end diff --git a/app/views/admin/domains/_form.haml b/app/views/admin/domains/_form.haml index a20c38ca3..eab4c87ca 100644 --- a/app/views/admin/domains/_form.haml +++ b/app/views/admin/domains/_form.haml @@ -15,9 +15,7 @@ %li %a{"data-toggle" => "tab", :href => "#nameservers-tab", :role => "tab"} nameservers-tab %li - %a{"data-toggle" => "tab", :href => "#tech-contacts-tab", :role => "tab"} tech-contacts-tab - %li - %a{"data-toggle" => "tab", :href => "#admin-contacts", :role => "tab"} admin-contacts-tab + %a{"data-toggle" => "tab", :href => "#contacts-tab", :role => "tab"} contacts-tab %li %a{"data-toggle" => "tab", :href => "#statuses-tab", :role => "tab"} statuses-tab / Tab panes @@ -26,9 +24,8 @@ = render 'admin/domains/form_partials/general', f: f #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 ... + #contacts-tab.tab-pane + = render 'admin/domains/form_partials/contacts', f: f #statuses-tab.tab-pane ... .row .col-md-12.text-right diff --git a/app/views/admin/domains/form_partials/_tech_contacts.haml b/app/views/admin/domains/form_partials/_contacts.haml similarity index 85% rename from app/views/admin/domains/form_partials/_tech_contacts.haml rename to app/views/admin/domains/form_partials/_contacts.haml index 6382c8150..3b9abefdd 100644 --- a/app/views/admin/domains/form_partials/_tech_contacts.haml +++ b/app/views/admin/domains/form_partials/_contacts.haml @@ -14,8 +14,8 @@ = 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.js-typeahead-container - = label_tag :contact - = text_field_tag(:contact, params[:contact], class: 'form-control js-contact-typeahead', placeholder: t('shared.contact_code'), autocomplete: 'off') + = contact_fields.label :typeahead_value + = contact_fields.text_field(:typeahead_value, 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') diff --git a/app/views/admin/domains/form_partials/_general.haml b/app/views/admin/domains/form_partials/_general.haml index aca861c68..0f8e185f5 100644 --- a/app/views/admin/domains/form_partials/_general.haml +++ b/app/views/admin/domains/form_partials/_general.haml @@ -11,13 +11,13 @@ .col-md-6 = f.select :period_unit, options_for_select(['y', 'm', 'd'], @domain.period_unit), {}, {class: 'form-control'} .col-md-6 - .form-group.has-feedback + .form-group.has-feedback.js-typeahead-container = f.label :registrar = text_field_tag(:domain_registrar, params[:registrar], class: 'form-control js-registrar-typeahead', placeholder: t('shared.registrar_name'), autocomplete: 'off') %span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden %span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove = f.hidden_field(:registrar_id, class: 'js-registrar-id') - .form-group.has-feedback + .form-group.has-feedback.js-typeahead-container = f.label :owner_contact = text_field_tag(:domain_owner_contact, params[:domain_owner_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