Allow submission of proposal only if program has cfp
This commit is contained in:
parent
9e67a1bcd5
commit
3e32c58460
5 changed files with 32 additions and 11 deletions
|
|
@ -2,9 +2,11 @@ class ProposalController < ApplicationController
|
|||
before_filter :authenticate_user!, except: [:show, :new, :create]
|
||||
load_resource :conference, find_by: :short_title
|
||||
load_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource :event, parent: false, through: :program
|
||||
load_and_authorize_resource :event, parent: false, through: :program, except: [:new, :create]
|
||||
|
||||
def index
|
||||
@event = @program.events.new
|
||||
@event.event_users.new(user: current_user, event_role: 'submitter')
|
||||
@events = current_user.proposals(@conference)
|
||||
end
|
||||
|
||||
|
|
@ -14,6 +16,9 @@ class ProposalController < ApplicationController
|
|||
end
|
||||
|
||||
def new
|
||||
@event = @program.events.new
|
||||
@event.event_users.new(user: current_user, event_role: 'submitter') if current_user
|
||||
authorize! :new, @event
|
||||
@user = User.new
|
||||
@url = conference_program_proposal_index_path(@conference.short_title)
|
||||
end
|
||||
|
|
@ -46,6 +51,7 @@ class ProposalController < ApplicationController
|
|||
event_role: 'submitter')
|
||||
@event.event_users.new(user: current_user,
|
||||
event_role: 'speaker')
|
||||
authorize! :new, @event
|
||||
|
||||
unless @event.save
|
||||
flash[:error] = "Could not submit proposal: #{@event.errors.full_messages.join(', ')}"
|
||||
|
|
|
|||
|
|
@ -76,8 +76,12 @@ class Ability
|
|||
can :manage, Event do |event|
|
||||
event.users.include?(user)
|
||||
end
|
||||
# can create an event until the last day of a conference
|
||||
can :create, Event, program_id: Conference.where('end_date >= ?', Date.today).map { |conference| conference.program.id}.compact
|
||||
|
||||
# cannot create an event if program does not have open cfp
|
||||
cannot [:new, :create], Event do |event|
|
||||
user_inclusion = event.event_users.map { |event_user| event_user.user.id }.compact.include? user.id
|
||||
!event.program.cfp_open? || !event.new_record? || !user_inclusion
|
||||
end
|
||||
|
||||
# can manage the commercials of their own events
|
||||
can :manage, Commercial, commercialable_type: 'Event', commercialable_id: user.events.pluck(:id)
|
||||
|
|
|
|||
|
|
@ -98,5 +98,5 @@
|
|||
class: 'btn btn-default', id: "edit_proposal_#{event.id}"
|
||||
.row
|
||||
.col-md-12
|
||||
- if can? :create, @program.events.new
|
||||
- if can? :create, @event
|
||||
= link_to "New Proposal", new_conference_program_proposal_path(@conference.short_title), :class => "btn btn-success pull-right"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue