mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Handle cancelation of scheduled events
This commit is contained in:
parent
63750345e7
commit
a071d4497b
5 changed files with 50 additions and 0 deletions
|
|
@ -193,6 +193,14 @@ td.no-padding{
|
|||
color: #D8D8D8 !important;
|
||||
}
|
||||
|
||||
.schedule-label{
|
||||
height: 14px;
|
||||
line-height: 11px;
|
||||
overflow: hidden;
|
||||
display: inline-block;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/* Small devices (tablets, 768px and up) */
|
||||
@media (min-width: 768px) {
|
||||
.room, .event-title{
|
||||
|
|
@ -227,6 +235,11 @@ td.no-padding{
|
|||
td.event{
|
||||
padding: 3px 5px !important;
|
||||
}
|
||||
|
||||
.schedule-label{
|
||||
height: 15px;
|
||||
line-height: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Large devices (large desktops, 1200px and up) */
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ class Event < ActiveRecord::Base
|
|||
validate :max_attendees_no_more_than_room_size
|
||||
|
||||
scope :confirmed, -> { where(state: 'confirmed') }
|
||||
scope :canceled, -> { where(state: 'canceled') }
|
||||
scope :withdrawn, -> { where(state: 'withdrawn') }
|
||||
scope :highlighted, -> { where(is_highlight: true) }
|
||||
|
||||
state_machine initial: :new do
|
||||
|
|
@ -230,6 +232,13 @@ class Event < ActiveRecord::Base
|
|||
self.start_time + self.event_type.length.minutes
|
||||
end
|
||||
|
||||
##
|
||||
# Returns events that are scheduled in the same room and start_time as event
|
||||
#
|
||||
def intersecting_events
|
||||
room.events.where(start_time: start_time).where.not(id: id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
##
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@
|
|||
- span -= 1
|
||||
- else
|
||||
- event = events.find{|e| e.start_time <= start_room_time and e.end_time > start_room_time}
|
||||
|
||||
- if event && (event.state == 'canceled' || event.state == 'withdrawn') && !event.intersecting_events.confirmed.empty?
|
||||
- replacement_event = event.intersecting_events.confirmed.first
|
||||
- event = (replacement_event.start_time <= start_room_time && replacement_event.end_time > start_room_time) ? replacement_event : nil
|
||||
|
||||
- if event
|
||||
/ There is an event, calculate the span and show it
|
||||
- event_span = (event.end_time.to_i - start_room_time.to_i) / 60 / EventType::LENGTH_STEP
|
||||
|
|
|
|||
|
|
@ -4,7 +4,14 @@
|
|||
%a.unstyled-link{href: url_for(conference_program_proposal_path(@conference.short_title, event.id))}
|
||||
%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.intersecting_events.canceled.empty? || !event.intersecting_events.withdrawn.empty?)
|
||||
%span.label.label-info.schedule-label REPLACEMENT
|
||||
|
||||
= event.title
|
||||
|
||||
- if speaker = event.speakers.first
|
||||
= image_tag speaker.gravatar_url, :class => "img-circle pull-right speaker-pic", |
|
||||
:alt => speaker.name, |
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
= link_to "Edit", edit_conference_program_proposal_path(@conference.short_title, @event), :class => "btn btn-mini btn-primary"
|
||||
- if can? :schedule, @conference
|
||||
= link_to "Schedule", schedule_conference_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.intersecting_events.canceled.empty? || !@event.intersecting_events.withdrawn.empty?)
|
||||
%span.label.label-info REPLACEMENT
|
||||
|
||||
.row
|
||||
.col-md-3
|
||||
.speakerinfo
|
||||
|
|
@ -34,6 +40,16 @@
|
|||
.col-md-9
|
||||
.row
|
||||
.col-md-12
|
||||
.lead
|
||||
- if @event.state == 'confirmed' && !@event.intersecting_events.withdrawn.empty?
|
||||
= "Please note that this talk replaces"
|
||||
= link_to @event.intersecting_events.withdrawn.first.title,
|
||||
conference_program_proposal_path(@conference.short_title, @event.intersecting_events.withdrawn.first.id)
|
||||
- elsif @event.state == 'confirmed' && !@event.intersecting_events.canceled.empty?
|
||||
= "Please note that this talk replaces"
|
||||
= link_to @event.intersecting_events.canceled.first.title,
|
||||
conference_program_proposal_path(@conference.short_title, @event.intersecting_events.canceled.first.id)
|
||||
|
||||
- if @event.commercials.empty?
|
||||
%h5.text-warning
|
||||
No video of the event yet, sorry!
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue