From e06f51b97e93d5617662611eb252c807ae84c654 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Sun, 31 Jul 2016 16:23:25 +0530 Subject: [PATCH 1/2] Add cancel/replacement labels in All Events Extract replacement/canceled label & notice logic to helpers Join replacement/canceled label and notice and move to top --- app/helpers/application_helper.rb | 18 ++++++++++++++++++ app/views/proposal/show.html.haml | 18 +++--------------- app/views/schedules/_event.html.haml | 5 +++++ app/views/schedules/_schedule_item.html.haml | 5 +---- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8a8bf5ad..d786f4ad 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -503,4 +503,22 @@ module ApplicationHelper 'deleted' end end + + def canceled_replacement_event_label(event, event_schedule, *label_classes) + if event.state == 'canceled' || event.state == 'withdrawn' + content_tag :span, 'CANCELED', class: (['label', 'label-danger'] + label_classes) + elsif event.state == 'confirmed' && event_schedule.present? && (!event_schedule.intersecting_events.canceled.empty? || !event_schedule.intersecting_events.withdrawn.empty?) + content_tag :span, 'REPLACEMENT', class: (['label', 'label-info'] + label_classes) + end + end + + def replacement_event_notice(event, event_schedule) + if event.state == 'confirmed' && event_schedule.present? && (!event_schedule.intersecting_events.withdrawn.empty? || !event_schedule.intersecting_events.canceled.empty?) + replaced_event = (event_schedule.intersecting_events.withdrawn.first || event_schedule.intersecting_events.canceled.first).event + content_tag :span do + concat content_tag :span, 'Please note that this talk replaces ' + concat link_to replaced_event.title, conference_program_proposal_path(@conference.short_title, replaced_event.id) + end + end + end end diff --git a/app/views/proposal/show.html.haml b/app/views/proposal/show.html.haml index bc08c14c..368f22d2 100644 --- a/app/views/proposal/show.html.haml +++ b/app/views/proposal/show.html.haml @@ -15,11 +15,6 @@ - if can? :schedule, @conference = link_to "Schedule", conference_schedule_path(@conference.short_title), :class =>"btn btn-success" - - if @event.state == 'canceled' || @event.state == 'withdrawn' - %span.label.label-danger CANCELED - - elsif @event.state == 'confirmed' && @event_schedule.present? && (!@event_schedule.intersecting_events.canceled.empty? || !@event_schedule.intersecting_events.withdrawn.empty?) - %span.label.label-info REPLACEMENT - .row .col-md-3 .speakerinfo @@ -40,16 +35,9 @@ .col-md-9 .row .col-md-12 - -if @event_schedule.present? - .lead - - if @event.state == 'confirmed' && !@event_schedule.intersecting_events.withdrawn.empty? - = "Please note that this talk replaces" - = link_to @event_schedule.intersecting_events.withdrawn.first.event.title, - conference_program_proposal_path(@conference.short_title, @event_schedule.intersecting_events.withdrawn.first.event.id) - - elsif @event.state == 'confirmed' && !@event_schedule.intersecting_events.canceled.empty? - = "Please note that this talk replaces" - = link_to @event_schedule.intersecting_events.canceled.first.title, - conference_program_proposal_path(@conference.short_title, @event_schedule.intersecting_events.canceled.first.event.id) + .lead + = canceled_replacement_event_label(@event, @event_schedule) + = replacement_event_notice(@event, @event_schedule) - if @event.commercials.empty? %h5.text-warning diff --git a/app/views/schedules/_event.html.haml b/app/views/schedules/_event.html.haml index abd3143d..4145773e 100644 --- a/app/views/schedules/_event.html.haml +++ b/app/views/schedules/_event.html.haml @@ -4,6 +4,11 @@ = image_tag speaker.gravatar_url, :class => "img-circle pull-right all-speaker-pic", | :alt => speaker.name, | :title => speaker.name | + + %p + = canceled_replacement_event_label(event, event_schedule) + = replacement_event_notice(event, event_schedule) + %span.h3 = event.title %br diff --git a/app/views/schedules/_schedule_item.html.haml b/app/views/schedules/_schedule_item.html.haml index 5d3f97c6..ffed1716 100644 --- a/app/views/schedules/_schedule_item.html.haml +++ b/app/views/schedules/_schedule_item.html.haml @@ -5,10 +5,7 @@ %div{ class: "elipsis break-words event-title", | style: "-webkit-line-clamp: #{ event_lines(@rooms) }; height: #{ event_height(@rooms) }px;"} | - - if event.state == 'canceled' || event.state == 'withdrawn' - %span.label.label-danger.schedule-label CANCELED - - elsif event.state == 'confirmed' && (!event_schedule.intersecting_events.canceled.empty? || !event_schedule.intersecting_events.withdrawn.empty?) - %span.label.label-info.schedule-label REPLACEMENT + = canceled_replacement_event_label(event, event_schedule, 'schedule-label') = event.title From e3192a95474f080a450667b51c790b273fed4886 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Mon, 15 Aug 2016 17:17:57 +0530 Subject: [PATCH 2/2] Extract checking if event is replacement to event_schedule model --- app/helpers/application_helper.rb | 6 +++--- app/models/event_schedule.rb | 4 ++++ app/views/proposal/show.html.haml | 2 +- app/views/schedules/_event.html.haml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d786f4ad..e45c16e1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -507,13 +507,13 @@ module ApplicationHelper def canceled_replacement_event_label(event, event_schedule, *label_classes) if event.state == 'canceled' || event.state == 'withdrawn' content_tag :span, 'CANCELED', class: (['label', 'label-danger'] + label_classes) - elsif event.state == 'confirmed' && event_schedule.present? && (!event_schedule.intersecting_events.canceled.empty? || !event_schedule.intersecting_events.withdrawn.empty?) + elsif event_schedule.present? && event_schedule.replacement? content_tag :span, 'REPLACEMENT', class: (['label', 'label-info'] + label_classes) end end - def replacement_event_notice(event, event_schedule) - if event.state == 'confirmed' && event_schedule.present? && (!event_schedule.intersecting_events.withdrawn.empty? || !event_schedule.intersecting_events.canceled.empty?) + def replacement_event_notice(event_schedule) + if event_schedule.present? && event_schedule.replacement? replaced_event = (event_schedule.intersecting_events.withdrawn.first || event_schedule.intersecting_events.canceled.first).event content_tag :span do concat content_tag :span, 'Please note that this talk replaces ' diff --git a/app/models/event_schedule.rb b/app/models/event_schedule.rb index 4f5e4940..52f6ec23 100644 --- a/app/models/event_schedule.rb +++ b/app/models/event_schedule.rb @@ -28,4 +28,8 @@ class EventSchedule < ActiveRecord::Base def intersecting_events room.event_schedules.where(start_time: start_time, schedule: schedule).where.not(id: id) end + + def replacement? + event.state == 'confirmed' && (!intersecting_events.canceled.empty? || !intersecting_events.withdrawn.empty?) + end end diff --git a/app/views/proposal/show.html.haml b/app/views/proposal/show.html.haml index 368f22d2..3b5983e9 100644 --- a/app/views/proposal/show.html.haml +++ b/app/views/proposal/show.html.haml @@ -37,7 +37,7 @@ .col-md-12 .lead = canceled_replacement_event_label(@event, @event_schedule) - = replacement_event_notice(@event, @event_schedule) + = replacement_event_notice(@event_schedule) - if @event.commercials.empty? %h5.text-warning diff --git a/app/views/schedules/_event.html.haml b/app/views/schedules/_event.html.haml index 4145773e..bc671b98 100644 --- a/app/views/schedules/_event.html.haml +++ b/app/views/schedules/_event.html.haml @@ -7,7 +7,7 @@ %p = canceled_replacement_event_label(event, event_schedule) - = replacement_event_notice(event, event_schedule) + = replacement_event_notice(event_schedule) %span.h3 = event.title