diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index c5d60ced3..ed0ac3c17 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -83,7 +83,7 @@ class Admin::DomainsController < AdminController def domain_params if params[:domain] - params.require(:domain).permit({ statuses: [] }) + params.require(:domain).permit({ statuses: [], status_notes_array: [] }) else { statuses: [] } end diff --git a/app/models/domain.rb b/app/models/domain.rb index dcdcbc120..3f06fe15b 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -681,5 +681,13 @@ class Domain < ActiveRecord::Base def update_whois_record whois_record.blank? ? create_whois_record : whois_record.save end + + def status_notes_array=(notes) + self.status_notes = {} + notes ||= [] + statuses.each_with_index do |status, i| + status_notes[status] = notes[i] + end + end end # rubocop: enable Metrics/ClassLength diff --git a/app/views/admin/domains/edit.haml b/app/views/admin/domains/edit.haml index 4b1c25ca6..36ddb3777 100644 --- a/app/views/admin/domains/edit.haml +++ b/app/views/admin/domains/edit.haml @@ -1,4 +1,5 @@ - content_for :actions do + = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-status') = link_to(t(:back_to_domain), [:admin, @domain], class: 'btn btn-default') = render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" diff --git a/app/views/admin/domains/form_partials/_statuses.haml b/app/views/admin/domains/form_partials/_statuses.haml index 52b9282ef..6b1c67b43 100644 --- a/app/views/admin/domains/form_partials/_statuses.haml +++ b/app/views/admin/domains/form_partials/_statuses.haml @@ -1,29 +1,41 @@ -#domain-statuses - - @server_statuses.each do |x| +#js-statuses + - f.object.statuses.each do |s| + - disabled = !DomainStatus::SERVER_STATUSES.include?(s) + - disabled_style = disabled ? 'display: none' : '' + - delete_style = [DomainStatus::OK].include?(s) ? 'display: none' : '' + .panel.panel-default .panel-heading.clearfix .pull-left= t(:status) .pull-right - = link_to(t(:add_another), '#', class: 'btn btn-primary btn-xs add-domain-status') - = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs destroy-status') + = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs js-destroy-status', style: delete_style) .panel-body .form-group = f.label 'status', class: 'col-md-2 control-label' .col-md-10 - = select_tag 'domain[statuses][]', options_for_select(DomainStatus.statuses_for_admin, x), include_blank: true, class: 'form-control' + .js-select{style: disabled_style} + = select_tag 'domain[statuses][]', + options_for_select(DomainStatus.statuses_for_admin, s), + include_blank: true, class: "form-control" + - if disabled + .disabled-value.js-disabled-value + = s + = hidden_field_tag 'domain[statuses][]', s, readonly: true .form-group - = label_tag t(:description), nil, class: 'col-md-2 control-label' + = label_tag t(:notes), nil, class: 'col-md-2 control-label' .col-md-10 - = text_field_tag :description, nil, class: 'form-control', autocomplete: 'off' - - @other_statuses.each do |x| - = hidden_field_tag 'domain[statuses][]', x, readonly: true -:coffee - $("#domain-statuses").nestedAttributes - bindAddTo: $(".add-domain-status") + - value = f.object.new_record? ? '' : f.object.status_notes[s] + = text_field_tag 'domain[status_notes_array][]', value, class: 'form-control' - $('.destroy-status').on 'click', (e) -> +:coffee + $("#js-statuses").nestedAttributes + bindAddTo: $(".js-add-status") + afterAdd: (el) -> + if el.find('.js-disabled-value') + el.find('.js-disabled-value').remove() + el.find('.js-select').show() + el.find('.js-destroy-status').show() + + $(document).on 'click', '.js-destroy-status', (e) -> e.preventDefault() - if $('.panel').length > 1 - $(this).parents('.panel').remove() - else - $(this).parents('.panel').find('select').val('') + $(this).parents('.panel').remove() diff --git a/app/views/admin/domains/partials/_statuses.haml b/app/views/admin/domains/partials/_statuses.haml index 82480c7a6..0f05f25d8 100644 --- a/app/views/admin/domains/partials/_statuses.haml +++ b/app/views/admin/domains/partials/_statuses.haml @@ -6,7 +6,7 @@ %thead %tr %th{class: 'col-xs-6'}= t(:status) - %th{class: 'col-xs-6'}= t(:description) + %th{class: 'col-xs-6'}= t(:notes) %tbody - @domain.statuses.each do |status| %tr @@ -15,4 +15,4 @@ = link_to status, admin_domain_domain_versions_path(@domain.id) - else = status - %td + %td= @domain.status_notes[status]