diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index a64832e1..63483066 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -6,7 +6,8 @@ class ProposalsController < ApplicationController load_resource :program, through: :conference, singleton: true load_and_authorize_resource :event, parent: false, through: :program # We authorize manually in these actions - skip_authorize_resource :event, only: [:confirm, :restart, :toogle_favorite, :withdraw] + skip_authorize_resource :event, only: [:confirm, :restart, :withdraw] + def index @event = @program.events.new @@ -85,7 +86,8 @@ class ProposalsController < ApplicationController render action: 'edit' end end - def toogle_favorite + + def toggle_favorite user = User.find(params[:favourite_user_id]) users = @event.favourite_users if users.include? user diff --git a/app/models/ability.rb b/app/models/ability.rb index 913c97ff..5882b273 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -108,6 +108,10 @@ class Ability event.users.include?(user) end + can :toggle_favorite, Event do |event| + event.scheduled? + end + # can manage the commercials of their own events can :manage, Commercial, commercialable_type: 'Event', commercialable_id: user.events.pluck(:id) diff --git a/app/views/schedules/_event.html.haml b/app/views/schedules/_event.html.haml index e5d9a5b0..92f0dd1e 100644 --- a/app/views/schedules/_event.html.haml +++ b/app/views/schedules/_event.html.haml @@ -11,7 +11,7 @@ = link_to('#', onClick: 'starClicked();') do %span#star-events{ class: "fa fa-lg #{ event.favourite_users.exists?(current_user.id) ? 'fa-star' : 'fa-star-o' }", | "aria-hidden" => "true", | - "data-url" => toogle_favorite_conference_program_proposal_path(@conference.short_title, event.id), | + "data-url" => toggle_favorite_conference_program_proposal_path(@conference.short_title, event.id), | "data-user" => current_user.id } %span.h3 = event.title diff --git a/app/views/schedules/_schedule_item.html.haml b/app/views/schedules/_schedule_item.html.haml index b7d01f7a..785bb678 100644 --- a/app/views/schedules/_schedule_item.html.haml +++ b/app/views/schedules/_schedule_item.html.haml @@ -11,7 +11,7 @@ = link_to('#', onClick: 'starClicked();') do %span#star{ class: "fa fa-lg #{ event.favourite_users.exists?(current_user.id) ? 'fa-star' : 'fa-star-o' }", | "aria-hidden" =>"true", | - "data-url" => toogle_favorite_conference_program_proposal_path(@conference.short_title, event.id), | + "data-url" => toggle_favorite_conference_program_proposal_path(@conference.short_title, event.id), | "data-user" => current_user.id } = event.title diff --git a/config/routes.rb b/config/routes.rb index 53171e44..a3b3d4d4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -166,7 +166,7 @@ Osem::Application.routes.draw do patch '/withdraw' => 'proposals#withdraw' patch '/confirm' => 'proposals#confirm' patch '/restart' => 'proposals#restart' - patch :toogle_favorite + patch :toggle_favorite end end resources :tracks, except: :destroy do