From fa12a3106381e8377c1ae97b7e89afb1c9deb73b Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 26 Sep 2014 13:00:26 +0300 Subject: [PATCH] Client domain edit cant see server statuses and vice versa --- app/controllers/admin/domains_controller.rb | 10 ++++++-- app/controllers/client/domains_controller.rb | 7 +++--- app/models/domain_status.rb | 24 +++++++++---------- .../domains/form_partials/_statuses.haml | 4 ++-- app/views/client/domains/edit.haml | 2 +- .../domains/form_partials/_statuses.haml | 4 ++-- 6 files changed, 29 insertions(+), 22 deletions(-) diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index bdae28a09..fa3b29918 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -11,7 +11,7 @@ class Admin::DomainsController < AdminController end def edit - @domain.domain_statuses.build if @domain.domain_statuses.empty? + build_associations end def update @@ -39,9 +39,15 @@ class Admin::DomainsController < AdminController ) end + def build_associations + @domain.domain_statuses.build if @domain.domain_statuses.empty? + @server_statuses = @domain.domain_statuses.select(&:server_status?) + @server_statuses << @domain.domain_statuses.build if @server_statuses.empty? + end + def add_prefix_to_statuses domain_params[:domain_statuses_attributes].each do |_k, hash| - hash[:value] = hash[:value].prepend('server') + hash[:value] = hash[:value].prepend('server') if hash[:value].present? end end end diff --git a/app/controllers/client/domains_controller.rb b/app/controllers/client/domains_controller.rb index 1fb462bba..6cf83ec47 100644 --- a/app/controllers/client/domains_controller.rb +++ b/app/controllers/client/domains_controller.rb @@ -39,7 +39,6 @@ class Client::DomainsController < ClientController def update add_prefix_to_statuses - if @domain.update(domain_params) flash[:notice] = I18n.t('shared.domain_updated') redirect_to [:client, @domain] @@ -77,7 +76,7 @@ class Client::DomainsController < ClientController def add_prefix_to_statuses domain_params[:domain_statuses_attributes].each do |_k, hash| - hash[:value] = hash[:value].prepend('client') + hash[:value] = hash[:value].prepend('client') if hash[:value].present? end end @@ -88,7 +87,9 @@ class Client::DomainsController < ClientController def build_associations @domain.nameservers.build if @domain.nameservers.empty? @domain.domain_contacts.build if @domain.domain_contacts.empty? - @domain.domain_statuses.build if @domain.domain_statuses.empty? + + @client_statuses = @domain.domain_statuses.select(&:client_status?) + @client_statuses << @domain.domain_statuses.build if @client_statuses.empty? end def verify_deletion diff --git a/app/models/domain_status.rb b/app/models/domain_status.rb index 139c075bf..49074da7f 100644 --- a/app/models/domain_status.rb +++ b/app/models/domain_status.rb @@ -30,6 +30,8 @@ class DomainStatus < ActiveRecord::Base EXPIRED = 'expired' STATUSES = [CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD, CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED, SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED, INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER, PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED, SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE, DELETE_CANDIDATE, EXPIRED] + CLIENT_STATUSES = [CLIENT_DELETE_PROHIBITED, CLIENT_HOLD, CLIENT_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED] + SERVER_STATUSES = [SERVER_DELETE_PROHIBITED, SERVER_HOLD, SERVER_RENEW_PROHIBITED, SERVER_TRANSFER_PROHIBITED, SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED, SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED] validates :value, uniqueness: { scope: :domain_id } @@ -41,23 +43,21 @@ class DomainStatus < ActiveRecord::Base } end + def server_status? + SERVER_STATUSES.include?(value) + end + + def client_status? + CLIENT_STATUSES.include?(value) + end + class << self def statuses_for_client - ret = [] - STATUSES.each do |x| - next unless x.start_with?('client') - ret << x.sub('client', '') - end - ret + CLIENT_STATUSES.map { |x| x.sub('client', '') } end def statuses_for_admin - ret = [] - STATUSES.each do |x| - next unless x.start_with?('server') - ret << x.sub('server', '') - end - ret + SERVER_STATUSES.map { |x| x.sub('server', '') } end end end diff --git a/app/views/admin/domains/form_partials/_statuses.haml b/app/views/admin/domains/form_partials/_statuses.haml index 4623c85ed..f0fa20a83 100644 --- a/app/views/admin/domains/form_partials/_statuses.haml +++ b/app/views/admin/domains/form_partials/_statuses.haml @@ -1,5 +1,5 @@ #domain_statuses - = f.fields_for :domain_statuses do |status_fields| + = f.fields_for :domain_statuses, @server_statuses do |status_fields| .panel.panel-default .panel-heading.clearfix .pull-left= t('shared.status') @@ -15,7 +15,7 @@ .col-md-6 .form-group = status_fields.label :value - = status_fields.select :value, options_for_select(DomainStatus.statuses_for_admin, status_fields.object.value.sub('server', '')), {include_blank: true}, {class: 'form-control'} + = status_fields.select :value, options_for_select(DomainStatus.statuses_for_admin, status_fields.object.value.try(:sub, 'server', '')), {include_blank: true}, {class: 'form-control'} .col-md-6 .form-group = status_fields.label :description diff --git a/app/views/client/domains/edit.haml b/app/views/client/domains/edit.haml index 17ac0f438..2b5229e1b 100644 --- a/app/views/client/domains/edit.haml +++ b/app/views/client/domains/edit.haml @@ -4,6 +4,6 @@ = "#{t('shared.edit_domain')}" .col-sm-6 %h2.text-right.text-center-xs - = link_to(t('shared.back_to_domain'), [:admin, @domain], class: 'btn btn-default') + = link_to(t('shared.back_to_domain'), [:client, @domain], class: 'btn btn-default') %hr = render 'form' diff --git a/app/views/client/domains/form_partials/_statuses.haml b/app/views/client/domains/form_partials/_statuses.haml index 113dfd3b4..b609986be 100644 --- a/app/views/client/domains/form_partials/_statuses.haml +++ b/app/views/client/domains/form_partials/_statuses.haml @@ -1,5 +1,5 @@ #domain_statuses - = f.fields_for :domain_statuses do |status_fields| + = f.fields_for :domain_statuses, @client_statuses do |status_fields| .panel.panel-default .panel-heading.clearfix .pull-left= t('shared.status') @@ -15,7 +15,7 @@ .col-md-6 .form-group = status_fields.label :value - = status_fields.select :value, options_for_select(DomainStatus.statuses_for_client, status_fields.object.value.sub('client', '')), {include_blank: true}, {class: 'form-control'} + = status_fields.select :value, options_for_select(DomainStatus.statuses_for_client, status_fields.object.value.try(:sub, 'client', '')), {include_blank: true}, {class: 'form-control'} .col-md-6 .form-group = status_fields.label :description