From 302f51a4cb59d97a593038fcbb86fc74ddad7293 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 25 Sep 2014 17:04:16 +0300 Subject: [PATCH] Remove domain editing and adding from admin --- app/controllers/admin/domains_controller.rb | 62 ++----------------- app/controllers/client/domains_controller.rb | 25 +++++++- app/views/admin/domains/_form.haml | 24 +------ .../admin/domains/form_partials/_general.haml | 25 -------- app/views/admin/domains/index.haml | 10 +-- app/views/admin/domains/new.haml | 3 - app/views/admin/domains/show.haml | 3 +- app/views/client/domains/_form.haml | 6 +- .../domains/form_partials/_contacts.haml | 0 .../domains/form_partials/_nameservers.haml | 0 .../domains/form_partials/_statuses.haml | 29 +++++++++ config/locales/en.yml | 1 + 12 files changed, 64 insertions(+), 124 deletions(-) delete mode 100644 app/views/admin/domains/form_partials/_general.haml delete mode 100644 app/views/admin/domains/new.haml rename app/views/{admin => client}/domains/form_partials/_contacts.haml (100%) rename app/views/{admin => client}/domains/form_partials/_nameservers.haml (100%) create mode 100644 app/views/client/domains/form_partials/_statuses.haml diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index b46d49286..2694af651 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -1,27 +1,5 @@ class Admin::DomainsController < AdminController - before_action :set_domain, only: [:show, :edit, :update, :destroy] - before_action :verify_deletion, only: [:destroy] - - def new - owner_contact = Contact.find(params[:owner_contact_id]) if params[:owner_contact_id] - @domain = Domain.new(owner_contact: owner_contact) - params[:domain_owner_contact] = owner_contact - - build_associations - end - - def create - @domain = Domain.new(domain_params) - - if @domain.save - flash[:notice] = I18n.t('shared.domain_added') - redirect_to [:admin, @domain] - else - build_associations - flash.now[:alert] = I18n.t('shared.failed_to_add_domain') - render 'new' - end - end + before_action :set_domain, only: [:show, :edit, :update] def index @q = Domain.search(params[:q]) @@ -33,7 +11,7 @@ class Admin::DomainsController < AdminController end def edit - build_associations + @domain.domain_statuses.build if @domain.domain_statuses.empty? end def update @@ -41,22 +19,12 @@ class Admin::DomainsController < AdminController flash[:notice] = I18n.t('shared.domain_updated') redirect_to [:admin, @domain] else - build_associations - flash[:alert] = I18n.t('shared.failed_to_update_domain') + @domain.domain_statuses.build if @domain.domain_statuses.empty? + flash.now[:alert] = I18n.t('shared.failed_to_update_domain') render 'edit' end end - def destroy - if @domain.destroy - flash[:notice] = I18n.t('shared.domain_deleted') - redirect_to admin_domains_path - else - flash[:alert] = I18n.t('shared.failed_to_delete_domain') - redirect_to [:admin, @domain] - end - end - private def set_domain @@ -65,29 +33,7 @@ class Admin::DomainsController < AdminController def domain_params params.require(:domain).permit( - :name, - :period, - :period_unit, - :registrar_id, - :owner_contact_id, - :owner_contact_typeahead, - :registrar_typeahead, - nameservers_attributes: [:id, :hostname, :ipv4, :ipv6, :_destroy], - domain_contacts_attributes: [:id, :contact_type, :contact_id, :value_typeahead, :_destroy], domain_statuses_attributes: [:id, :value, :description, :_destroy] ) end - - 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? - end - - def verify_deletion - return if @domain.can_be_deleted? - flash[:alert] = I18n.t('shared.domain_status_prohibits_deleting') - redirect_to [:admin, @domain] - end end - diff --git a/app/controllers/client/domains_controller.rb b/app/controllers/client/domains_controller.rb index ab2cc373f..11386fd27 100644 --- a/app/controllers/client/domains_controller.rb +++ b/app/controllers/client/domains_controller.rb @@ -1,5 +1,7 @@ class Client::DomainsController < ClientController - include Shared::CommonDomain + load_and_authorize_resource + before_action :set_domain, only: [:show, :edit, :update, :destroy] + before_action :verify_deletion, only: [:destroy] def index @q = Domain.search(params[:q]) if current_user.admin? @@ -29,6 +31,10 @@ class Client::DomainsController < ClientController end end + def edit + build_associations + end + def update if @domain.update(domain_params) flash[:notice] = I18n.t('shared.domain_updated') @@ -49,10 +55,25 @@ class Client::DomainsController < ClientController :period_unit, :owner_contact_id, :owner_contact_typeahead, - :registrar_typeahead, nameservers_attributes: [:id, :hostname, :ipv4, :ipv6, :_destroy], domain_contacts_attributes: [:id, :contact_type, :contact_id, :value_typeahead, :_destroy], domain_statuses_attributes: [:id, :value, :description, :_destroy] ) end + + def set_domain + @domain = Domain.find(params[:id]) + end + + 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? + end + + def verify_deletion + return if @domain.can_be_deleted? + flash[:alert] = I18n.t('shared.domain_status_prohibits_deleting') + redirect_to [:admin, @domain] + end end diff --git a/app/views/admin/domains/_form.haml b/app/views/admin/domains/_form.haml index b662cea29..62b44bf5c 100644 --- a/app/views/admin/domains/_form.haml +++ b/app/views/admin/domains/_form.haml @@ -4,23 +4,13 @@ %hr .row .col-md-12 - / Nav tabs %ul.nav.nav-tabs{:role => "tablist", id: 'tabs'} - - li_class = @domain.general_tab_valid? ? nil : 'error-tab' - %li.active{class: li_class} - %a{"data-toggle" => "tab", :href => "#general-tab", :role => "tab"}= t('shared.general') - li_class = @domain.statuses_tab_valid? ? nil : 'error-tab' %li{class: li_class} %a{"data-toggle" => "tab", :href => "#statuses-tab", :role => "tab"}= t('shared.statuses') - / Tab panes + / Tab panes .tab-content{style:'margin-top: 20px;'} #general-tab.tab-pane.active - = render 'admin/domains/form_partials/general', f: f - %hr - = render 'admin/domains/form_partials/contacts', f: f - %hr - = render 'admin/domains/form_partials/nameservers', f: f - #statuses-tab.tab-pane = render 'admin/domains/form_partials/statuses', f: f .row .col-md-12.text-right @@ -30,15 +20,3 @@ $(function() { $('#tabs a:first').tab('show') }) - - $("#domain_contacts").nestedAttributes({ - bindAddTo: $(".add-domain-contact"), - afterAdd: function(item) { - item.find('.errors').html(''); - item.find('.js-contact-id').val('') - Autocomplete.bindAdminContactSearch(); - } - }); - - Autocomplete.bindAdminContactSearch() - Autocomplete.bindAdminRegistrarSearch() diff --git a/app/views/admin/domains/form_partials/_general.haml b/app/views/admin/domains/form_partials/_general.haml deleted file mode 100644 index 0407e51a8..000000000 --- a/app/views/admin/domains/form_partials/_general.haml +++ /dev/null @@ -1,25 +0,0 @@ -.row - .col-md-6 - .form-group - = f.label :name - = f.text_field(:name, class: 'form-control') - .form-group - = f.label :period - .row - .col-md-6 - = f.text_field(:period, class: 'form-control') - .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.js-typeahead-container - = f.label :registrar_typeahead - = f.text_field(:registrar_typeahead, 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.js-typeahead-container - = f.label :owner_contact_typeahead - = f.text_field(:owner_contact_typeahead, 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 - = f.hidden_field(:owner_contact_id, class: 'js-contact-id') diff --git a/app/views/admin/domains/index.haml b/app/views/admin/domains/index.haml index d2991e252..c5acd3f9d 100644 --- a/app/views/admin/domains/index.haml +++ b/app/views/admin/domains/index.haml @@ -1,9 +1,6 @@ .row - .col-sm-6 + .col-sm-12 %h2.text-center-xs= t('shared.domains') - .col-sm-6 - %h2.text-right.text-center-xs - = link_to(t('shared.add'), new_admin_domain_path, class: 'btn btn-primary') %hr .row .col-md-12 @@ -17,10 +14,8 @@ = sort_link(@q, 'registrar_name', t('shared.registrar')) %th{class: 'col-xs-2'} = sort_link(@q, 'owner_contact_international_address_name', t('shared.owner')) - %th{class: 'col-xs-1'} + %th{class: 'col-xs-2'} = sort_link(@q, 'valid_to', t('shared.valid_to')) - %th{class: 'col-xs-1'} - = t('shared.action') %tbody - @domains.each do |x| %tr @@ -28,7 +23,6 @@ %td= link_to(x.registrar, root_path) if x.registrar %td= link_to(x.owner_contact, [:admin, x.owner_contact]) %td= l(x.valid_to, format: :short) - %td= link_to(t('shared.edit'), edit_admin_domain_path(x), class: 'btn btn-primary btn-xs') .row .col-md-12 = paginate @domains diff --git a/app/views/admin/domains/new.haml b/app/views/admin/domains/new.haml deleted file mode 100644 index d5313c958..000000000 --- a/app/views/admin/domains/new.haml +++ /dev/null @@ -1,3 +0,0 @@ -%h2= t('shared.new_domain') -%hr -= render 'form' diff --git a/app/views/admin/domains/show.haml b/app/views/admin/domains/show.haml index 71552c376..7e6005db1 100644 --- a/app/views/admin/domains/show.haml +++ b/app/views/admin/domains/show.haml @@ -4,8 +4,7 @@ = "#{t('shared.domain_details')}" .col-sm-6 %h2.text-right.text-center-xs - = link_to(t('shared.edit'), edit_admin_domain_path(@domain), class: 'btn btn-primary') - = link_to(t('shared.delete'), admin_domain_path(@domain), method: :delete, data: { confirm: t('shared.are_you_sure') }, class: 'btn btn-danger') + = link_to(t('shared.edit_statuses'), edit_admin_domain_path(@domain), class: 'btn btn-primary') %hr .row diff --git a/app/views/client/domains/_form.haml b/app/views/client/domains/_form.haml index 7228256f4..ebc3ad14b 100644 --- a/app/views/client/domains/_form.haml +++ b/app/views/client/domains/_form.haml @@ -17,11 +17,11 @@ #general-tab.tab-pane.active = render 'client/domains/form_partials/general', f: f %hr - = render 'admin/domains/form_partials/contacts', f: f + = render 'client/domains/form_partials/contacts', f: f %hr - = render 'admin/domains/form_partials/nameservers', f: f + = render 'client/domains/form_partials/nameservers', f: f #statuses-tab.tab-pane - = render 'admin/domains/form_partials/statuses', f: f + = render 'client/domains/form_partials/statuses', f: f .row .col-md-12.text-right = button_tag(t('shared.save'), class: 'btn btn-primary') diff --git a/app/views/admin/domains/form_partials/_contacts.haml b/app/views/client/domains/form_partials/_contacts.haml similarity index 100% rename from app/views/admin/domains/form_partials/_contacts.haml rename to app/views/client/domains/form_partials/_contacts.haml diff --git a/app/views/admin/domains/form_partials/_nameservers.haml b/app/views/client/domains/form_partials/_nameservers.haml similarity index 100% rename from app/views/admin/domains/form_partials/_nameservers.haml rename to app/views/client/domains/form_partials/_nameservers.haml diff --git a/app/views/client/domains/form_partials/_statuses.haml b/app/views/client/domains/form_partials/_statuses.haml new file mode 100644 index 000000000..ae8eb2f44 --- /dev/null +++ b/app/views/client/domains/form_partials/_statuses.haml @@ -0,0 +1,29 @@ +#domain_statuses + = f.fields_for :domain_statuses do |status_fields| + .panel.panel-default + .panel-heading.clearfix + .pull-left= t('shared.status') + .pull-right + = link_to(t('shared.add_another'), '#', class: 'btn btn-primary btn-xs add-domain-status') + = link_to(t('shared.delete'), '#', class: 'btn btn-danger btn-xs destroy') + .panel-body + .errors + = render 'shared/errors', object: status_fields.object + - if status_fields.object.errors.any? + %hr + .row + .col-md-6 + .form-group + = status_fields.label :value + = status_fields.select :value, options_for_select(DomainStatus::STATUSES, status_fields.object.value), {include_blank: true}, {class: 'form-control'} + .col-md-6 + .form-group + = status_fields.label :description + = status_fields.text_field :description, class: 'form-control', autocomplete: 'off' +:javascript + $("#domain_statuses").nestedAttributes({ + bindAddTo: $(".add-domain-status"), + afterAdd: function(item) { + item.find('.errors').html(''); + } + }); diff --git a/config/locales/en.yml b/config/locales/en.yml index 13b432adc..3dc83b1ad 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -298,3 +298,4 @@ en: domain_list: 'Domain list' register_new_domain: 'Register new domain' welcome: 'Welcome!' + edit_statuses: 'Edit statuses'