Merge pull request #1019 from nishanthvijayan/changelog
Changelog/Revision History page
This commit is contained in:
commit
86ba2d005e
51 changed files with 1154 additions and 26 deletions
28
app/views/admin/versions/_object_changes.html.haml
Normal file
28
app/views/admin/versions/_object_changes.html.haml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
.col-md-10.col-md-offset-1.changeset{id: "changeset-#{version.id}"}
|
||||
%br
|
||||
%br
|
||||
%table.table.table-bordered.table-hover
|
||||
%thead
|
||||
%tr
|
||||
%th Updated Attribute
|
||||
- if version.event != 'create'
|
||||
%th Previous Value
|
||||
- if version.event != 'destroy'
|
||||
%th New Value
|
||||
- if can? :revert_attribute, version
|
||||
%th Action
|
||||
%tbody
|
||||
- if version.event!= 'destroy'
|
||||
- version.changeset.reject{ |_, values| values[0].blank? && values[1].blank? }.each do |attribute, values|
|
||||
%tr
|
||||
%td= attribute
|
||||
- if version.event != 'create'
|
||||
%td= values[0].blank? ? '-' : values[0]
|
||||
%td= values[1].blank? ? '-' : values[1]
|
||||
- if can? :revert_attribute, version
|
||||
%td= link_to 'Revert', admin_revision_history_revert_attribute_path(id: version.id, attribute: attribute), class: 'btn btn-sm btn-primary', data: { confirm: "Are you sure you want to revert #{attribute}?" }
|
||||
- else
|
||||
- version.reify.attributes.each do |attribute, value|
|
||||
%tr
|
||||
%td= attribute
|
||||
%td= value.blank? ? '-' : value
|
||||
158
app/views/admin/versions/_object_desc_and_link.html.haml
Normal file
158
app/views/admin/versions/_object_desc_and_link.html.haml
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
- if version.item_type == 'UsersRole'
|
||||
- users_role = get_version_object(version)
|
||||
= 'role'
|
||||
= link_to users_role.role.name, admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: users_role.role.name)
|
||||
= version.event == 'create' ? 'to' : 'from'
|
||||
= 'user'
|
||||
= link_to users_role.user.name, admin_user_path(id: users_role.user.id)
|
||||
|
||||
- elsif version.item_type == 'Subscription' || version.item_type == 'Registration'
|
||||
= 'conference'
|
||||
= link_to Conference.find(version.conference_id).title,
|
||||
admin_conference_registrations_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- elsif version.item_type == 'Commercial'
|
||||
- commercial_last_version = get_version_object(PaperTrail::Version.where(item_type: version.item_type, item_id: version.item_id).last)
|
||||
- commercialable_last_version = get_version_object(PaperTrail::Version.where(item_type: commercial_last_version.commercialable_type,
|
||||
item_id: commercial_last_version.commercialable_id).last)
|
||||
|
||||
- case commercial_last_version.commercialable_type
|
||||
- when 'Event'
|
||||
= link_to 'commercial',
|
||||
edit_admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title,
|
||||
id: commercialable_last_version.id, anchor: 'commercials-content')
|
||||
= "in event #{commercialable_last_version.title}"
|
||||
|
||||
- when 'Venue'
|
||||
- if Venue.find_by(id: commercialable_last_version.id)
|
||||
= link_to 'commercial',
|
||||
edit_admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title,
|
||||
id: commercialable_last_version.id, anchor: 'commercials-content')
|
||||
- else
|
||||
= 'commercial'
|
||||
= "in venue #{commercialable_last_version.name}"
|
||||
|
||||
- when 'Conference'
|
||||
= link_to 'commercial',
|
||||
admin_conference_commercials_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- elsif %w(EventsRegistration Comment Vote).include?(version.item_type)
|
||||
= 'event'
|
||||
- event_id = get_version_object(version).try(:event_id) || get_version_object(version).try(:commentable_id)
|
||||
= link_to Event.find(event_id).title,
|
||||
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_id)
|
||||
|
||||
- elsif version.item_type =='Target'
|
||||
= 'target'
|
||||
- if version.item
|
||||
= link_to Target.find(version.item_id).to_s,
|
||||
admin_conference_targets_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
- else
|
||||
= PaperTrail::Version.where(item_type: 'Target', item_id: version.item_id).last.reify.to_s
|
||||
|
||||
- elsif version.item
|
||||
- case version.item_type
|
||||
- when 'Conference'
|
||||
= 'conference'
|
||||
= link_to Conference.find(version.conference_id).title,
|
||||
edit_admin_conference_path(id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'RegistrationPeriod'
|
||||
= link_to 'registration period',
|
||||
admin_conference_registration_period_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Contact'
|
||||
= link_to 'contact details',
|
||||
edit_admin_conference_contact_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Program'
|
||||
= link_to 'program',
|
||||
admin_conference_program_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Cfp'
|
||||
= link_to 'cfp',
|
||||
admin_conference_program_cfp_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Track'
|
||||
= 'track'
|
||||
= link_to Track.find(version.item_id).name,
|
||||
admin_conference_program_track_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
|
||||
|
||||
- when 'Event'
|
||||
= 'event'
|
||||
= link_to Event.find(version.item_id).title,
|
||||
admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
|
||||
|
||||
- when 'EventType'
|
||||
= 'event type'
|
||||
= link_to EventType.find(version.item_id).title,
|
||||
admin_conference_program_event_types_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Role'
|
||||
= 'role'
|
||||
= link_to Role.find(version.item_id).name,
|
||||
admin_conference_role_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item.name)
|
||||
|
||||
- when 'Venue'
|
||||
= 'venue'
|
||||
= link_to Venue.find(version.item_id).name,
|
||||
admin_conference_venue_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Lodging'
|
||||
= 'lodging'
|
||||
= link_to Lodging.find(version.item_id).name,
|
||||
admin_conference_lodgings_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Room'
|
||||
= 'room'
|
||||
= link_to Room.find(version.item_id).name,
|
||||
admin_conference_venue_rooms_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Sponsor'
|
||||
= 'sponsor'
|
||||
= link_to Sponsor.find(version.item_id).name,
|
||||
admin_conference_sponsors_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'SponsorshipLevel'
|
||||
= 'sponsorship level'
|
||||
= link_to SponsorshipLevel.find(version.item_id).title,
|
||||
admin_conference_sponsorship_levels_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'Ticket'
|
||||
= 'ticket'
|
||||
= link_to Ticket.find(version.item_id).title,
|
||||
admin_conference_ticket_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
|
||||
|
||||
- when 'Campaign'
|
||||
= 'campaign'
|
||||
= link_to Campaign.find(version.item_id).name,
|
||||
admin_conference_campaigns_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'DifficultyLevel'
|
||||
= 'difficulty level'
|
||||
= link_to DifficultyLevel.find(version.item_id).title,
|
||||
admin_conference_program_difficulty_level_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id)
|
||||
|
||||
- when 'Splashpage'
|
||||
= link_to 'splashpage',
|
||||
admin_conference_splashpage_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'EmailSettings'
|
||||
= link_to 'email settings',
|
||||
admin_conference_emails_path(conference_id: Conference.find(version.conference_id).short_title)
|
||||
|
||||
- when 'User'
|
||||
- if version.event == 'update'
|
||||
= 'user'
|
||||
= link_to User.find(version.item_id).name, admin_user_path(id: version.item_id)
|
||||
|
||||
- else
|
||||
= version.item_type.underscore.tr('_', ' ')
|
||||
/ The last deleted version's name/title is used to describe all the changes in object
|
||||
- last_deleted_version = PaperTrail::Version.where(item_type: version.item_type, item_id: version.item_id).last.reify
|
||||
= last_deleted_version.try(:title) || last_deleted_version.try(:name)
|
||||
|
||||
- unless %w(Conference Subscription Registration User).include?(version.item_type)
|
||||
= "in conference"
|
||||
= link_to Conference.find(version.conference_id).short_title,
|
||||
edit_admin_conference_path(id: Conference.find(version.conference_id).short_title)
|
||||
77
app/views/admin/versions/index.html.haml
Normal file
77
app/views/admin/versions/index.html.haml
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
.row
|
||||
.col-md-12
|
||||
.page-header
|
||||
%h1 Revision History
|
||||
%p.text-muted
|
||||
Log of changes made to conferences and associated resources
|
||||
|
||||
%table.table.table-striped.table-bordered.table-hover#versionstable
|
||||
%thead
|
||||
%td ID
|
||||
%td Description
|
||||
%td Actions
|
||||
%tbody
|
||||
- @versions.each do |version|
|
||||
%tr
|
||||
%td.col-md-1
|
||||
= version.id
|
||||
%td.col-md-9
|
||||
%p
|
||||
= change_creator_link(version.whodunnit) unless version.item_type == 'User'
|
||||
|
||||
- case version.item_type
|
||||
- when 'Event'
|
||||
= event_change_description(version)
|
||||
|
||||
-when 'UsersRole'
|
||||
= users_role_change_description(version)
|
||||
|
||||
- when 'Subscription'
|
||||
= subscription_change_description(version)
|
||||
|
||||
- when 'Registration', 'EventsRegistration'
|
||||
= registration_change_description(version)
|
||||
|
||||
- when 'Comment'
|
||||
= comment_change_description(version)
|
||||
|
||||
- when 'Vote'
|
||||
= vote_change_description(version)
|
||||
|
||||
- when 'User'
|
||||
= user_change_description(version)
|
||||
|
||||
- else
|
||||
- if version.event == 'create'
|
||||
= 'created new'
|
||||
- elsif version.event == 'update'
|
||||
= "updated #{updated_attributes(version)} of"
|
||||
- else
|
||||
= 'deleted'
|
||||
|
||||
= render partial: 'object_desc_and_link', locals: { version: version }
|
||||
|
||||
%small.text-muted
|
||||
= distance_of_time_in_words(Time.now,version.created_at) + ' ago'
|
||||
%br
|
||||
= "(#{version.created_at.strftime('%B %-d, %Y %H:%M')})"
|
||||
|
||||
%br
|
||||
= render partial: 'object_changes', locals: { version: version }
|
||||
|
||||
%td.col-md-2
|
||||
.btn-group{role: 'group'}
|
||||
%a.btn.btn-success.btn-sm.show-changeset{id: version.id} View Changes
|
||||
- if can? :revert_object, version
|
||||
%button.btn.btn-default.dropdown-toggle.btn-sm.btn-primary{'data-toggle' => 'dropdown', type: 'button'}
|
||||
Revert
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to 'All Changes', admin_revision_history_revert_object_path(id: version.id), data: { confirm: 'Are you sure you want to revert this change?' }
|
||||
|
||||
- if can? :revert_attribute, version
|
||||
%li.divider{role: 'separator'}
|
||||
- version.changeset.reject{ |_, values| values[0].blank? && values[1].blank? }.each do |attribute, values|
|
||||
%li= link_to attribute, admin_revision_history_revert_attribute_path(id: version.id, attribute: attribute), data: { confirm: "Are you sure you want to revert #{attribute}?" }
|
||||
- else
|
||||
%button.btn.btn-sm.btn-primary.disabled Revert
|
||||
Loading…
Add table
Add a link
Reference in a new issue