mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-18 22:21:11 +00:00
Introduce Program to include cfp/rooms/tracks/events/event_types/difficulty_levels
This commit is contained in:
parent
028b82fda8
commit
444356fbc7
117 changed files with 1812 additions and 905 deletions
58
app/controllers/admin/cfps_controller.rb
Normal file
58
app/controllers/admin/cfps_controller.rb
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
module Admin
|
||||
class CfpsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource through: :program, singleton: true
|
||||
|
||||
def show; end
|
||||
|
||||
def new
|
||||
@cfp = @program.build_cfp
|
||||
end
|
||||
|
||||
def edit; end
|
||||
|
||||
def create
|
||||
@cfp = @program.build_cfp(cfp_params)
|
||||
|
||||
if @cfp.save
|
||||
redirect_to admin_conference_program_cfp_path,
|
||||
notice: 'Call for papers successfully created.'
|
||||
else
|
||||
flash[:error] = "Creating the call for papers failed. #{@cfp.errors.full_messages.join('. ')}."
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@cfp = @program.cfp
|
||||
@cfp.assign_attributes(params[:cfp])
|
||||
|
||||
send_mail_on_cfp_dates_updates = @cfp.notify_on_cfp_date_update?
|
||||
|
||||
if @cfp.update_attributes(params[:cfp])
|
||||
Mailbot.delay.send_on_cfps_dates_updates(@conference) if send_mail_on_cfp_dates_updates
|
||||
redirect_to(admin_conference_program_cfp_path(@conference.short_title),
|
||||
notice: 'Call for papers successfully updated.')
|
||||
else
|
||||
flash[:error] = "Updating call for papers failed. #{@cfp.errors.to_a.join('. ')}."
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @cfp.destroy
|
||||
redirect_to admin_conference_program_cfp_path, notice: 'Call for Papers was successfully deleted.'
|
||||
else
|
||||
redirect_to admin_conference_program_cfp_path, error: 'An error prohibited this Call for Papers from being destroyed: '\
|
||||
"#{@cfp.errors.full_messages.join('. ')}."
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def cfp_params
|
||||
params[:cfp]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -22,7 +22,7 @@ module Admin
|
|||
|
||||
# Grouping all comments by conference, and by event. It returns {:conference => {:event => [{comment_2}, {comment_1 }]}}
|
||||
def grouped_comments(remarks)
|
||||
remarks.group_by{ |comment| comment.commentable.conference }.map {|conference, comments| [conference, comments.group_by{|comment| comment.commentable}]}.to_h
|
||||
remarks.group_by{ |comment| comment.commentable.program.conference }.map {|conference, comments| [conference, comments.group_by{|comment| comment.commentable}]}.to_h
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
module Admin
|
||||
class ConferenceController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_resource :program, through: :conference, singleton: true, except: :index
|
||||
load_resource :user, only: [:remove_user]
|
||||
|
||||
def index
|
||||
|
|
@ -94,14 +95,17 @@ module Admin
|
|||
end
|
||||
|
||||
def show
|
||||
@conference = Conference.find_by(short_title: params[:id])
|
||||
@program = @conference.program
|
||||
unless @conference.program
|
||||
@program = Program.new(conference_id: @conference.id)
|
||||
end
|
||||
|
||||
# Overview and since last login information
|
||||
@total_reg = @conference.registrations.count
|
||||
@new_reg = @conference.registrations.where('created_at > ?', current_user.last_sign_in_at).count
|
||||
|
||||
@total_submissions = @conference.events.count
|
||||
@new_submissions = @conference.events.
|
||||
@total_submissions = @program.events.count
|
||||
@new_submissions = @program.events.
|
||||
where('created_at > ?', current_user.last_sign_in_at).count
|
||||
|
||||
@program_length = @conference.current_program_hours
|
||||
|
|
@ -141,7 +145,7 @@ module Admin
|
|||
@tracks_distribution_confirmed = @conference.tracks_distribution(:confirmed)
|
||||
|
||||
# Recent actions information
|
||||
@recent_events = @conference.events.limit(5).order(created_at: :desc)
|
||||
@recent_events = @conference.program.events.limit(5).order(created_at: :desc)
|
||||
@recent_registrations = @conference.registrations.limit(5).order(created_at: :desc)
|
||||
|
||||
@top_submitter = @conference.get_top_submitter
|
||||
|
|
|
|||
|
|
@ -1,23 +1,24 @@
|
|||
module Admin
|
||||
class DifficultyLevelsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :difficulty_level, through: :conference
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource through: :program
|
||||
|
||||
def index
|
||||
authorize! :index, DifficultyLevel.new(conference_id: @conference.id)
|
||||
# authorize! :index, DifficultyLevel.new(program_id: @program.id)
|
||||
end
|
||||
|
||||
def edit; end
|
||||
|
||||
def new
|
||||
@difficulty_level = @conference.difficulty_levels.new
|
||||
@difficulty_level = @conference.program.difficulty_levels.new
|
||||
end
|
||||
|
||||
def create
|
||||
@difficulty_level = @conference.difficulty_levels.new(difficulty_level_params)
|
||||
@difficulty_level = @conference.program.difficulty_levels.new(difficulty_level_params)
|
||||
if @difficulty_level.save
|
||||
flash[:notice] = 'Difficulty level successfully created.'
|
||||
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Creating difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}."
|
||||
render :new
|
||||
|
|
@ -27,7 +28,7 @@ module Admin
|
|||
def update
|
||||
if @difficulty_level.update_attributes(difficulty_level_params)
|
||||
flash[:notice] = 'Difficulty level successfully updated.'
|
||||
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Update difficulty level failed: #{@difficulty_level.errors.full_messages.join('. ')}."
|
||||
render :edit
|
||||
|
|
@ -37,11 +38,11 @@ module Admin
|
|||
def destroy
|
||||
if @difficulty_level.destroy
|
||||
flash[:notice] = 'Difficulty level successfully deleted.'
|
||||
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = 'Deleting difficulty level type failed! ' \
|
||||
"#{@difficulty_level.errors.full_messages.join('. ')}."
|
||||
redirect_to(admin_conference_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_difficulty_levels_path(conference_id: @conference.short_title))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,22 @@
|
|||
module Admin
|
||||
class EventTypesController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :event_type, through: :conference
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource :event_type, through: :program
|
||||
|
||||
def index
|
||||
authorize! :index, EventType.new(conference_id: @conference.id)
|
||||
end
|
||||
def index; end
|
||||
|
||||
def edit; end
|
||||
|
||||
def new
|
||||
@event_type = @conference.event_types.new
|
||||
@event_type = @conference.program.event_types.new
|
||||
end
|
||||
|
||||
def create
|
||||
@event_type = @conference.event_types.new(event_type_params)
|
||||
@event_type = @conference.program.event_types.new(event_type_params)
|
||||
if @event_type.save
|
||||
flash[:notice] = 'Event type successfully created.'
|
||||
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_event_types_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Creating event type failed: #{@event_type.errors.full_messages.join('. ')}."
|
||||
render :new
|
||||
|
|
@ -27,7 +26,7 @@ module Admin
|
|||
def update
|
||||
if @event_type.update_attributes(event_type_params)
|
||||
flash[:notice] = 'Event type successfully updated.'
|
||||
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_event_types_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Update event type failed: #{@event_type.errors.full_messages.join('. ')}."
|
||||
render :edit
|
||||
|
|
@ -37,11 +36,11 @@ module Admin
|
|||
def destroy
|
||||
if @event_type.destroy
|
||||
flash[:notice] = 'Event type successfully deleted.'
|
||||
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_event_types_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = 'Destroying event type failed! ' \
|
||||
"#{@event_type.errors.full_messages.join('. ')}."
|
||||
redirect_to(admin_conference_event_types_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_event_types_path(conference_id: @conference.short_title))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
module Admin
|
||||
class EventsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :event, through: :conference
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource :event, through: :program
|
||||
|
||||
before_action :get_event, except: [:index, :create]
|
||||
|
||||
|
|
@ -14,13 +15,11 @@ module Admin
|
|||
end
|
||||
|
||||
def index
|
||||
authorize! :index, @conference.events.build
|
||||
@conference = Conference.find_by(short_title: params[:conference_id])
|
||||
@events = @conference.events
|
||||
@tracks = @conference.tracks
|
||||
@difficulty_levels = @conference.difficulty_levels
|
||||
@events = @program.events
|
||||
@tracks = @program.tracks
|
||||
@difficulty_levels = @program.difficulty_levels
|
||||
@machine_states = @events.state_machine.states.map
|
||||
@event_types = @conference.event_types
|
||||
@event_types = @program.event_types
|
||||
|
||||
@mystates = []
|
||||
@mytypes = []
|
||||
|
|
@ -72,26 +71,26 @@ module Admin
|
|||
respond_to do |format|
|
||||
format.html
|
||||
# Explicity call #to_json to avoid the use of EventSerializer
|
||||
format.json { render json: Event.where(state: :confirmed, conference: @conference).to_json }
|
||||
format.json { render json: Event.where(state: :confirmed, program: @program).to_json }
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@tracks = @conference.tracks
|
||||
@event_types = @conference.event_types
|
||||
@tracks = @program.tracks
|
||||
@event_types = @program.event_types
|
||||
@comments = @event.root_comments
|
||||
@comment_count = @event.comment_threads.count
|
||||
@ratings = @event.votes.includes(:user)
|
||||
@difficulty_levels = @conference.difficulty_levels
|
||||
@difficulty_levels = @program.difficulty_levels
|
||||
end
|
||||
|
||||
def edit
|
||||
@event_types = @conference.event_types
|
||||
@event_types = @program.event_types
|
||||
@tracks = Track.all
|
||||
@comments = @event.root_comments
|
||||
@comment_count = @event.comment_threads.count
|
||||
@user = @event.submitter
|
||||
@url = admin_conference_event_path(@conference.short_title, @event)
|
||||
@url = admin_conference_program_event_path(@conference.short_title, @event)
|
||||
end
|
||||
|
||||
def comment
|
||||
|
|
@ -101,7 +100,7 @@ module Admin
|
|||
comment.move_to_child_of(params[:parent])
|
||||
end
|
||||
|
||||
redirect_to admin_conference_event_path(conference_id: @conference.short_title)
|
||||
redirect_to admin_conference_program_event_path(@conference.short_title, @event)
|
||||
end
|
||||
|
||||
def update
|
||||
|
|
@ -111,10 +110,10 @@ module Admin
|
|||
render js: 'index'
|
||||
else
|
||||
flash[:notice] = "Successfully updated event with ID #{@event.id}."
|
||||
redirect_back_or_to(admin_conference_event_path(@conference.short_title, @event))
|
||||
redirect_back_or_to(admin_conference_program_event_path(@conference.short_title, @event))
|
||||
end
|
||||
else
|
||||
@url = admin_conference_event_path(@conference.short_title, @event)
|
||||
@url = admin_conference_program_event_path(@conference.short_title, @event)
|
||||
flash[:notice] = 'Update not successful. ' + @event.errors.full_messages.to_sentence
|
||||
render :edit
|
||||
end
|
||||
|
|
@ -123,8 +122,8 @@ module Admin
|
|||
def create; end
|
||||
|
||||
def accept
|
||||
send_mail = @event.conference.email_settings.send_on_accepted
|
||||
subject = @event.conference.email_settings.accepted_subject.blank?
|
||||
send_mail = @event.program.conference.email_settings.send_on_accepted
|
||||
subject = @event.program.conference.email_settings.accepted_subject.blank?
|
||||
update_state(:accept, 'Event accepted!', true, subject, send_mail)
|
||||
end
|
||||
|
||||
|
|
@ -137,8 +136,8 @@ module Admin
|
|||
end
|
||||
|
||||
def reject
|
||||
send_mail = @event.conference.email_settings.send_on_rejected
|
||||
subject = @event.conference.email_settings.rejected_subject.blank?
|
||||
send_mail = @event.program.conference.email_settings.send_on_rejected
|
||||
subject = @event.program.conference.email_settings.rejected_subject.blank?
|
||||
update_state(:reject, 'Event rejected!', true, subject, send_mail)
|
||||
end
|
||||
|
||||
|
|
@ -159,7 +158,7 @@ module Admin
|
|||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to admin_conference_event_path(@conference.short_title, @event) }
|
||||
format.html { redirect_to admin_conference_program_event_path(@conference.short_title, @event) }
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
|
@ -181,9 +180,9 @@ module Admin
|
|||
end
|
||||
|
||||
def get_event
|
||||
@event = @conference.events.find_by_id(params[:id])
|
||||
@event = @conference.program.events.find(params[:id])
|
||||
if !@event
|
||||
redirect_to(admin_conference_events_path(conference_id: @conference.short_title),
|
||||
redirect_to(admin_conference_program_events_path(conference_id: @conference.short_title),
|
||||
alert: 'Error! Could not find event!') && return
|
||||
end
|
||||
@event
|
||||
|
|
@ -194,10 +193,10 @@ module Admin
|
|||
|
||||
if alert.blank?
|
||||
flash[:notice] = notice
|
||||
redirect_back_or_to(admin_conference_events_path(conference_id: @conference.short_title)) && return
|
||||
redirect_back_or_to(admin_conference_program_events_path(conference_id: @conference.short_title)) && return
|
||||
else
|
||||
flash[:error] = alert
|
||||
return redirect_back_or_to(admin_conference_events_path(conference_id: @conference.short_title)) && return
|
||||
return redirect_back_or_to(admin_conference_program_events_path(conference_id: @conference.short_title)) && return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
32
app/controllers/admin/programs_controller.rb
Normal file
32
app/controllers/admin/programs_controller.rb
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
module Admin
|
||||
class ProgramsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource through: :conference, singleton: true
|
||||
|
||||
def show; end
|
||||
|
||||
def edit; end
|
||||
|
||||
def update
|
||||
authorize! :update, @conference.program
|
||||
@program = @conference.program
|
||||
@program.assign_attributes(params[:program])
|
||||
# send_mail_on_schedule_public = @program.notify_on_schedule_public?
|
||||
|
||||
if @program.update_attributes(params[:program])
|
||||
# Mailbot.delay.send_on_schedule_public(@conference) if send_mail_on_schedule_public
|
||||
redirect_to(admin_conference_program_path(@conference.short_title),
|
||||
notice: 'The program was successfully updated.')
|
||||
else
|
||||
flash[:error] = "Updating program failed. #{@program.errors.to_a.join('. ')}."
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def program_params
|
||||
params[:program]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,23 +1,22 @@
|
|||
module Admin
|
||||
class RoomsController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource through: :conference
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource through: :program
|
||||
|
||||
def index
|
||||
authorize! :index, Room.new(conference_id: @conference.id)
|
||||
end
|
||||
def index; end
|
||||
|
||||
def edit; end
|
||||
|
||||
def new
|
||||
@room = @conference.rooms.new
|
||||
@room = @program.rooms.new
|
||||
end
|
||||
|
||||
def create
|
||||
@room = @conference.rooms.new(room_params)
|
||||
@room = @program.rooms.new(room_params)
|
||||
if @room.save
|
||||
flash[:notice] = 'Room successfully created.'
|
||||
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_rooms_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Creating Room failed: #{@room.errors.full_messages.join('. ')}."
|
||||
render :new
|
||||
|
|
@ -27,7 +26,7 @@ module Admin
|
|||
def update
|
||||
if @room.update_attributes(room_params)
|
||||
flash[:notice] = 'Room successfully updated.'
|
||||
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_rooms_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Update Room failed: #{@room.errors.full_messages.join('. ')}."
|
||||
render :edit
|
||||
|
|
@ -37,10 +36,10 @@ module Admin
|
|||
def destroy
|
||||
if @room.destroy
|
||||
flash[:notice] = 'Room successfully deleted.'
|
||||
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_rooms_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Destroying room failed! #{@room.errors.full_messages.join('. ')}."
|
||||
redirect_to(admin_conference_rooms_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_rooms_path(conference_id: @conference.short_title))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -3,23 +3,24 @@ module Admin
|
|||
# By authorizing 'conference' resource, we can ensure there will be no unauthorized access to
|
||||
# the schedule of a conference, which should not be accessed in the first place
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
|
||||
skip_before_filter :verify_authenticity_token, only: [:update]
|
||||
layout 'schedule'
|
||||
|
||||
def show
|
||||
authorize! :update, @conference.events.new
|
||||
authorize! :update, @program.events.new
|
||||
if @conference.nil?
|
||||
redirect_to admin_conference_index_path
|
||||
return
|
||||
end
|
||||
@dates = @conference.start_date..@conference.end_date
|
||||
@rooms = @conference.rooms
|
||||
@rooms = @program.rooms
|
||||
end
|
||||
|
||||
def update
|
||||
authorize! :update, @conference.events.new
|
||||
event = Event.where(guid: event_params).first
|
||||
authorize! :update, @program.events.new
|
||||
event = Event.where(guid: params[:event]).first
|
||||
error_message = nil
|
||||
if event.nil?
|
||||
error_message = "Could not find event GUID: #{params[:event]}"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
module Admin
|
||||
class TracksController < Admin::BaseController
|
||||
load_and_authorize_resource :conference, find_by: :short_title
|
||||
load_and_authorize_resource :track, through: :conference
|
||||
load_and_authorize_resource :program, through: :conference, singleton: true
|
||||
load_and_authorize_resource through: :program
|
||||
|
||||
def index; end
|
||||
|
||||
|
|
@ -13,14 +14,14 @@ module Admin
|
|||
end
|
||||
|
||||
def new
|
||||
@track = @conference.tracks.new
|
||||
@track = @program.tracks.new
|
||||
end
|
||||
|
||||
def create
|
||||
@track = @conference.tracks.new(track_params)
|
||||
@track = @program.tracks.new(track_params)
|
||||
if @track.save
|
||||
flash[:notice] = 'Track successfully created.'
|
||||
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_tracks_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Creating Track failed: #{@track.errors.full_messages.join('. ')}."
|
||||
render :new
|
||||
|
|
@ -32,7 +33,7 @@ module Admin
|
|||
def update
|
||||
if @track.update_attributes(track_params)
|
||||
flash[:notice] = 'Track successfully updated.'
|
||||
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_tracks_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Track update failed: #{@track.errors.full_messages.join('. ')}."
|
||||
render :edit
|
||||
|
|
@ -42,10 +43,10 @@ module Admin
|
|||
def destroy
|
||||
if @track.destroy
|
||||
flash[:notice] = 'Track successfully deleted.'
|
||||
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_tracks_path(conference_id: @conference.short_title))
|
||||
else
|
||||
flash[:error] = "Track couldn't be deleted. #{@track.errors.full_messages.join('. ')}."
|
||||
redirect_to(admin_conference_tracks_path(conference_id: @conference.short_title))
|
||||
redirect_to(admin_conference_program_tracks_path(conference_id: @conference.short_title))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue