Implement track scheduling

Add track association to schedule
Show schedules in admin sidebar to track organizers
Allow track organizers to manage the schedules of their tracks
Don't allow self-organized track events to be dragged or unscheduled in
a conference schedule
Make scheduled events of self-organized tracks appear semitransparent in
conference schedules
Make the rooms of confirmed self_organized tracks appear semitransparent
and don't allow events to be scheduled to it in the conference schedules
during the dates of its track
Create admin/SchedulesController#new action
Add a button in admin/Schedules#index to create schedules for tracks
Add self_organized scope to Track
Modify Schedules#show to handle track schedules and show a unified
schedule
Allow track organizers to create new schedules for their tracks
Correctly identify scheduled and unscheduled events in Schedules#events
Fix Event#room and Event#time for when the event is scheduled in a track
schedule
Modify Program#selected_event_schedules to include the event_schedules
of selected track schedules
Modify Track#revoke_role_and_cleanup to destroy the track's schedules
and revert its events' state to new
Add tabs for conference and track schedules in admin/Schedules#index
Add button to Create/Show a tracks schedule in Tracks#index and #show
Fix concurrent_events in application_helper because of changes in
Program#selected_event_schedules
Do not take into account cfp_active in Event#valid_track
Modify EventsController#get_tracks accordingly
Enforce cfp_active of track to be enabled for proposals in
ProposalsController#create and #update
Add support for multiple schedules per track
Add selected_schedule_id to Track
Load EventSchedules of selected track schedules for conference schedules
in admin/SchedulesController#show
Modify SchedulesController#show to take into account only the selected
track schedules
Create Event#selected_schedule_id and use it in Event#scheduled? and
Event#time
Validate that an EventSchedule for an event of a self-organized track
belongs to one of the track's schedules
Add 'Manage' button in Tracks#index, #show that sends you to the admin
side of things
Add admin/TracksController#update_selected_schedule to update the
selected_schedule_id of tracks
This commit is contained in:
AEtherC0r3 2017-08-09 18:12:20 +03:00 committed by Stella Rouzi
parent af7efdb6fe
commit 7eea930269
37 changed files with 443 additions and 118 deletions

View file

@ -4,42 +4,85 @@
%h1 Schedules
%p.text-muted
The schedules for your conference
.row
.col-md-12
%table.table.table-hover#event_types
%thead
%th Schedule
%th Selected
%th Actions
%tbody
- @schedules.each do |schedule|
%tr
%td
Schedule
= schedule.id
%td
= selected_scheduled?(schedule)
%td
.btn-group{role: "group"}
= link_to 'Show', admin_conference_schedule_path(@conference.short_title, schedule.id),
method: :get, class: 'btn btn-primary'
= link_to 'Delete', admin_conference_schedule_path(@conference.short_title, schedule.id),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete Schedule #{schedule.id}?" }
.row
.col-md-12
- if @venue.try(:rooms).present?
.text-right
= link_to 'Add Schedule', admin_conference_schedules_path(@conference.short_title),
method: :post, class: 'btn btn-primary'
- elsif @venue
.h3
No Rooms!
%small
= link_to 'Create rooms', admin_conference_venue_rooms_path
before creating the schedule.
- else
.h3
No Venue!
%small
= link_to 'Create a venue with rooms', new_admin_conference_venue_path
before creating the schedule.
.tabbable
%ul.nav.nav-tabs
%li.active
= link_to 'Conference schedules', '#conference', 'data-toggle' => 'tab'
%li
= link_to 'Track schedules', '#tracks', 'data-toggle' => 'tab'
.tab-content
.tab-pane.active#conference
.row
.col-md-12
%table.table.table-hover
%thead
%th Schedule
%th Selected
%th Actions
%tbody
- @schedules.where(track: nil).each do |schedule|
%tr
%td
Schedule
= schedule.id
%td
= selected_scheduled?(schedule)
%td
.btn-group{role: "group"}
- if can? :show, schedule
= link_to 'Show', admin_conference_schedule_path(@conference.short_title, schedule),
method: :get, class: 'btn btn-primary'
- if can? :destroy, schedule
= link_to 'Delete', admin_conference_schedule_path(@conference.short_title, schedule),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete Schedule #{schedule.id}?" }
.row
.col-md-12
- if @venue.try(:rooms).present?
.text-right
- if can? :create, @program.schedules.new
= link_to 'Add Schedule', admin_conference_schedules_path(@conference.short_title),
method: :post, class: 'btn btn-primary'
- elsif @venue
.h3
No Rooms!
%small
= link_to 'Create rooms', admin_conference_venue_rooms_path
before creating the schedule.
- else
.h3
No Venue!
%small
= link_to 'Create a venue with rooms', new_admin_conference_venue_path
before creating the schedule.
.tab-pane#tracks
.row
.col-md-12
%table.table.table-hover
%thead
%th Schedule
%th Track
%th Selected
%th Actions
%tbody
- @schedules.where.not(track: nil).each do |schedule|
%tr
%td
Schedule
= schedule.id
%td
- track = schedule.track
= link_to track.name, admin_conference_program_track_path(@conference.short_title, track)
%td
= schedule == schedule.track.selected_schedule ? 'Yes' : 'No'
%td
.btn-group{role: "group"}
- if can? :show, schedule
= link_to 'Show', admin_conference_schedule_path(@conference.short_title, schedule), class: 'btn btn-primary'
- if can? :destroy, schedule
= link_to 'Delete', admin_conference_schedule_path(@conference.short_title, schedule),
method: :delete, class: 'btn btn-danger', data: { confirm: "Do you really want to delete Schedule #{schedule.id}?" }
.row
.col-md-12
.text-right
- if can? :new, @program.schedules.build(track: @program.tracks.new)
= link_to 'Add Track Schedule', new_admin_conference_schedule_path(@conference.short_title), class: 'btn btn-primary'