From 9c7591adcd052f330cd59e785a53d5fd8d61c7d5 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/proposals/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 440204b3..8237dd95 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -518,4 +518,22 @@ module ApplicationHelper def link_if_alive(version, link_text, link_url) version.item ? link_to(link_text, link_url) : link_text 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/proposals/show.html.haml b/app/views/proposals/show.html.haml index 7953a695..8c3413c5 100644 --- a/app/views/proposals/show.html.haml +++ b/app/views/proposals/show.html.haml @@ -23,11 +23,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 @@ -48,16 +43,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 2c988e59..24aaa960 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 5111d9e9378d5c28f436e8b7ee4318e59a55f395 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/proposals/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 8237dd95..7d898595 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -522,13 +522,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 cb630acd..b83e7c8c 100644 --- a/app/models/event_schedule.rb +++ b/app/models/event_schedule.rb @@ -31,6 +31,10 @@ class EventSchedule < ActiveRecord::Base 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 + private def conference_id diff --git a/app/views/proposals/show.html.haml b/app/views/proposals/show.html.haml index 8c3413c5..432a5dcd 100644 --- a/app/views/proposals/show.html.haml +++ b/app/views/proposals/show.html.haml @@ -45,7 +45,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 24aaa960..49116e42 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