SchedulesController introduced

The actions #schedule and #events were moved from conference controller to the new controller
This commit is contained in:
Ana 2016-07-29 22:02:01 +02:00
parent b037a5eb7c
commit 71dab6b79c
18 changed files with 87 additions and 69 deletions

View file

@ -11,41 +11,6 @@ class ConferenceController < ApplicationController
def show; end
def schedule
@rooms = @conference.venue.rooms if @conference.venue
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule.id).any?
redirect_to events_conference_path(@conference.short_title)
end
@events = @conference.program.events
schedules = @program.selected_event_schedules
@events_xml = schedules.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if schedules
@dates = @conference.start_date..@conference.end_date
@step_minutes = EventType::LENGTH_STEP.minutes
@conf_start = 9
conf_end = 20
@conf_period = conf_end - @conf_start
# the schedule takes you to today if it is a date of the schedule
@current_day = @conference.current_conference_day
@day = @current_day.present? ? @current_day : @dates.first
return unless @current_day
# the schedule takes you to the current time if it is beetween the start and the end time.
@hour_column = @conference.hours_from_start_time(@conf_start, conf_end)
end
def events
@dates = @conference.start_date..@conference.end_date
@events_schedules = @program.selected_event_schedules
@events_schedules = [] unless @events_schedules
@unscheduled_events = @program.events.unscheduled(@program.selected_schedule.id)
day = @conference.current_conference_day
@tag = day.strftime('%Y-%m-%d') if day
end
private
def respond_to_options

View file

@ -0,0 +1,48 @@
class SchedulesController < ApplicationController
protect_from_forgery with: :null_session
before_action :respond_to_options
load_and_authorize_resource :conference, find_by: :short_title
load_resource :program, through: :conference, singleton: true, except: :index
def show
@rooms = @conference.venue.rooms if @conference.venue
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule.id).any?
redirect_to events_conference_schedule_path(@conference.short_title)
end
schedules = @program.selected_event_schedules
@events_xml = schedules.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if schedules
@dates = @conference.start_date..@conference.end_date
@step_minutes = EventType::LENGTH_STEP.minutes
@conf_start = 9
conf_end = 20
@conf_period = conf_end - @conf_start
# the schedule takes you to today if it is a date of the schedule
@current_day = @conference.current_conference_day
@day = @current_day.present? ? @current_day : @dates.first
return unless @current_day
# the schedule takes you to the current time if it is beetween the start and the end time.
@hour_column = @conference.hours_from_start_time(@conf_start, conf_end)
end
def events
@dates = @conference.start_date..@conference.end_date
@events_schedules = @program.selected_event_schedules
@events_schedules = [] unless @events_schedules
@unscheduled_events = @program.events.unscheduled(@program.selected_schedule.id)
day = @conference.current_conference_day
@tag = day.strftime('%Y-%m-%d') if day
end
private
def respond_to_options
respond_to do |format|
format.html { head :ok }
end if request.options?
end
end

View file

@ -13,7 +13,7 @@ class EmailSettings < ActiveRecord::Base
'conference_splash_link' => Rails.application.routes.url_helpers.conference_url(
conference.short_title, host: (ENV['OSEM_HOSTNAME'] || 'localhost:3000')),
'schedule_link' => Rails.application.routes.url_helpers.schedule_conference_url(
'schedule_link' => Rails.application.routes.url_helpers.conference_schedule_url(
conference.short_title, host: (ENV['OSEM_HOSTNAME'] || 'localhost:3000'))
}

View file

@ -4,7 +4,7 @@
%h1 Commercials
%p.text-muted
Conference commercials will be displayed on the events in the
= link_to "schedule,", schedule_conference_path(@conference.short_title)
= link_to "schedule,", conference_schedule_path(@conference.short_title)
if the event speaker didn't add an event commercial.
- if can? :create, @conference.commercials.new
.row

View file

@ -22,7 +22,7 @@
- if conference.splashpage && conference.splashpage.public
= link_to "View Conference", conference_path(conference.short_title), :class =>"btn btn-default"
- if conference.program and conference.program.schedule_public
= link_to "Schedule", schedule_conference_path(conference.short_title), :class =>"btn btn-default"
= link_to "Schedule", conference_schedule_path(conference.short_title), :class =>"btn btn-default"
- if conference.registration_open?
- if conference.user_registered?(current_user)
= link_to "My Registration", conference_conference_registration_path(conference.short_title), :class =>"btn btn-default"

View file

@ -22,7 +22,7 @@
.row
.col-md-12
%p.cta-button.text-center
= link_to(schedule_conference_path(@conference.short_title), class: 'btn btn-default btn-lg') do
= link_to(conference_schedule_path(@conference.short_title), class: 'btn btn-default btn-lg') do
Full Schedule

View file

@ -13,7 +13,7 @@
- if can? :edit, @event
= 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"
= 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

View file

@ -2,6 +2,6 @@
/ Nav tabs
%ul.nav.nav-tabs{ role: "tablist" }
%li{ class: "schedule #{ 'active' if active == 'schedule' }", role: "presentation" }
= link_to('Schedule', schedule_conference_path(@conference.short_title))
= link_to('Schedule', conference_schedule_path(@conference.short_title))
%li{ class: "program #{ 'active' if active == 'program' }", role: "presentation" }
= link_to('All events', events_conference_path(@conference.short_title))
= link_to('All events', events_conference_schedule_path(@conference.short_title))

View file

@ -112,10 +112,10 @@ Osem::Application.routes.draw do
resources :tickets, only: [:index]
resources :ticket_purchases, only: [:create, :destroy]
resource :subscriptions, only: [:create, :destroy]
member do
get :schedule
get :events
resource :schedule, only: [:show] do
member do
get :events
end
end
end

View file

@ -26,29 +26,6 @@ describe ConferenceController do
end
end
describe 'GET #schedule' do
context 'XML' do
before :each do
conference.program.schedule_public = true
conference.program.save!
create(:event_scheduled, program: conference.program)
create(:event_scheduled, program: conference.program)
get :schedule, id: conference.short_title, format: :xml
end
it 'assigns variables' do
expect(assigns(:conference)).to eq conference
expect(assigns(:events_xml)).to eq conference.selected_event_schedules.map(&:event)
.group_by{ |event| event.scheduled_start_time.to_date }
end
it 'renders successfully' do
expect(response).to be_success
end
end
end
describe 'OPTIONS #index' do
it 'Response code is 200' do
process :index, 'OPTIONS'

View file

@ -0,0 +1,28 @@
require 'spec_helper'
describe SchedulesController do
let(:conference) { create(:conference, splashpage: create(:splashpage, public: true), venue: create(:venue)) }
describe 'GET #show' do
context 'XML' do
before :each do
conference.program.schedule_public = true
conference.program.save!
create(:event_scheduled, program: conference.program)
create(:event_scheduled, program: conference.program)
get :show, conference_id: conference.short_title, format: :xml
end
it 'assigns variables' do
expect(assigns(:conference)).to eq conference
expect(assigns(:events_xml)).to eq conference.selected_event_schedules.map(&:event)
.group_by{ |event| event.scheduled_start_time.to_date }
end
it 'renders successfully' do
expect(response).to be_success
end
end
end
end