osem-fcy/app/views/admin/versions/_object_desc_and_link.html.haml
rahul2240 1b226f1ac8 Fix NoMethodError in revision history
Roles get deleted with organization so to show them in revision history previous version of role model is required.That is done here.
closes https://github.com/openSUSE/osem/issues/1937
2018-03-14 23:42:46 +01:00

246 lines
9.8 KiB
Text

- unless version.item_type == 'Role' || version.item_type == 'UsersRole'
- conference = Conference.find_by(id: version.conference_id)
- conference_short_title = conference.try(:short_title) || current_or_last_object_state('Conference', version.conference_id).try(:short_title) || ' '
- case version.item_type
- when 'Organization'
organization
= link_to_organization(version.item_id)
- when 'UsersRole'
- users_role = current_or_last_object_state(version.item_type, version.item_id)
- role = current_or_last_object_state('Role', users_role.role_id)
- role_name = role.try(:name) || PaperTrail::Version.where(item_type: 'Role', item_id: users_role.role_id).last.changeset[:name].second
role
- if role_name == 'organization_admin'
- if Organization.find_by(id: version.conference_id)
-# organization_admin belongs to organization and not conferences
- organization = Organization.find_by(id: version.conference_id)
= link_if_alive version, role_name,
admins_admin_organization_path(organization), organization
- else
(Deleted Organization)
- else
- conference = Conference.find_by(id: version.conference_id)
- conference_short_title = conference.try(:short_title) || current_or_last_object_state('Conference', version.conference_id).try(:short_title) || ' '
= link_if_alive version, role.try(:name), admin_conference_role_path(conference_short_title,role.try(:name) || ' '), conference
= version.event == 'create' ? 'to' : 'from'
user
= link_to_user(users_role.user_id)
- when 'Subscription', 'Registration'
conference
= link_to_conference(version.conference_id)
- when 'Commercial'
- commercial = current_or_last_object_state(version.item_type, version.item_id)
- commercialable = current_or_last_object_state(commercial.commercialable_type, commercial.commercialable_id)
- case commercial.commercialable_type
- when 'Event'
commercial in event
- if commercialable && conference
= link_to commercialable.title,
admin_conference_program_event_path(conference, commercialable.id)
- else
= commercialable.title
= "with ID #{commercialable.id}"
- when 'Venue'
commercial in venue
- if commercialable && conference
= link_to commercialable.name,
edit_admin_conference_venue_path(conference_short_title,
commercialable.id, anchor: 'commercials-content')
- else
= commercialable.name
= "with ID #{commercialable.id}"
- when 'Conference'
commercial in conference
- if commercialable
= link_to commercialable.short_title,
admin_conference_commercials_path(commercialable.short_title)
- else
= commercialable.short_title
= "with ID #{commercialable.id}"
- when 'EventsRegistration', 'Comment', 'Vote', 'Event'
event
- object = current_or_last_object_state(version.item_type, version.item_id)
- event_id = object.try(:event_id) || object.try(:commentable_id) || object.id
= link_to (current_or_last_object_state('Event', event_id).try(:title) || 'deleted event'),
admin_conference_program_event_path(conference_short_title, event_id)
- when 'Target'
target
- target = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, target.to_s, admin_conference_targets_path(conference_short_title), conference
- when 'EventSchedule'
- event_schedule = current_or_last_object_state(version.item_type, version.item_id)
event
= link_to (current_or_last_object_state('Event', event_schedule.event_id).try(:title) || 'deleted'),
admin_conference_program_event_path(conference_short_title, event_schedule.event_id)
in
= link_to "Schedule #{event_schedule.schedule_id}",
admin_conference_schedule_path(conference_short_title, event_schedule.schedule_id)
- when 'Schedule'
= link_if_alive version, "Schedule #{version.item_id}",
admin_conference_schedule_path(conference_short_title, version.item_id),
conference
- when 'Conference'
conference
= link_to_conference(version.item_id)
- when 'RegistrationPeriod'
= link_if_alive version, 'registration period',
admin_conference_registration_period_path(conference_short_title),
conference
- when 'Contact'
= link_if_alive version, 'contact details',
edit_admin_conference_contact_path(conference_short_title),
conference
- when 'Booth'
= 'booth'
- booth = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, booth.title,
admin_conference_booth_path(conference_id: Conference.find(version.conference_id).short_title, id: version.item_id ),
conference
- when 'Program'
= link_if_alive version, 'program',
admin_conference_program_path(conference_short_title),
conference
- when 'Cfp'
cfp for
- cfp = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, cfp.cfp_type,
admin_conference_program_cfp_path(conference_short_title, version.item_id),
conference
- when 'Track'
track
- track = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, track.name,
admin_conference_program_track_path(conference_short_title, track.try(:short_name)),
conference
- when 'EventType'
event type
- event_type = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, event_type.title,
admin_conference_program_event_types_path(conference_short_title),
conference
- when 'Role'
role
- role = current_or_last_object_state(version.item_type, version.item_id)
- role_name = role.try(:name) || PaperTrail::Version.where(item_type: 'Role', item_id: version.item_id).last.changeset[:name].second
- if role_name == 'organization_admin'
- if Organization.find_by(id: version.conference_id)
-# organization_admin belongs to organization and not conferences
- organization = Organization.find_by(id: version.conference_id)
= link_if_alive version, role.name,
admins_admin_organization_path(organization), organization
- else
(Role Deleted)
- else
- conference = Conference.find_by(id: version.conference_id)
- conference_short_title = conference.try(:short_title) || current_or_last_object_state('Conference', version.conference_id).try(:short_title) || ' '
= link_if_alive version, role_name,
admin_conference_role_path(conference_short_title, role_name), conference
- when 'Venue'
venue
- venue = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, venue.name,
admin_conference_venue_path(conference_short_title),
conference
- when 'Lodging'
lodging
- lodging = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, lodging.name,
admin_conference_lodgings_path(conference_short_title),
conference
- when 'Room'
room
- room = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, room.name,
admin_conference_venue_rooms_path(conference_short_title),
conference
- when 'Sponsor'
sponsor
- sponsor = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, sponsor.name,
admin_conference_sponsors_path(conference_short_title),
conference
- when 'SponsorshipLevel'
sponsorship level
- sponsorship_level = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, sponsorship_level.title,
admin_conference_sponsorship_levels_path(conference_short_title),
conference
- when 'Ticket'
ticket
- ticket = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, ticket.title,
admin_conference_ticket_path(conference_short_title, version.item_id),
conference
- when 'Campaign'
campaign
- campaign = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, campaign.name,
admin_conference_campaigns_path(conference_short_title),
conference
- when 'DifficultyLevel'
difficulty level
- difficulty_level = current_or_last_object_state(version.item_type, version.item_id)
= link_if_alive version, difficulty_level.title,admin_conference_program_difficulty_levels_path(conference_short_title), conference
- when 'Splashpage'
= link_if_alive version, 'splashpage',
admin_conference_splashpage_path(conference_short_title),
conference
- when 'EmailSettings'
= link_if_alive version, 'email settings',
admin_conference_emails_path(conference_short_title),
conference
- when 'User'
- if version.event == 'update'
user
= link_to_user(version.item_id)
- unless %w(Conference Subscription Registration User Organization).include?(version.item_type)
- if (version.item_type == 'Role' && role_name == 'organization_admin') || (version.item_type == 'UsersRole' && role_name == 'organization_admin')
in organization
- if Organization.find_by(id: version.conference_id)
-# organization_admin belongs to organization and not conferences
- organization = Organization.find_by(id: version.conference_id)
= link_to_organization(version.conference_id)
- else
(Organization Deleted)
- elsif version.item_type == 'Commercial'
- commercial = current_or_last_object_state(version.item_type, version.item_id)
- commercialable = current_or_last_object_state(commercial.commercialable_type, commercial.commercialable_id)
- unless commercial.commercialable_type == 'Conference'
in conference
= link_to_conference(version.conference_id)
- else
in conference
= link_to_conference(version.conference_id)