diff --git a/app/controllers/client/domain_versions_controller.rb b/app/controllers/client/domain_versions_controller.rb new file mode 100644 index 000000000..0c83330a0 --- /dev/null +++ b/app/controllers/client/domain_versions_controller.rb @@ -0,0 +1,19 @@ +class Client::DomainVersionsController < ClientController + before_action :set_version, only: [:show] + + def index + @versions = DomainVersion.registrar_events(current_user.registrar.id) + @versions.flatten! + end + + def show + @event = params[:event] + @domain = @version.reify(has_multiple: true) unless @event == 'create' + end + + private + + def set_version + @version = DomainVersion.find(params[:id]) + end +end diff --git a/app/models/concerns/user_events.rb b/app/models/concerns/user_events.rb new file mode 100644 index 000000000..992d6cecb --- /dev/null +++ b/app/models/concerns/user_events.rb @@ -0,0 +1,24 @@ +module UserEvents + extend ActiveSupport::Concern + + module ClassMethods + def registrar_events(id) + registrar = Registrar.find(id) + return nil unless registrar + @events = [] + registrar.users.each { |user| @events << user_events(user.id) } + registrar.epp_users.each { |user| @events << user_events(user.id) } + @events + end + + def user_events(id) + where(whodunnit: id.to_s) + end + + def epp_user_events(id) + where(whodunnit: "#{id}-EppUser") + end + + + end +end diff --git a/app/models/domain_version.rb b/app/models/domain_version.rb index 6a9c5f1bf..c4d1f4a40 100644 --- a/app/models/domain_version.rb +++ b/app/models/domain_version.rb @@ -1,4 +1,6 @@ class DomainVersion < PaperTrail::Version + include UserEvents + scope :deleted, -> { where(event: 'destroy') } self.table_name = :domain_versions diff --git a/app/views/client/contact_versions/index.haml b/app/views/client/contact_versions/index.haml index c8dac47b5..2665f245c 100644 --- a/app/views/client/contact_versions/index.haml +++ b/app/views/client/contact_versions/index.haml @@ -18,6 +18,8 @@ = t('shared.whodunnit') %th{class: 'col-xs-2'} = t('shared.created_at') + %th{class: 'col-xs-1'} + = t('shared.contact') %th{class: 'col-xs-1'} = t('shared.details') =# sort_link(@q, 'email', t('shared.email')) @@ -25,8 +27,9 @@ - @versions.each do |x| %tr %td= x.event - %td= x.whodunnit + %td= link_to_whodunnit(x.whodunnit) %td= l(x.created_at, format: :short) + %td= link_to(t('shared.contact'), client_contact_path(x.item_id)) %td= link_to(t('shared.details'), client_contact_version_path(x, event: x.event)) .row .col-md-12 diff --git a/app/views/client/domain_versions/index.haml b/app/views/client/domain_versions/index.haml new file mode 100644 index 000000000..83827ed5f --- /dev/null +++ b/app/views/client/domain_versions/index.haml @@ -0,0 +1,37 @@ +.row + .col-sm-6 + %h2.text-center-xs= t('shared.contacts') + =# render 'admin/contacts/partials/search' + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.create_new_contact'), new_client_domain_path, class: 'btn btn-primary') +%hr +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-2'} + = t('shared.event') + %th{class: 'col-xs-2'} + = t('shared.whodunnit') + %th{class: 'col-xs-2'} + = t('shared.created_at') + %th{class: 'col-xs-1'} + = t('shared.item_id') + =# sort_link(@q, 'email', t('shared.email')) + %th{class: 'col-xs-1'} + = t('shared.details') + + %tbody + - @versions.each do |x| + %tr + %td= x.event + %td= x.whodunnit + %td= l(x.created_at, format: :short) + %td= link_to(t('shared.domain'), client_domain_path(x.item_id)) + %td= link_to(t('shared.details'), client_domain_version_path(x, event: x.event)) +.row + .col-md-12 + =# paginate @contacts diff --git a/app/views/client/domain_versions/show.haml b/app/views/client/domain_versions/show.haml new file mode 100644 index 000000000..3e2ccdfb0 --- /dev/null +++ b/app/views/client/domain_versions/show.haml @@ -0,0 +1,24 @@ +.row + .col-sm-6 + %h2.text-center-xs= t('shared.domains') +%hr +.row + - if @event != 'create' + .col-sm-6= render 'client/domains/partials/general' + - if @event != 'create' && @domain.owner_contact + .col-sm-6= render 'client/domains/partials/owner' + - if @event != 'create' && @domain.tech_contacts + .col-sm-6= render 'client/domains/partials/tech_contacts' + .col-sm-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('shared.version') + .panel-body + %dl.dl-horizontal + %dt= t('shared.whodunnit') + %dd= @version.whodunnit + %dt= t('shared.event') + %dd= @version.event + %dt= t('shared.created_at') + %dd= l(@version.created_at, format: :short) + diff --git a/config/routes.rb b/config/routes.rb index ad20b78f0..ecc89ed61 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -49,6 +49,7 @@ Rails.application.routes.draw do end resources :contact_versions + resources :domain_versions root 'domains#index' end